Birisi gerçekten güzel görünen ama oldukça kullanılamaz olan Fibonacci sayılarını kullanarak gerçekten süslü bir saat inşa etti . Tam istediğimiz gibi! Bunu yeniden oluşturalım.
Saat, 1'den başlayarak (yani 1, 1, 2, 3, 5) ilk beş Fibonacci sayısına karşılık gelen 5 bölümden oluşur:
ccbeeeee
ccaeeeee
dddeeeee
dddeeeee
dddeeeee
Saat, 12 saatlik süreyi 5 dakikalık artışlarla gösterebilir. İşte böyle çalışır. Zamanı 7:20 düşünün. Saat 7 verilen Fibonacci sayılarına ayrılabilir
7 = 2 + 5
Ayrıca beş dakikalık 4 ünite vardır. 4 şu şekilde ayrıştırılabilir:
4 = 2 + 1 + 1
Şimdi saatler kırmızı renkte, dakikalar yeşil renkte gösterilir ve bir saat hem saat hem de dakika olarak kullanılırsa mavi renkte gösterilir. Bir sayı hiç kullanılmazsa, beyaz kalır. Yani yukarıdakiler şöyle gösterilecekti:
BBGRRRRR
BBGRRRRR
WWWRRRRR
WWWRRRRR
WWWRRRRR
Ama bekleyin, dahası var. Yukarıdaki ayrışmalar tek olasılık değildir. Bir de yazabilir 7 = 3 + 2 + 1 + 1
ve 4 = 3 + 1
birini verecek olan
GGRWWWWW GGBWWWWW
GGBWWWWW GGRWWWWW
BBBWWWWW or BBBWWWWW
BBBWWWWW BBBWWWWW
BBBWWWWW BBBWWWWW
hangisine bağlı olduğuna bağlı olarak 1
. Tabii ki başka kombinasyonlar da var. Saat, geçerli tüm ayrışmalardan rastgele seçer.
Dediğim gibi ... bu bir kullanılabilirlik ödülü kazanmayabilir, ama bakmak güzel.
Meydan okuma
Senin görevin böyle bir saat uygulamak. Programınız (veya işleviniz) yukarıda açıklandığı gibi STDOUT veya en yakın alternatif için geçerli zamanın ASCII temsilini yazdırmalıdır (5 dakikanın son katına yuvarlanır). Saati herhangi bir ortak formatta girdi olarak okumayı veya standart kütüphane işlevleriyle almayı seçebilirsiniz. Geçerli / verilen sürenin 5 dakikaya bölünebileceğini varsaymamalısınız.
Çözümün gerekir şimdiki zaman mümkün olan tüm temsillerin rasgele seçim. Yani her gösterim sıfır olmayan bir olasılıkla basılmalıdır.
Gece yarısı ve öğlen olarak 0:00
(aksine 12:00
) ele alınmalıdır .
İsteğe bağlı olarak tek bir satırsonu karakteri yazdırabilirsiniz.
Bunun yerine dört farklı yazdırılabilir ASCII karakteri (0x20 - 0xFE karakter kodları) kullanabilirsiniz RGBW
. Lütfen seçiminizi cevabınızda belirtin ve sürekli kullanın.
Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.