チャレンジ
あなたの言語でサポートされている正の整数を考える:
- 入力を受け取り、それを2つに分割します。このプログラムのすべての除算で、入力が奇数の場合、半分を切り上げ、半分を切り捨てます(例:
7 -> 3,4
でなく7 -> 3.5,3.5
)。 - いずれかの数を半分に割り、次にこれら2つの新しい半分の大きい方を取り、分割されなかった数に戻します。例:
3,4 -> (1,2),4 -> 1,6
または3,4 -> 3,(2,2) -> 5,2
。 - 前に見たセットに到達するまで、手順2を繰り返します。例:
5 -> 3,2 -> (1,2),2 -> 1,4 -> 1,(2,2) -> 3,2
。3,2
以前に見たので、繰り返すのをやめるかもしれません。これを実行する過程で、スタックを完全に使い果たす可能性があります。例:5 -> 3,2 -> (1,2),2 -> 1,4 -> (0,1),4 -> 0,5
。 - ループ内の各ペアを出力します(つまり、ペアの最初の出現から2番目までの、中間ステップなしの上記の2番目は含まれません)。例:
3,2 -> 1,4
。入力が含まれている場合は、それを出力しないでください0
-5 -> 3,2 -> 1,4
ではなく0,5 -> 3,2 -> 1,4
。 - ペアを別々に分割して、手順1〜4を繰り返します。
I / O
入力は、1
言語でサポートされている最大整数、またはコンピューターをクラッシュさせない最大整数のどちらか小さい方より大きいか小さい正の整数です。
出力は、任意の形式(文字列、リスト、配列など)の上記のループです。末尾の空白は許可されます。
同じループを2回出力したり、同じループの異なるバージョンを出力したりしないでください。例:2 -> 1,1
と1,1 -> 2
はどちらも有効なループですが、ループの異なるポイントから始まる同じループを記述しています。同様に、同一であるが逆の順序で実行される2つのループは出力されません。例:3 -> 1,2 -> 2,1
と3 -> 2,1 -> 1,2
は同じループですが、互いに逆方向に進みます。
区切り文字を使用して、ペア間、ペア内の各数値間、および各ループ間を区別できます。ただし、3つの異なる文字または文字列である必要があります。上記では、数値をコンマで、ペアを->
's'で、ループを退屈な命令で分けました。以下の例では、各ペアを括弧で囲み、ペア内の各数値の間にコンマを使用し、各ループの間に改行を使用します。
例
功績WheatWizardのコード@私の例のリストを固定します。以前のドラフトで述べたように、手作業で行っていたため、いくつかは欠けていたはずですが、男の子はいくつか欠けていました。
入力:2
出力:(2)(1,1)
入力:3
出力:
(3)(1,2)
(1,2)(2,1)
(3)(1,2)(2,1)
入力:4
出力:
(4)(2,2)(1,3)
(1,3)(3,1)
(4)(2,2)(1,3)(3,1)
(4)(2,2)(3,1)(1,3)
(3,1)(1,3)
(4)(2,2)(3,1)
入力: 5
出力:
(5)(2,3)(1,4)
(1,4)(3,2)
(2,3)(1,4)(3,2)(4,1)
(5)(2,3)(1,4)(3,2)(4,1)
(2,3)(4,1)
(5)(2,3)(4,1)
入力: 6
出力:
(6)(3,3)(1,5)
(1,5)(4,2)(2,4)
(4,2)(2,4)
(1,5)(4,2)(5,1)(2,4)
(4,2)(5,1)(2,4)
(6)(3,3)(1,5)(4,2)(5,1)
(6)(3,3)(5,1)(2,4)(1,5)
(2,4)(1,5)(4,2)
(5,1)(2,4)(1,5)(4,2)
(2,4)(4,2)
(5,1)(2,4)(4,2)
(6)(3,3)(5,1)
入力: 7
出力:
(7)(3,4)(1,6)
(1,6)(4,3)(2,5)
(2,5)(5,2)
(3,4)(1,6)(4,3)(2,5)(5,2)(6,1)
(7)(3,4)(1,6)(4,3)(2,5)(5,2)(6,1)
(3,4)(1,6)(4,3)(6,1)
(7)(3,4)(1,6)(4,3)(6,1)
(7)(3,4)(5,2)(2,5)(1,6)
(2,5)(1,6)(4,3)
(3,4)(5,2)(2,5)(1,6)(4,3)(6,1)
(7)(3,4)(5,2)(2,5)(1,6)(4,3)(6,1)
(5,2)(2,5)
(3,4)(5,2)(6,1)
(7)(3,4)(5,2)(6,1)
得点
これはcode-golfなので、バイト数が最も少ないものが優先されます。
これが私の最初の課題ですので、どんなフィードバックでも大歓迎です。ここにサンドボックスへのリンク。
おもしろい事実:私はある日退屈して、この方法でランダムな小さな鉛筆の芯で遊んでいたのですが、結局、これらのタイプのループを続けることができることに気付きました。どういうわけか、私の最初の反応は「ねえ、これはコードゴルフにとって大きな挑戦になるでしょう」でした。
(a,0)
代わりに印刷しても(a)
いいですか?これは強く型付けされた言語で意味をなす傾向があります。