良いことばかりな気がするが、ストレスたまりすぎおかしくなったサラリーマンが24時間無差別に車を殴り続けるといった事案も出てくることだろう。」うんうん、こういう演繹は必要だよね。と、ここから雲行きがあやしいぞ。「
この満員電車は、死人を詰め込み墓へと運ぶ乗り物に似ている。俺は死体になってしまったッ!! 俺は絶対に満員電車を許さないッ!! というわけでイカれたサラリーマンの自宅の地下には大洞窟があり、そこを秘密基地リーマンケイブとしている。乗り物が通ると自宅の屋上に設置されたサーチライトが輝き、おかしくなったサラリー野郎が殴りに行く。」■読み物としては楽しめたけど、最後の「
譲り合い みんな仲良く 交通戦争」に関して少し。譲り合いってなんだ? 譲り譲られ、あるいは譲り返し、それは(輸送効率を考えなければ)ほのぼのしたいい光景だと思うけど、効率と安全のために交通ルールが定められていて、俺はこれを無視できないし、自分に関わる範囲で無視する理解していない他人を糞味噌に軽蔑してるわけだ(子供と年寄りとペットとおばちゃん自転車に勝てないのは当然のこととして受け入れてるので、それ以外に対して)。譲ることができるのは優先側の人だけで、非優先側の人は譲られることしかできない。譲り合いって可能か? 勘違いした非優先側の人間が譲り合い譲り合いと主張し勝手に譲られようとする(※能動的な受け身という矛盾)おかしな事態を招く危うい言葉ではないかと思う。譲り合いというのは一時停止の標識や標示の省略された、住宅地のような場所においてのみ意味のある言葉ではないか。
最終更新: 2015-05-31T16:39+0900
ファイル作成日時をみると1時間半前だった。不合格。
繰り返しのしかたを決めるまでに時間がかかりすぎた。再帰、ツリー、順列。再帰関数は共有して進めたり戻したりする変数とローカルな変数を整理しきれなくてあきらめた。深さ優先探索が書けないとかやばいね。三進数を使った順列(※下の解法)はちょっとだけ違う似たような計算を何度も繰り返すのがもったいない。カウンタの上限がすぐ来てスケールもしないし。
-1+2-3+4+5+6+78+9 は答えに数えないみたいだけどそのまま。
var CScript = WScript; // cscript.exeでの実行をおすすめします。 var Op = [ function op_shift(o, x) { o.buf = o.buf*10 + o.buf/Math.abs(o.buf)*x; o.expr += x; }, function op_plus(o, x) { o.sum += o.buf; o.buf = x; o.expr += "+" + x; }, function op_minus(o, x) { o.sum += o.buf; o.buf = -x; o.expr += "-" + x; } ]; for (var op9seq = Math.pow(3,9)-1; 0 <= op9seq; --op9seq) { var o = {sum:0, buf:0, expr:""}, q = op9seq, r; for (var x = 1; x <= 9; ++x) { r = q % 3; q = (q-r) / 3; Op[r](o, x); } o.sum += o.buf; if (o.sum == 100) { CScript.Echo(o.expr); } }
ところでこちらの、「Kazuho's Weblog: C言語で「1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に」の5問目を解いてみた」、変数 n の使い方がわかりません(わからないから自分は sumの他にもうひとつ bufという変数が必要になった)。ブコメに小町算とあるのだけど、これがヒント?