sedで引き算 (超簡略版)
Published in
2 min readJun 4, 2018
先にこんなものを書いていました:
今回は引き算です。コードは次のとおりで、名前は minus.sed
とします。
# -*- coding:utf-8 -*-
p
s/1/I/g
s/2/II/g
s/3/III/g
s/4/IIII/g
s/5/IIIII/g
s/6/IIIIII/g
s/7/IIIIIII/g
s/8/IIIIIIII/g
s/9/IIIIIIIII/g
s/ +\- +/ /g
:loop
p
s/I I/ /
tloop
s/^ $/0/
s/^ /-/
s/^(.)/=\1/
食わせるデータはとりあえず次のような感じで。名前は minus.dat
とします:
4 - 1
3 - 3
2 - 3
というわけで実行してみると、こういう結果になります:
$ sed -rf minus.sed minus.dat
4 - 1
IIII I
III
=III
3 - 3
III III
II II
I I
=0
2 - 3
II III
I II
I
=-I
ここで、 4 — 1
の結果は III
となり、 3 — 3
の結果は 0
となり、 2 — 1
の結果は — I
となっています。
3 — 3
の場合空行があるように見えますが、そこにはスペースがあります。上のコードの結果 3 — 3
のようなばあい、スペースの両側にはなにも残りません。そのことを利用して、その場合は o
であると書き換えています。
2 — 3
の場合、 I
の並びの前にスペースが残ります。それを利用して、そのスペースを —
に置き換えています。
追記 (重要) Apr 16, 2019:
このstoryはあくまでパズルです。
この辺りからチューリング・マシンに話を繋げていきたいとは考えていますが、構想の段階です。