OpenSource Institute の攻略。
いくつかの解釈が考えられる良問だろう。
The solution to this level is 599+(123*6)
単純に計算すれば1337。これはleet(ハッカー語 by Wikipedia)を意味するのだろうか? その前に試していないことはないか?
手計算でもできないことはないかな。
x * y = 133745639
上の式を満たす[x,y]: x,y > 1を見つけ、x+yの値を入力する。
フラクタルで有名なコッホ曲線を使った問題。
はじめ、1辺の長さが1の正三角形がある。1分後に各辺を三分割した真ん中の辺を1辺とした正三角形が、それぞれの辺にくっつく。これを続けていくと、氷の結晶のような図形ができあがる。
1時間33分後に図形の周囲の長さがいくつになっているかを答える。
簡単のために1辺だけについて考える。まず、辺の数は1分後に4本に増え、2分後には4本からそれぞれ4本ずつに増える。同様にして、i分後には4のi乗本になる。次に、辺の長さは1分後に1/3になり、2分後、3分後はさらに1/3になるので、i分後には1/3のi乗になる。
あとは計算するだけ。四捨五入して整数で答えることに注意。
計算するん?
求められている方法をとるなら、ファイルの各バイトごとに+,xor,and演算をするような プログラムを組めばいい。A XOR Aの結果を考えた方が早いけれど。
出た数字の後に_solutionをくっつけて答える。
XOR演算で置き換えられたJPEGファイルを修復する問題。
一般的なJPEGヘッダーのはじめ9バイトは下のようになっている。
FF D8 FF E0 00 10 4A 46 49 46 : .リ....JFIF
XOR演算にはA xor B = C ならC xor A = B、C xor B = Aという関係があるから、 与えられたファイルの先頭とXORの値を計算すると、置換に使われた数列が得られる。
最後に、数字のペアを交換する。
0 <-> 23 78 <-> 66 36 <-> 144
これらを行うプログラムを組めばいい。
ジュール・ヴェルヌの小説「アドリア海の復讐」(原題: Mathias Sandorf)で使われた暗号で、回転グリル暗号というらしい。グリル暗号では、鍵になる穴の開いた紙を暗号文の上に置き、穴の位置の文字を読み取って解読する。回転グリル暗号では、さらに鍵を90度ずつ回転させながら文字を読み取る。つまり、36文字ずつの転置式暗号になっている。
この問題では36文字になるように足りない文字数を#で補い、さらに文章を逆転させる。
Sandorf Cypher -> ###########Example of Sandorf Cypher -> rehpyC frodnaS fo elpmaxE###########
はじめの穴の位置を左上から右下に書き下すと下のようになる。 これを90度ずつ回転させたものを用意して、順に読んでいけばいい。
0 : xoxoxoxxxxoxxxoxxxxoxxoxxxxxxoxxxoxx 90: xxxxxxxxoxxoxxxoxxoxxxxoxxoxoxxoxxxo 180: xxoxxxoxxxxxxoxxoxxxxoxxxoxxxxoxoxox 270: oxxxoxxoxoxxoxxxxoxxoxxxoxxoxxxxxxxx
全体の文字列は、逆転していることに注意する。
文章を注意深く読む。大量の英語に眠くなってもひたすら読む。 Geek Challengeに関係のあるような文に答えが隠されている。
各長方形の左端、高さと右端の三つ組が与えられたときに、図形の輪郭を知りたい。
輪郭は、上下の変化の位置と変化した後の高さのペアであらわす。 例として出されている"1,11,3,13..."は、位置1で高さ11まで上がり、位置3で高さ13まで上がる...という意味。
幅の最小値は1なので、1つごとに変化する場合を知るために、幅を2倍にしてしまうと考えやすい。
うまく輪郭が得られたら、次はそれを数値に変換しなければならない。
輪郭を得るときは、原則、最も高いところを輪郭と見なせばいい。 下がる部分は、その次と比較して変化があるかを見ればいい。 ただ、幅の最小値は1なので、1つごとに変化した場合に見逃してしまう。そのために、幅を2倍にして考えると考えやすい。