2018年 03月 08日
砂場遊び(1行FizzBuzz)
bugmacotoとも言うべきお間抜けコードを前投稿(more欄)で晒した。Windows実機でちゃんと動くコードに直したので再掲する。 まずは、最短(なんちゃってなので105までカウントアップが突っ走り)なBizzBuzz方言版 cmd/q/v:on/c "for /L %a in (0,1,6) do for %A in (1 2 i 4 u i 7 8 i u B i D E izzBu) do if %A gtr f (echo.B%Azz) else set/a $=15*%a+0x%A&echo."142 ↑ byte
次に16進アイデアを温存したままで、方言ではないFizzBuzzへの対応版 cmd/q/v:on/c "for /L %a in (0,1,6) do for %A in (1 2 Fi 4 Bu Fi 7 8 Fi Bu "b" Fi "d" "e" FizzBu) do if %A gtr "f" (echo.%Azz) else set/a $=15*%a+0x%A&echo."156 ↑ byte
(同じ文字なら大文字が大きいが、大文字の A は小文字の b より小さいという定義 ) 文字比較式があんまりなので、16進数のアイデアを放棄したらむしろ短くなった。 cmd/q/v:on/c "for /L %a in (0,1,6) do for %A in (1 2 Fi 4 Bu Fi 7 8 Fi Bu 11 Fi 13 14 FizzBu) do if %A gtr a (echo.%Azz) else set/a $=15*%a+%A&echo."149 ↑ byte
FizzBuzz問題は、1から100 という条件なので、それに対応する IF文を加える。 cmd/q/v:on/c"for /L %a in (0,1,6) do for %A in (1 2 Fi 4 Bu Fi 7 8 Fi Bu 11 Fi 13 14 FizzBu) do if %a11==6%A (exit) else if %A gtr a (echo.%Azz) else set/a $=15*%a+%A&echo."173 ↑ byte
(改行するまでは、展開=反映されない変数として普通の環境同様に扱われる) 「%a%A」という4文字を 611 と比較する式に解釈される。 そこで、たすき掛けにしてやるとまともに動いた。 (more欄のスクリーンショットは撤廃)→ 反復実行の前後時間から平均所要時間を算定の 1行ベンチマークテスト については次の投稿で。
by bucmacoto
| 2018-03-08 21:13
| &Tips;&code;
|
Comments(0)
|
おきにいりすと
closing / sleeping
イラスト
わるとも
Photo plus α
からだ と こころ
archive in this blog
統計資料・PC史資料など
勝手に応援
machine translation
以前の記事 カテゴリ
タグ
日記録(345)
市内風景(296) 小さな説(255) 写真と画像(217) 詩もどき(180) 回顧(109) おふざけ(94) science(79) 備忘Log(65) &Tips;&code;(62) おはなし(61) 夢想(57) 冬雪景(48) nursery(36) (?_?)(30) star&moon(29) my function & character(29) aha♪ / esprit(28) work_list(22) 食記録(18) 若者への手紙(17) present(13) 一画一句(11) 文・人・理(9) 春花草木(8) 記事ランキング
最新のトラックバック
検索
その他のジャンル
ファン
|
ファン申請 |
||