Bu meydan okuma esinlenilen Matematiktir. Programlama değildir .
Bir faktöriyel veya bir gerçek için matematiksel gösterim bir ünlem işaretidir !. Ünlem işareti aynı zamanda notbirçok programlama dilinde ortak bir semboldür .
Meydan okuma:
Sayıları ve karakterleri içeren bir dize alın: + !giriş ve çıkış olarak:
Bir ünlem işaretinin önündeki her şey matematiksel bir ifade olarak değerlendirilmelidir, öyle 2+2de olur 4.
Tek bir ünlem işaretinden sonraki her şey, önündeki her şeye aksesuar olarak 2+2!5eklenmelidir , bu yüzden: vermeli 45, çünkü 2+2=4ve 5bir aksesuardır. 2+2!5+5vermeli 410.
Yana !da gelir not, bu şey değil aslında sonra bir aksesuar gerektiği değil eklenecektir. Yani, 2+2!!5vermek gerekir 4, çünkü 5bir aksesuar değil. Şimdi, not(not(true))==truebu yüzden 2+2!!!5vermelidir 45. 2+2!!5!5+5vermek gerekir:, 410çünkü 2+2=4, sonra bir faktöriyel ve !5!5+5. Birincisi 5bir gerçek değil 5+5, başka bir ünlem işaretinden sonra ve bu yüzden yine bir gerçek.
Açıklamalar:
- Ünlem işaretleri her
+iki taraftaki a işaretinin yanında olmayacaktır . +Sayılar için öncülük olmayacak (öyle5değil+5).- Birincisinin önündeki ifadenin sonucuysa, isteğe bağlı olarak önde gelen bir sıfır ekleyebilirsiniz
!. Hem4ve04giriş için çıkış kabul edilir:0+0!4
Yönetici özeti: her bir toplamı değerlendirin ( !ayırıcı olarak kabul edilir). Ardından, çift sayıdan !(dize başlangıcından itibaren sayma) sonra görünen tüm sayıları atın . Sonra hepsini kaldırın !.
Test senaryoları:
!
<- Empty string
5
5
12!
12
!87
87
!!5
<- Empty string
5+5!2+2
104
5+5!!2+2
10
1!2!3!4!5!6!7!8!9
12468
10+10!!2+2!!3+3!4+4
208
2!!3!5
25
2!!3!5!7
25
10!!!!!!!5
105
Bu kod golf yani bayt (her dilde) en kısa kod kazanır! Açıklamalar şiddetle teşvik edilir!
25(Eklenen test senaryosuna bakın). Daha da önemlisi 2!!3!5!7, yine de verirdi 25, çünkü çiftin !sol sayısı var 7(böylece sayının hemen önündeki koşuyu saymazsınız, ancak !solunun tamamı sayılır ).
Rowmi?