先日、Paizaのスキルチェックで 時間切れ0点を取ってしまったので、 癪だからランクS、本気で取りに行きました。 ひとりすごろくは第一次制限時間の40分を超えてしまったので、 全ケース通ったんですけど95点でSではなくA判定。 やっぱり時間が大事なんですね。 Javaで「早く」書くのは確かにキツイです。 ので、次は50点の制限時間が2時間のビリヤードの玉突きに挑戦しました。 こちらは、問題中にヒントを書いていてくれていることもあり、 60分で解答を提出、ようやっとSランクをゲットできました。 今までAランクでいっか、とか思ってて、S問題はゆっくりやって、 再チャレンジでcodeをbrush upして100点を取ってたんですけど、 それより時間が大事、なんですかね。 いや、実務では分を争う程、そこまでsevereではないので... それに、paizaでいくら頑張っても、 小さいとこばっかりであんまり行きたい先が無いので、虚しいんです。
Category: Algorithm
Getting Prize S Level Programmer at Paiza
Challenging Paiza TSP
8/13はPaizaの日、ということで、巡回セールスマン問題を出題していました。 Paizaラーニングでも巡回セールスマン問題のさわり(貪欲法)を取り上げていて、 2-OptやSimulatedAnnealing(焼きなまし法)を学んで、 いざ書いてみたんですが、なかなかうまく行きません。 テストデータは有名ドコロがあります。 まずはatt48で2-Optでやってみたものの、 交差線が多く、全然それっぽい経路が得られません。 なんでーーー!? Javaによるまんまのコードがあったので、 読み解いていったんですけど時間かかっちゃって、 結局Paizaの締切9/12に間に合いませんでした... 何たること。
どうも、キモはswapにあるようで、 点を交換すると総延長が短くなる場合、 当然点を交換するんですが、 当該点だけを交換するだけじゃなく、 そこから真ん中へ向かってずっと点を交換していくんですね。 そうかー。
悔しいから、久し振りにPaizaのS問題やってみました。 最も簡単そうな最小辞書順列にしてみました。 けれど、問題の意味を理解するのと、JavaのStreamで書ききったために、 制限の2時間、あっという間に過ぎてしまいました。0点確定です。トホホ。 しかも、提出したコードは、2つの場合だけ通らずに、80点。 どうしてコケる時があるのか、思い当たるフシもなく、未だにわかっていません。 テストデータ、見せて欲しいです。
Magic Square
3次魔方陣
- 爪のついたZ字順に1〜9を配置
- 2と8を入れ替える
1 2 3 4 5 6 7 |
|
4次魔方陣
- 1〜16を左上から右へ4列記入
- 縦、横の真ん中の2列の上下端を交差させて入れ替える
1 2 3 4 5 6 7 8 9 |
|
奇数次魔方陣
ヒンドゥーの連続形式
こういうのがさらっと出てくる山口さんって、 やっぱり凄いですね。