Bir "kafiye düzeni" harflerin bir dize a
kadar z
başlayarak karakterlerin ilk oluşumları (boşluklar olmadan) artan sırada olacak şekilde, a
. Örneğin (ilk kez işaretlendiğinde):
abccdbebdcfa
^^^ ^ ^ ^
Uzunluk kafiye şemalarının sayısı Bell numaralarıN
tarafından verilmektedir . ( OEIS A000110 ) B(N)
Meydan okuma
Göreviniz, bu kafiye planlarının bir numaralandırmasını, yani tamsayılardan kafiye planlarına kadar bir sıfat eşlemesini uygulamaktır. Sen pozitif bir tamsayı verilen konum N <= 26
, hem de negatif olmayan bir tamsayı 0 <= i < B(N)
. Alternatif olarak, aralığı kullanabilirsiniz 1 <= i <= B(N)
. Her birinin farklı bir dizge vereceği şekilde N
, bir kafiye şeması çıkarmalısınız i
.
STDIN (veya en yakın alternatif), komut satırı argümanı veya işlev argümanı yoluyla giriş alarak ve sonucu STDOUT (veya en yakın alternatif), fonksiyon dönüş değeri veya function (out) parametresi ile çıktı alarak bir program veya işlev yazabilirsiniz.
Küçük veya büyük harf kullanabilirsiniz (sürekli olarak).
Kodunuz herhangi bir geçerli girişi makul bir süre içinde ele almalıdır (örn . En kötü durum için birkaç saatten fazla değil ). Bu , yavaş dillerde bile (küçük bazlar için) üssel olarak ölçeklendirilen çözümlere izin vermeli , ancak (yani ) ile doğrusal olarak ölçeklendirilen çözümleri yasaklamalıdır . Özellikle, bu, planları atana kadar geçerli olan tüm geçerli kafiyeli şemalarını yineleyemeyeceğiniz anlamına gelir .N = 26
i
N
i
B(N)
N
i
Standart kod-golf kuralları geçerlidir.
Örnekler
Şemalara tam olarak atanması i
(yani verilen şemaların sırası N
) size bağlıdır. Ancak, sözlük sırasını seçtiğinizi söyleyin, çözümünüz aşağıdaki tabloya uymalıdır ( -
geçersiz girdilerle birlikte):
N\i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 a - - - - - - - - - - - - - -
2 aa ab - - - - - - - - - - - - -
3 aaa aab aba abb abc - - - - - - - - - -
4 aaaa aaab aaba aabb aabc abaa abab abac abba abbb abbc abca abcb abcc abcd
Burada, belirli bir uzunluk için geçerli tüm kafiye düzenlerini üreten kısa bir CJam betiği bulunmaktadır (ancak 10'dan fazla denemeyin yoksa bir süre beklersiniz).
N
Oldukça önemsiz olmadığı ve onu bulamayacak kadar aptal olduğum sürece (iyi) bir polinom-zaman çözümüne (in ) bir ödül verebilirim .