これは、インターネット上の数学の問題Iの鋸どこかに触発されましたが、どこ覚えていない(UPDATE:元の問題がで発見された数学の謎のsubredditことが可能であることを提供する証拠と、も参照この数学SEポストを)、を求めると整数の任意のペアに対して次のプロセスが可能かどうかの証拠(私が覚えていることから、任意のペアに対して可能だった):
整数のペアjとkが与えられ、それらの1つを2倍にして、1つをもう1つに加算し、新しい整数のペア、つまり(j、k)->(j + 1、k * 2)または(j * 2、k + 1)。次に、整数のペアを等しくする目的で、これらの整数でこのプロセスを繰り返します。
これらの例は必ずしも最適ではありませんが、正、負、またはゼロの整数でこのプロセスを実行する方法を示しています。
(2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(5, 6) -> (6, 12) -> (7, 24) -> (14, 25) -> (28, 26) -> (56, 27) -> (112, 28) -> (113, 56) -> (226, 57) -> (227, 114) -> (228, 228)
(0, 2) -> (1, 4) -> (2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(-4, 0) -> (-3, 0) -> (-2, 0) -> (-1, 0) -> (0, 0)
(3, -1) -> (6, 0) -> (12, 1) -> (13, 2) -> (14, 4) -> (15, 8) -> (16, 16)
(-4, -3) -> (-8, -2) -> (-16, -1) -> (-32, 0) -> (-31, 0) -> ... -> (0, 0)
チャレンジ
2つの整数を指定したプログラムを作成し、一方を繰り返しインクリメントし、他方を倍増することにより、それらの整数を等しくするために必要なステップのリストを出力します
仕様書
- 解決策は最適である必要はありませんが、任意のペアに対して有限数のステップで解決する必要があります
入力は2つの整数でなければなりません
出力は、各ステップの結果の整数を明確に示す合理的な出力である場合があります。例:
- 2つの個別の区切り文字(任意の記号、空白など)を含む文字列。1つはペアの各整数に、もう1つは各ペアに
- たとえば、入力j、k:2、5->出力:3,10; 6,11; 12,12
- 整数のリストのリスト
- 例:入力j、k:2、5->出力:[[3、10]、[6、11]、[12、12]]
- 2つの個別の区切り文字(任意の記号、空白など)を含む文字列。1つはペアの各整数に、もう1つは各ペアに
入力が等しい数値のペアである場合、他の重要な答えと一致する限り、何でも出力できます
- 例えば
- 入力[2、5]の出力[[3、10]、[6、11]、[12、12]]に入力ペアが含まれていない場合、入力[4、4]は何も出力しません。
- 入力[2、5]に出力[[2、5]、[3、10]、[6、11]、[12、12]]があり、入力ペアが含まれている場合、入力[4、4]は出力[[4、4]]。
- 例えば
標準のIOメソッドが適用され、標準の抜け穴が禁止されています
これはコードゴルフなので、バイト単位の最短回答が勝ちます
[(12,12),(6,11),(3,10),(2,5)]
、入力用(2,5)
?