blog.bouzuya.net

2020-08-25 CODE FESTIVAL 2014 決勝 A, B, C, D, E / 『デザインの輪郭』

CODE FESTIVAL 2014 決勝 A, B, C, D, E 考察

code-festival-2014-final A - 50 m 走

50 m の秒数 s が与えられるので平均の秒速を求める。 1 秒あたりの距離が秒速なので 50 / s で求める。絶対誤差・相対誤差の意味はよく分からない 10^(-3) の誤差なので f64 で計算すれば通るだろうと提出したら通った。

https://atcoder.jp/contests/code-festival-2014-final/submissions/16212219

code-festival-2014-final B - 暗算ゲーム

奇数番目の数字を足して偶数番目の数字を引く。先頭から 1 文字ずつ順に走査して合計を求める。合計を 0 に初期化しておく。それぞれの文字で数字から数値に変換する。指示通りに先頭から奇数番目なら合計に足して偶数番目なら合計から引く。ぼくは 0 番目から数えているのでソースコードでは偶奇が逆だけど指示通りの処理をしている。

https://atcoder.jp/contests/code-festival-2014-final/submissions/16212229

code-festival-2014-final C - N 進数

A = f(k) になる k があれば k をなければ -1 を出力する。問題を読んでもどうすれば良いのかよくわからなかった。大きなヒントとして入力例 3 に最大ケースがある。A = f(k) = 10^16 のとき k = 10000 らしい。このことから k10 <= k <= 10^4 の範囲であると分かる。この範囲なら全探索しても十分に間に合う。

10 <= k <= 10^4 の範囲で指示通りの f(k) を書き A と一致するかを確かめる。すべてで一致しなければ -1 を一致すればそのときの k を出力すれば良い。指示通りの f(k) はテストを書きながら適当に各桁をバラしたり組み立てたりして書いた。

https://atcoder.jp/contests/code-festival-2014-final/submissions/16212352

code-festival-2014-final D - パスカルの三角形

パスカルの三角形に A が表れるか。現れるなら段数と位置を求める。

まず指示にあるパスカルの三角形を描こうかと思ったが面倒なので検索した。パスカルの三角形の左上の辺を見ると ↓ のようになる。左上の辺 (=各段の 1 番目) はすべて 1 が並ぶ。各段の 2 番目はその 1 つ上の段の 1 番目と 2 番目を足したものになる。つまり 2 番目は連番になっている。 N 段目 (N >= 2) の 2 番目は N - 1 になっている。

1
1 1
1 2 ...
1 3 ...
1 4 ...
1 5 ...
...

問題では段数の制限などは特にないので AA + 1 段目の 2 番目に必ず出現する。

https://atcoder.jp/contests/code-festival-2014-final/submissions/16217173

code-festival-2014-final E - 常ならずグラフ

並び替えはできない。削除のみで「常ならずグラフ」をつくる。どこを削除すべきかよく分からない。分からないときは決め打ってみると良い。答えの「常ならずグラフ」の形は 2 種類しかない。 < からはじまる <><...> からはじまる ><>... だ。この 2 パターンを決め打ってより良いほうを取ればいい。

次は入力例で良し悪しの判断を考えていく。

1 2 5 1 とあるとき < からはじまるパターンを考えると 1 < 5 > 1 になる。 1 < 2 > 1 ではない。 2 を削除して 5 を残すほうが次に来る要素が > を満たせることが多いので得だからだ。

<> を交互に待つ。それぞれ反対の動きをするだけなので < について考える。 < を待っているときに < が来たら期待通りなので次は > を待つ。 > が来たら期待と逆なのでその前のものを削除して < 待ちを続ける。待ちが切り替わっているので混乱するけど先の例の 1 < 2 < 5 の状態がこれだ。 < が連続している状況だ。 = が来たら使えないのでその前のものを削除して < 待ちを続ける。……整理すると待っている < が来たときは逆を待ってそれ以外は古いものを削除する。それだけだ。

良し悪しは削除した個数が少ないものが良い。

最後に長さから削除した個数を引く。注意しないといけないのが長さが 3 に満たないものは「常ならずグラフ」とは言えない。あとはループの前に N = 1 のケースで壊れることがないように最初にも 3 に満たないものを蹴っておくと良い。

https://atcoder.jp/contests/code-festival-2014-final/submissions/16226063


『デザインの輪郭』を読んだ。

印象としては面白いところもあるけど正しくない。一緒に仕事したくない。ときどき面白いことを言っているように感じるけど一貫性や論理として破綻している。あくまでも印象として。

壁掛け型 CD プレーヤーの話に違和感がある。これと似たような要素を含んだ UX 関連のワークショップに参加したことがある。「オブザベーション(観察)」をテーマにしてゼリーを食わせるものだ。テーマと内容が完全に一致しているのでどこ由来のものなのかが気になった。ちなみにぼくはそのワークショップにて途中で講師にキレてしまい最後まで参加していない。脱線した。ぼくの言いたいことはそのワークショップを経て出てくるものがダジャレ的なセンスの壁掛け型 CD プレーヤーなのかってこと。換気扇の回転とシンクロした空気の流れと音の流れるイメージが重なった……ワークショップのくだりからのそれ? 由来はともかくワークショップ自体は有意義だし面白いものだと思う。でもそこから出てくるのが……。そこに商業的な成功を根拠につけくわえられても釈然としない。

句会のくだり。「優れた人が読み上げた瞬間に、その句が名句だってすぐわかるんですよ」に対しての返しの「もしかしたら、選んだ人の方がそれに気や魂を注入したのかもしれませんね。」。ぼくは権威主義的なものだと思った。それはまず間違いなく人で判断しているだろうしブラインドテストで消えるだろうと。

細かい引用はしないんだけど意図はみせないさりげないものが好きなんだろうけど同時に驚かせたいみたいな欲求も強く見えてうまく説明できないけど嫌な感じがする。ゆで卵のくだりでの「お〜〜!」とか「ああ!」とか。First Wow! じゃなくて Later Wow! だと。驚きに対しての描写やこだわりが強くて……。うーん。後から驚いてほしい・納得してほしいみたいな感じが……押し付けがましい? 「しらけ」にならないように注意しろって書いてあるんだけどそれかな。しらける? ぼくはもうまったく気づかなくていいと思う。『融けるデザイン』 (2020-08-15) ではもっと境界が曖昧になるようなインタフェース(インタフェースなのに!)が出ていたように思う。そういうのでいいんじゃないかな……。

ぼくが悪口みたくいろいろ書いているけど何か言いたくなる本というのはだいたい良い (?) 本なのだと思う。


リングフィットアドベンチャー 69 日目 レベル 126 ワールド 13 。


Google App Engine を試している。