Dilinizin desteklediği beş karakteri seçin. 5 tane var! = 5 × 4 × 3 × 2 × 1 = 120 yolla bunların bir kez her karakteri içeren 5 karakterli bir dizge halinde düzenlenmesi; 120 permütasyon .
Karakterlerinizi, 120 dizenin her biri kendi dilinizde çalıştırıldığında, üretilen 120 çıkışın mümkün olduğunca 1 ila 120 (dahil) kadar benzersiz tam sayılar olacağı şekilde seçin.
Diğer bir deyişle, tek bir sayı çıkaran çalıştırılabilir kod üreten 5 karakterinizin 120 permütasyonunun her biri için, tüm bu sayılar kümesinin, 1 ile 120 arasındaki tam sayı kümesine olabildiğince yakın olmasını istersiniz.
Bu yüzden, ideal olarak, ilk permütasyonunuz 1
, bir sonraki 2
, bir sonraki 3
, sonuna kadar çıkacaktı 120
. Ancak bu ideal çoğu dil ve karakter için mümkün değildir.
5 karakterli dizeler şu şekilde çalıştırılabilir:
- girişi olmayan bir program
- tartışmasız bir işlev
- bir REPL komutu
İstenirse farklı dizeler farklı şekillerde çalıştırılabilir
Çıkışın sayılması için normal şekilde tek bir tamsayı çıkışı olmalıdır , örneğin:
- stdout'a yazdırılıyor
- işlev tarafından döndürüldü
- REPL ifadesinin sonucu
Kod normal olarak sonlandırılmalıdır (bu sayı ilk önce çıktığı sürece hata vermeyi içerebilir ). Hiç çalışmayan kod iyi, sadece (var olmayan) çıktı sayılmaz. Sayılar çıktısı, diliniz için farklı bir temel olmadıkça ondalık olmalıdır.
1 ile 120 arasında en belirgin sayıları üreten gönderim kazanır. Erken başvuru, beraberlik durumunda kazanır.
notlar
- 5 karakterinizin hepsinin farklı olması gerekmez, ancak yinelenen karakterlerin olması elbette etkili permütasyon sayısını azaltır.
32.0
Sayma gibi düz çıkışlar32
. (Ama32.01
olmaz.)032
Sade olduğu kadar sayım gibi önde gelen sıfırlar32
.- Geçerli çıktılar deterministik ve zamanla değişmez olmalıdır.
- Baytlarla değil , karakterlerle uğraşıyoruz .
Örnek
Karakterler 123+*
Python'un (veya birçok dilin) REPL'i için makul bir ilk tercihtir. Elde edilen 120 permütasyon ve çıktı:
123+* n/a
123*+ n/a
12+3* n/a
12+*3 n/a
12*3+ n/a
12*+3 36
132+* n/a
132*+ n/a
13+2* n/a
13+*2 n/a
13*2+ n/a
13*+2 26
1+23* n/a
1+2*3 7
1+32* n/a
1+3*2 7
1+*23 n/a
1+*32 n/a
1*23+ n/a
1*2+3 5
1*32+ n/a
1*3+2 5
1*+23 23
1*+32 32
213+* n/a
213*+ n/a
21+3* n/a
21+*3 n/a
21*3+ n/a
21*+3 63
231+* n/a
231*+ n/a
23+1* n/a
23+*1 n/a
23*1+ n/a
23*+1 23
2+13* n/a
2+1*3 5
2+31* n/a
2+3*1 5
2+*13 n/a
2+*31 n/a
2*13+ n/a
2*1+3 5
2*31+ n/a
2*3+1 7
2*+13 26
2*+31 62
312+* n/a
312*+ n/a
31+2* n/a
31+*2 n/a
31*2+ n/a
31*+2 62
321+* n/a
321*+ n/a
32+1* n/a
32+*1 n/a
32*1+ n/a
32*+1 32
3+12* n/a
3+1*2 5
3+21* n/a
3+2*1 5
3+*12 n/a
3+*21 n/a
3*12+ n/a
3*1+2 5
3*21+ n/a
3*2+1 7
3*+12 36
3*+21 63
+123* n/a
+12*3 36
+132* n/a
+13*2 26
+1*23 23
+1*32 32
+213* n/a
+21*3 63
+231* n/a
+23*1 23
+2*13 26
+2*31 62
+312* n/a
+31*2 62
+321* n/a
+32*1 32
+3*12 36
+3*21 63
+*123 n/a
+*132 n/a
+*213 n/a
+*231 n/a
+*312 n/a
+*321 n/a
*123+ n/a
*12+3 n/a
*132+ n/a
*13+2 n/a
*1+23 n/a
*1+32 n/a
*213+ n/a
*21+3 n/a
*231+ n/a
*23+1 n/a
*2+13 n/a
*2+31 n/a
*312+ n/a
*31+2 n/a
*321+ n/a
*32+1 n/a
*3+12 n/a
*3+21 n/a
*+123 n/a
*+132 n/a
*+213 n/a
*+231 n/a
*+312 n/a
*+321 n/a
Üretilen 36 sayı var, hepsi 1 ila 120 arasında.
36, 26, 7, 7, 5, 5, 23, 32, 63, 23, 5, 5, 5, 7, 26, 62, 62, 32, 5, 5, 5, 7, 36, 63, 36, 26, 23, 32, 63, 23, 26, 62, 62, 32, 36, 63
Ancak, yalnızca 8 tanesi benzersizdir:
36, 26, 7, 5, 23, 32, 63, 62
Böylece böyle bir sunum sadece en fazla 120 puan üzerinden 8 puan alır.
c
dillerde imkansız görünüyor !!!