読者です 読者をやめる 読者になる 読者になる

ズンドコしたい

sh

ストリーム上の 0 と 1 の並びを sed に取り込んで、00001 かどうかを DFA っぽく検査する。

$ cat /dev/urandom \
 | LANG=C tr -dc "01" \
 | fold -w1 \
 | (sed -nf dfa.sed; echo 2) \
 | perl -ple 'BEGIN { @table = qw/ズン ドコ キ・ヨ・シ!/; } s/(.)/$table[$1]/e;' \
 | paste -sd' ' - \
 | tr -d ' '
ズンズンドコドコズンドコズンドコドコドコドコズンズンズンズンドコキ・ヨ・シ!

肝心の dfa.sed は下記の通り。 t コマンドで分岐させるために無理やり置換コマンドを実行している。

#!/usr/bin/env sed

{
:s1
          s/0/0/
          t s2
          b restart
:s2
          p
          n
          s/0/0/
          t s3
          b restart
:s3
          p
          n
          s/0/0/
          t s4
          b restart
:s4
          p
          n
          s/0/0/
          t s5
          b restart
:s5
          p
          n
          s/1/1/
          t quit
          b s5
:quit
          p
          q
:restart
          p
          n
          b s1
}