通常どおり、0から8までの数字で構成される9進数の非負整数が与えられます。ただし、この数値の桁数(先行ゼロなし)は完全な正方形です。
このため、数字は正方形のグリッドに配置できます(読み取り順序は保持されます)。
1480(1125ベース10)の例:
14
80
ここで、そのような単項グリッドのすべての桁が、別のグリッドスペースへの動き(周期的な境界条件)を示しているとしましょう。
432
501
678
これは言っている
0 = stay still
1 = move right
2 = move right and up
3 = move up
...
8 = move right and down
したがって、1480グリッドで4から開始する場合は、上に移動して(pbcを覚えてください)、左に8に移動します。つまり、右と下に移動して4に戻り、期間2のサイクルを開始します。
一般に、このプロセスは0になるか、サイクルに気づくまで続きます。(0は期間1のサイクルと見なされます。)
1480の場合、4つの開始桁のそれぞれで最終的に到達する期間は2 2 2 1
それぞれです。
グリッドが大きい場合、これらの数値は8よりも大きくなる可能性がありますが、新しい単項数の「数字」として使用することもできます(単に9 ^ nの係数が数字であるかのように):
2*9^3 + 2*9^2 + 2*9 + 1 = 1639 (base 10) = 2221 (base 9)
これを元の9進数の強さと呼びます。したがって、1480の強度は1639(ベース10)、または2221(ベース9)です。
チャレンジ
単項数の強さが、その単項数自体よりも大きいか、小さいか、または等しいかどうかを通知する最も短いプログラムを記述します。(必ずしも強度を計算する必要はありません。)
入力は、平方数の数字を含む非負の単項数になります(0自体の特殊な場合を除いて、先行ゼロはありません)。コマンドラインまたはstdinから取得する必要があります。
出力は次のようにstdoutに送信されます。
G if the strength is larger than the original number (example: 1480 -> strength = 2221)
E if the strength is equal to the original number (example: 1 -> strength = 1)
L if the strength is less than the original number (example: 5 -> strength = 1)
楽しいボーナスチャレンジ:
その強さと等しい、あなたが見つけることができる最高のインプットは何ですか?(制限はありますか?)