2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

文字を打ち込んでWhitespaceのコードに変換する

Last updated at Posted at 2016-12-06

#文字を打ち込んでWhitespaceのコードに変換する

Whitespaceをいじくって遊んでいた時、コードを書くのがあまりにも面倒なので少しでもどうにかならないものか...と思って作ったメモ。

##Whitespaceとは何ぞや。
Wikipedia
リファレンス(英語)

Whitespaceとは、その名が示す通り「空白」のプログラミング言語です。

使って良い文字は「半角スペース」「タブ」「改行」の3文字のみ。文字と言っても普段は文字数に数えないようなものばかりですね。
製作意図が、「そんな空白に対する差別を是正する」ためだったとかなんとか。
ちなみに上記3文字(?)以外は全てコメントとして無視されます。

他の文字が無視されるということは、Whitespaceとその他の言語を同じソースコード内で共存させることが可能な訳ですね。
HTMLあたりとは特に混ぜやすそう。

この方面で、コードにWhitespaceで書いた暗号を挿入するツールがあったら面白いかな…作ろうかな…

##使い方

  • スペース => S
  • タブ => T
  • 改行 => N

で書いたコードを正規表現で変換するってだけ。
上記以外の文字(改行含む)は無視されます。

変換したいファイル名を引数に入れて実行→ファイル名.wsとして出力
$ruby WsConv.rb file.txt
>Complete! => file.ws

WsConb.rb
class WsConv
	def initialize(filename)
		@data = IO.read(filename)
		@data.gsub(/[^SNT]+/, '').tr("SNT", " \t\n")
		outputFile = filename.sub(/\..\Z/, '') + '.ws'
		IO.write(outputFile,@data)
		puts "Complete! => #{outputFile}"
	end

wsc = WsConv.new(ARGV[0])

##例

これが変換前

HW.ws
SSSTSSTSSSN
TNSS
SSSTTSSTSTN
TNSS
SSSTTSTTSSN
TNSS
SSSTTSTTSSN
TNSS
SSSTTSTTTTN
TNSS
SSSTSSSSSN
TNSS
SSSTSTSTTTN
TNSS
SSSTTSTTTTN
TNSS
SSSTTTSSTSN
TNSS
SSSTTSTTSSN
TNSS
SSSTTSSTSSN
TNSS
SSSSSSTSTSN
TNSS
NNN

これが変換後

HW.ws
   	  	   
	
     		  	 	
	
     		 		  
	
     		 		  
	
     		 				
	
     	     
	
     	 	 			
	
     		 				
	
     			  	 
	
     		 		  
	
     		  	  
	
        	 	 
	
  



(アカン、わかんねぇなこれじゃ...)

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?