【Whitespace】難解プログラミング言語舐めてた
Whitespaceってやつを弄ってみた。
Whitespaceって?
俗に言う難解プログラミング言語の一つです。
スペース、タブ、改行のみでコードを記述します。
ある程度の命令は実装されているので、Javaなんかの条件分岐や反復のような使い勝手こそないものの、同じようなことはできそうです。
触っていてアセンブリ言語を思い出しました。
そんな感じです。
素数でも見つけるか
まあでも、結局はスペース、タブ、改行の組み合わせを置き換えてるだけだし、読むのは辛いけど、書くのはいけるでしょ!
素数でも見つけるか!
(小一時間後)
難解プログラミング言語舐めてたわ。
言語仕様を把握しきれてないからちょいちょいエラー出るし、そもそもエラーの出た箇所がどこか分からない。
そうです。
見えないんですよ。
下記のURLで松本さんが書いてるように、SとTで書けたらいいのに。。。(Whitespaceじゃなくなるけど)
SとTで書くか。。。
というわけでSとTをスペースとタブに置き換えるプログラムを書くことにします。
replacer.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys argv = sys.argv # コマンドライン引数の取得 if len(argv) < 3: print('Give input file name and output file name.') sys.exit() in_file = open(argv[1], 'r') out_file = open(argv[2], 'w') for i in in_file: replaced_s = i.replace('S', ' ') replaced_st = replaced_s.replace('T', '\t') out_file.write(replaced_st) in_file.close() out_file.close()
書けた。
動作確認
松本さんがSとTで書いたHello Worldを丁重にコピペして hello.txt として保存し実行。
$ python replacer.py hello.txt hello.ws
きたァァァ!!!
hello.ws
.ws ファイル実行
$ ruby whitespace.rb hello.ws
結果
Hello World INTERPRETER: interpretation ended.
できた。
これで勝つる。
置換?可視化?
SとTで書いて置換するのではなく、スペースとタブを可視化した方が早いと思いますが、スペースとタブを可視化できるようなエディタは、改行する際、勝手にインデントを付けてきてWhitespaceには不向きだと思いました。
そういうエディタはオートインデントを無効にすることもできると思いますが、それを言語別設定で書くのも面倒だったので。。。