- 2010-07-22 (Thu) 10:39
- プログラミング ( sed/wake/awk )
wake がバージョンアップしてアクション部分でのエスケープが許可された.これは空白とか改行と入れるのに有効かなと.
ということで,ゴルフしたコードを書き換えた.ついでに,PCRE(ないしperl)の正規表現で^と$が文字列中のnewlineにどこでもマッチできることに気がついたので,それ関連で\nを置換しまくる.
char pyramid.前のは無駄ばかりだったけどだいぶすっきりした感じ.
:$< ([^ ]+)([^ ].*):$1\ $2 ( *)\S(.*):$1$2\ "$&\n" +:
swap lines.アクションのエスケープと正規表現の^とで縮めた結果,murky-satyrさんに追いついた.
-:$<\n (.+?)(^.+?\n)(.*):"$2$1"$3
追いつく前のは\nを付けるの面倒だなぁとかやってごちゃごちゃと:
-:$< (.*?\n)(.*?)(\n|\Z)(.*):"$2\n$1"$4
あとはもう少し複雑そうなのをということで Half Sierpinski をば.なんとなく同じパターンがたくさん現れるので(下のl関数とu関数)… そろそろ foldr とか map とかの高階関数が欲しくなってくるかなぁと思いつつ,実現すんのは(要素への区切り方というかリストの表現とかが結局)面倒だなぁとか思ってみたり.
-:$(x) x:"#~" c(.*?) *~(.*):"$1\n"c$2 .* {16}.:c$& u(.*?)~(.*):"$1$(U$1)~"u$2 l(.*?)~(.*):"$1$1~"l$2 U.(.*):" "U$1 [A-z]*: .+:$(l$&)$(u$&)
- Newer: AWK - はじめ