No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 969 | 970 | 971 |...| 1338 | 1339 | 1340 || Next»

カーブと急制動

今日も物凄く暑かったけれど,1時間目は幸いにしてシミュレータ.街中走行で昼と夜と.教官との雑談により,第二段階からはMTとATの人を混ぜてシミュレータ教習していいと法で定められていると知る.実際,今日はATの人もいたので途中でガシャコンとシートを取り外してMT⇔ATの換装を目の前で見れた.無駄がなくていいねぇ.でもソフト面ではそのOSのサポート期限っていつ迄でしたっけとか聞いてみたかったな…

んで,2時間目は実車に乗ってカーブと急制動.カーブは時速30kmとかで曲がるのと,障害物を避けるのと,指定されたところで曲がっている途中で止まるのと.ぶっちゃけ最後のカーブ中に停車とかマジきつかった,不安定.障害物避けは,障害物がど真ん中に落ちていたのでカーブの内側に避けた.多くの人が外側に避けるらしいけどそんなもんなのだろうか? そして時速30kmでカーブは車体寝かせりゃ余裕なので問題なし.カーブ出口で時速40kmまで加速していたのは内緒.話によると,車体倒せなくて膨らんで外のパイロンへ激突という人がいるらしい.車体倒しすぎて滑ってく人はいたのだろうか? 急制動は第一段階から余裕だったので問題なし.心配があるとすれば雨降ったときにどうなるか分からないところ.

おまけで一本橋やってた感想:腕の力を抜く&ニーグリップ&姿勢を正す&半クラ&後ろブレーキ,という指示通りの状態をかけ合わせると時間が倍でもオッケーなくらい安定.腕の力抜くってのが意外と効く気がした.

そして次回は青4で何かを体験(多分指示に従って左右中央に移動して止めるヤツかね)らしい.

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

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

«Prev || 1 | 2 | 3 |...| 969 | 970 | 971 |...| 1338 | 1339 | 1340 || Next»
Search
Feeds

Page Top