2010年07月20日
wake で遊ぶ
- 2010-07-20 (Tue)
- プログラミング ( sed/wake/awk )
shinhさんの作った言語 wake がゴルフ場に入ったので遊んでみたのだけど… まだ言語の癖が分かっておらずプログラム書くのが難しい.
とりあえず最初の方の問題の permutator を sed のプログラムから移植してみた.
元のsedプログラムはこんな感じ:
s/.*/:&%/ : s/\(.*\)\(:.*\)\(.\)%\(.*\)/\1\2%\3\4\n\1\3\2\4%/gm s/\(.*\):%$\|.*:%.\+\n/\1/gm t
で,移植したwake のプログラムはこんな感じ:
:!$<% (.*)(!.*)(.)%(.*):$1$2%$3$4 $1$3$2$4% .*!%.+: (.*)!%:"$1\n"
元のプログラムが s コマンドしか使っておらず,かつ,置換ができなくなるまで繰り返すだけなので,wake プログラムもほとんど同じ構造.s コマンドを明記しない分とエスケープが多く無いことなどによりコードサイズも縮んだ.
sed だとレコードの切れ目を改行で表現して m オプションで一気に処理するけれど,wake だと右辺のスペースでレコードぶった切って処理してあげる形になるのね.これに気づかず右辺に空白入れないとこうなる:
:!$<%~ ([^~]*)(![^~]*)([^~])%([^~]*)(.*):$1$2%$3$4~$1$3$2$4%$5 [^~]*!%[^~]+~(.*):$1 ([^~]*)!%~(.*):"$1\n"$2
全部に付いている (.*) が明らかに無駄.ここは別処理なのでスペースで切っておくべし.
嵌りどころ:空文字列をマッチしたグループを右辺にそのまま使用する場合,最初のルールに":$<"とか書いておくと無限ループする.
さて,次は何をやろうかね.
- Comments: 0
- TrackBack (Close): -
今日は1時間のみ
- 2010-07-20 (Tue)
- 一般
激烈に暑かった&人数多すぎたここ数回に比べて,今日は涼しげだったし人数少なくて良かった.でも今日は1時間しか予約取れなかったので(次のシミュレータの予約の関係で)1時間しか乗らなかった.
で,青2ゼッケンでBコースをぐるぐる.終わり際にAコースに切替指示→コース間違う.そして,見通しの悪い交差点はあからさまなぐらいに注意して(左右確認して)よろしいと.最近は確認が甘くなっていたので叱られた.残り4時間はあからさまに注意する方向で頑張る.あとは,微妙な速度調整に前ブレーキをちょんっとかける癖があるのだけど,それを後ろブレーキでやればもっと安定して減速できるよと指摘を受けた.まあ,気をつけられたら気をつけたい.
そして気になってたクランクの不安定さだけど,視線を遠くの行き先に置くようにしつつ速度を上げたら安定した.
次はシミュレータで何かやって,それから青3へ.
- Comments: 0
- TrackBack (Close): -
NEX用のキャリングケースが届く
2週間前に注文しておいた SONY "α"NEX用キャリングケース SNAP の Type-A が届いた.ハンドメイドなので2週間かかるのはしょうがない.なんとなく便利そうだったのでオプションのベルトループ取り付けで注文した(SNAPじゃない方はこのオプションが無い).
ちょうどぴったりサイズで良い感じ.大体満足.ストラップが微妙に邪魔だなぁと思わなくない.
- Comments: 0
- TrackBack (Close): -