Home > Archives > 2010年07月20日

2010年07月20日

wake で遊ぶ

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

全部に付いている (.*) が明らかに無駄.ここは別処理なのでスペースで切っておくべし.

嵌りどころ:空文字列をマッチしたグループを右辺にそのまま使用する場合,最初のルールに":$<"とか書いておくと無限ループする.

さて,次は何をやろうかね.

今日は1時間のみ

激烈に暑かった&人数多すぎたここ数回に比べて,今日は涼しげだったし人数少なくて良かった.でも今日は1時間しか予約取れなかったので(次のシミュレータの予約の関係で)1時間しか乗らなかった.

で,青2ゼッケンでBコースをぐるぐる.終わり際にAコースに切替指示→コース間違う.そして,見通しの悪い交差点はあからさまなぐらいに注意して(左右確認して)よろしいと.最近は確認が甘くなっていたので叱られた.残り4時間はあからさまに注意する方向で頑張る.あとは,微妙な速度調整に前ブレーキをちょんっとかける癖があるのだけど,それを後ろブレーキでやればもっと安定して減速できるよと指摘を受けた.まあ,気をつけられたら気をつけたい.

そして気になってたクランクの不安定さだけど,視線を遠くの行き先に置くようにしつつ速度を上げたら安定した.

次はシミュレータで何かやって,それから青3へ.

NEX用のキャリングケースが届く

2週間前に注文しておいた SONY "α"NEX用キャリングケース SNAP の Type-A が届いた.ハンドメイドなので2週間かかるのはしょうがない.なんとなく便利そうだったのでオプションのベルトループ取り付けで注文した(SNAPじゃない方はこのオプションが無い).

ちょうどぴったりサイズで良い感じ.大体満足.ストラップが微妙に邪魔だなぁと思わなくない.

Home > Archives > 2010年07月20日

Search
Feeds

Page Top