Bir Bell numarası ( OEIS A000110 ), bir n etiketli (farklı) öğeyi bölmenin yol sayısıdır. 0. Bell numarası 1 olarak tanımlanır.
Bazı örneklere bakalım (bölümler için alt kümeleri ve parantezleri belirtmek için parantez kullanıyorum):
1: {1}
2: {[1,2]}, {[1],[2]}
3: {[1,2,3]}, {[1,2],[3]}, {[1,3],[2]}, {[2,3],[1]}, {[1],[2],[3]}
Bell sayılarını hesaplamanın birçok yolu vardır ve bunlardan herhangi birini kullanmakta özgürsünüz. Burada bir yol tarif edilecektir:
Bell sayılarını hesaplamanın en kolay yolu, binom katsayıları için Pascal üçgenine benzeyen bir sayı üçgeni kullanmaktır. Bell numaraları üçgenin kenarlarında görünür. 1'den başlayarak, üçgendeki her yeni satır, bir önceki satırdaki son girdiyi ilk girdi olarak alarak ve ardından her yeni girdiyi sol komşu artı sol üst komşusuna ayarlayarak oluşturulur:
1
1 2
2 3 5
5 7 10 15
15 20 27 37 52
0 dizinleme veya 1 dizinleme kullanabilirsiniz. 0 dizinleme kullanırsanız, bir girdi 3çıktılanmalıdır 5, ancak 21 dizinleme kullanıyorsanız çıktı alınmalıdır .
Programınız çıktı olarak 15. Bell numarasına kadar çalışmalıdır 1382958545. Teorik olarak, programınız daha büyük sayıları işleyebilmelidir (başka bir deyişle, çözümleri kodlamayın).
DÜZENLEME: Üçgen yöntemiyle hesaplanmadığı için 0 (0 dizinleme için) veya 1 (1 dizinleme için) girdisini işlemeniz gerekmez.
Test senaryoları (0-endeksleme varsayarak):
0 -> 1 (OPTIONAL)
1 -> 1
2 -> 2
3 -> 5
4 -> 15
5 -> 52
6 -> 203
7 -> 877
8 -> 4140
9 -> 21147
10 -> 115975
11 -> 678570
12 -> 4213597
13 -> 27644437
14 -> 190899322
15 -> 1382958545
Doğrudan Bell sayıları üreten yerleşik bir yöntem (Wolfram Dili'nde BellB [n] gibi) kullanan yanıtlar rekabetçi değildir.
En kısa kod (bayt cinsinden) kazanır.
3çıktısı alması gerektiğini söylüyorsunuz 2. O zaman girdi 11-endeksleme ile ne verirdi ?



3gereken çıkış5Bu çıktıya olur15, doğru? Ve 1 endeksleme ile çıktı5