私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「時間制限の密室」(CodeIQ)を参照してください。
問題
(なんやかんやあって)命からがら逃げてきた、あなた。
しかし逃げ込んだ部屋にあなたが入った途端、自動でドアはロックされ、しかも10分後にはガスが噴き出してくるという緊急アナウンスが流れてきた。
脱出するには、プログラムで鍵を作成して、3Dプリンタで出力しなければならない。
鍵の長さは100で、1から100までに区切られている。各数字に対応する場所は、凸部の高さが決まっている。
各部の高さは、最低1で、2の倍数の時は+2、3の倍数の時は+3、5の倍数の時は+5される。
鍵の1から100までの凸部の高さを、1行ずつ「]」の数で出力して鍵を作り、密室から脱出しよう。
制限時間は10分です。
なんやかんやで怪我をしているため、時間につれて画面が見づらくなってしまう。一刻も早く鍵を手に入れてこの密室から脱出しよう!
// 出力例(1~10まで)
]
]]]
]]]]
]]]
]]]]]]
]]]]]]
]
]]]
]]]]
]]]]]]]]
Rubyで解答しています。
#!/usr/bin/ruby #main for i in 1..100 c = 1 c += 5 if (i % 5) == 0 c += 3 if (i % 3) == 0 c += 2 if (i % 2) == 0 puts "]" * c end
簡単ですが、最初、時間宣言に気づいておらず焦りました。
5の倍数、3の倍数、2の倍数をチェックして出力数を計算し、その数だけ出力するだけです。
余裕でできる問題ですが制限時間があると焦るものです。