No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 990 | 991 | 992 |...| 1359 | 1360 | 1361 || Next»

wake で(ry

eval を使うようにしてみた.

char pyramid.eval 使って空白入れられるのね.

:$<
~:" "
([^ ]+)([^ ].*):$1$(~)$2
(.*)%:"$1\n"
( *)[^ ](.*):$1$2$(~) $&%
 +:

palindromize.eval を使うと評価位置を限定できるのでプログラムがすっきりする.

-:$<
(.*)#.?\1(.*):"$2"
(.)(.*#)(.*):$2$1$3
:
([^\n]+)(\n(.*))?:"$1$($1#)\n"$3

とりあえず,空白入れたり評価位置を特定するのにevalを使うということは理解した.

wake で遊び続けている

なんか大昔に Makefile だけで n回Hello, world! をやった時を思い出すなぁ(make から呼べるコマンドは echo と make のみという縛りで,コマンドライン引数に n が指定される).

char pyramid.右辺で空白入りのトークンをどうやって作ればいいかわからず,とりあえずチルダをセパレータにしておいて最後に空白化している.無駄だ…

-:$<
([^~]+)([^~].*):$1~$2
(~*)[^~%]([^%]*):$1$2~ $&%
~+:
~(.*%):" "$1
(.)(.*%):"$1"$2
%:"\n"

Permutations.昨日のと同じ.これも最後の空白挿入の操作がお馬鹿なのでどうにかしたい.

:!012345%
(.*)(!.*)(.)%(.*):$1$2%$3$4 $1$3$2$4%
.*!%.+:
(.)(.+!%):"$1 "$2
(.)!%:"$1\n"

palindromize.sed バージョンの移植.正規表現にターゲット全体をマッチさせるというのに慣れない.s コマンドののりで一部にマッチするパタンを書いてしまう.一度別のターゲットに分解してしまうと他のターゲットの情報を使えないので(evalを使えば結合できるから問題ない気がする),自分のプログラムだと全体をひとつのターゲットとして保持したまま一部を書き換えるということが多い.そこで前後の文脈部分のマッチを忘れて動かないとか叫ぶことしばしば.うーむ.eval の使い方を考えるか.

-:$<
([^\n%]+)(\n(.*))?:$1%$1# $3
(.*)%(.*)#.?\2(.*):"$1$3\n"
(.*)%(.)(.*#)(.*):$1%$3$2$4

意外と仕様に合わせた出力のフォーマッティングが面倒な気がする.何かが分かっていないだけかもしれなけれど.

そして,さっき気づいたけど wake って googlability 低い名前だなぁ…

TODO: eval を使ったプログラミング作法を考える.

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じゃない方はこのオプションが無い).

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

とりあえず第二段階へ

今日のゼッケンはみきわめの赤5と第二段階初回の青1.

で,第一段階のみきわめ.コースを何週かして,そのうち課題コースに移って何週かして終了.ポイントポイントに教官がいてて確認をしていたらしい.とりあえずスラロームはアクセルの開きを大きく時間を短くすると上手くいく.クランクは目線に気をつければ問題ない.左に曲がるときに先の方を見ておけばコケはしない.速度遅すぎるよと何度か言われた気がするけれど…

二時間目は長めのコースを回りつつウィンカーのを正しく使いましょうとか正しく停止しましょうとか.ぶっちゃけ一度コース間違えた気がする(ショートカットした).注意されなかったのでよしとしよう.

次は青2らしい.

車体メモ:12号車は吹けが悪いかつ後輪ブレーキ鳴きまくり.26号車はピーキーなのが治ってて普通だった.

«Prev || 1 | 2 | 3 |...| 990 | 991 | 992 |...| 1359 | 1360 | 1361 || Next»
Search
Feeds

Page Top