ASCIIフィボナッチ時計を作成する



Build An Ascii Fibonacci Clock



解決:

Python 2、194182バイト

ランダムインポートから* h = m = H、M = input()while [h、m]!= [H、M / 5]:h = m = 0; s = [] for n in 1,1,2、 3,5:c = randint(0,3); h + = c%2 * n; m + = c / 2 * n; s = zip(*(['WRGB' [c] * n] * n + s) [::-1])s:print ''。join(L)のLの場合

アルゴリズムは単なる棄却サンプリングであるため、正しいクロックが得られるまでクロックを生成し続けます。時計は、何もないところから始めて、「上に正方形を追加し、時計回りに5回回転させる」ことによって構築されます。

STDINを介して2つのコンマ区切りの整数を取ります。



>>> ================================ RESTART ============== ================== >>> 7,17 BBBWWWWW BBRWWWWW RRRWWWWW RRRWWWWW RRRWWWWW >>> ================== ============== RESTART ================================ >>> 7,17 GGBRRRRR GGRRRRRR WWWRRRRR WWWRRRRR WWWRRRRR 

CJam、61バイト

l〜5 /]:A {; L [TT] [XXYZ5] {4mr_2bW%Mf * @。+  Ps = M * aM * @ + W%z } fMA =!} gN *

STDINを介して2つのスペースで区切られた整数を取り、3.14の代わりにそれぞれWRGB。オンラインでお試しください。

これが「正気」です数バイト余分なRGBWバージョン:



l〜5 /]:A {; L [TT] [XXYZ5] {4mr_2bW%Mf * @。+  'WRGB' = M * aM * @ + W%z } fMA =!} gN *

説明

アルゴリズムは私のPythonの答えと同じです—正しいものが得られるまでクロックを生成することによる棄却サンプリング。

l〜5 /]:A入力を読み取り、配列を作成します[/ 5] {...} g Do ...;スタック上の唯一の要素をポップしますL空の配列をプッシュします。これがクロックになります[TT] [hm]の[00]を押して、サンプル[XXYZ5] {...} fI For I in [1 1 2 3 5] ... 4mr [0 1 2 3] _2bW%からランダムな数値をプッシュします。コピーして、[0] [1] [0 1] [1 1] If * Multiply bit( s)by I @。+要素ごとに[hm]配列に追加 Ps =「3.14」のいずれかの文字列化された円周率にランダムな数値をインデックス付けI * aI * I by I square @ + W%z 上記に追加時計と時計回りに回転A =! ...結果のクロックが正しくない場合N *改行付きのリフルクロック 

Python 2、421バイト

うーん、私は 承知しました これはもっとゴルフをすることができます。

itertools import * from random import * f、r = [1,1,2,3,5]、range c = {_:[x for x in chain(* [combinations(f、i)for i in r( 6)])if sum(x)== _] for _ in r(13)} k = [[2,1,4]、[2,0,4]] + [[3,4]] * 3 def b(h、m):o = ['W'] * 5; m / = 5; h、m = choice(c [h])、choice(c [m])l = dict(zip(zip( 'WWR'、[m、h、m])、 'GRB'))for x in h、m:d = {1:[0,1]、2:[2]、3:[3]、5: [4]} for _ in x:j = d [_]。pop(); o [j] = l [o [j]、x] print ' n'.join([' '。join(o [ i] * f [i] for i in _)for _ in k])

テストケース:



>>> b(7,20)WWBRRRRR WWRRRRRR GGGRRRRR GGGRRRRR GGGRRRRR >>> b(7,20)RRBWWWWW RRRWWWWW BBBWWWWW BBBWWWWW BBBWWWWW