Girdileri alan ve çıktıları sağlayan bir fonksiyonun (veya program), fonksiyonu tekrar tekrar kendi kendine çağırırsanız, sonunda orijinal numaraya ulaşması durumunda bir döngüye sahip olduğu söylenebilir. Örneğin, aşağıdaki işlevi alın:
Input: n 1 2 3 4 5 6
Output: f(n) 5 7 1 3 4 9
Biz başlarsanız n=1
, f(n)=5
, f(f(n))=f(5)=4
, f(f(f(n)))=f(4)=3
, f(f(f(f(n))))=f(3)=1
.
Bu yazılmıştır (1 5 4 3)
. Bu döngüde 4 benzersiz sayı olduğundan, bu 4 uzunluğundaki bir döngüdür.
Buradaki zorluk, mümkün olan her uzunluğa sahip döngüleri olan bir program veya işlev yazmaktır. Yani, uzunluk 1, uzunluk 2 gibi bir döngü olmalıdır.
Ayrıca, işlev / program pozitif tamsayılar için pozitif tamsayılar olmalıdır ve bu olmalı bijective tüm pozitif tamsayılar üzerinde, mümkün olan her çıkış değeri için tam olarak bir giriş değeri olmalıdır, yani. Başka bir deyişle, fonksiyon / program pozitif tamsayıların geçirgenliğini hesaplamalıdır.
Ayrıntılar: STDIN, STDOUT, fonksiyon argümanı, return, vb. Dahil olmak üzere herhangi bir standart giriş / çıkış sistemine izin verilir. Standart boşluklar yasaktır.
Veri türlerinizin sınırlamaları hakkında endişelenmenize gerek yoktur; yukarıdaki özelliklerin yalnızca örneğin bir değere int
veya float
herhangi bir değere sahip olabileceği varsayımı altında tutulması gerekir .
Fonksiyonun pozitif tamsayı olmayan girdiler üzerindeki davranışında herhangi bir kısıtlama yoktur ve bu girdiler / çıktılar dikkate alınmaz.
Puanlama bayt cinsinden kod golfüdür, en kısa kod kazanır.