Tantangan ini terinspirasi oleh Matematika adalah fakta. Pemrograman tidak .
Notasi matematika untuk faktorial, atau fakta adalah tanda seru !. Tanda seru juga merupakan simbol umum untuk notbanyak bahasa pemrograman.
Tantangan:
Ambil string, berisi angka, dan karakter: + !sebagai input dan output sebagai berikut:
Segala sesuatu di depan tanda seru harus dievaluasi sebagai ekspresi matematika, demikian 2+2juga halnya 4.
Segala sesuatu setelah tanda seru harus ditambahkan sebagai aksesori untuk apa pun yang ada di depannya, jadi: 2+2!5harus memberi 45, karena 2+2=4, dan 5merupakan aksesori. 2+2!5+5harus memberi 410.
Karena !juga berarti not, apa pun yang bukan aksesori setelah fakta tidak boleh ditambahkan. Jadi, 2+2!!5harus memberi 4, karena 5bukan aksesori. Sekarang, not(not(true))==truejadi 2+2!!!5harus memberi 45. 2+2!!5!5+5harus memberi:, 410karena 2+2=4, kemudian diikuti oleh faktorial dan !5!5+5. Yang pertama 5bukan fakta, tetapi 5+5setelah tanda seru lain, dan karena itu fakta, lagi.
Klarifikasi:
- Tanda seru tidak akan berdekatan dengan tanda
+di kedua sisi. - Tidak akan ada yang memimpin
+untuk angka (itu5, tidak+5). - Anda dapat memasukkan nol di depan jika itu adalah hasil dari ekspresi di depan yang pertama
!. Keduanya4dan04diterima sebagai input:0+0!4
Ringkasan eksekutif: mengevaluasi setiap jumlah (memperlakukan !sebagai pemisah). Kemudian buang semua angka yang muncul setelah angka genap !(dihitung dari awal string). Lalu hapus semua !.
Kasus uji:
!
<- 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
Ini adalah kode-golf sehingga kode terpendek dalam byte (dalam setiap bahasa) menang! Penjelasan sangat dianjurkan!
25(lihat test case tambahan). Yang lebih penting 2!!3!5!7masih akan memberi 25, karena ada jumlah genap !kiri 7(jadi Anda tidak hanya menghitung run tepat di depan nomor, tetapi semua !kiri itu).
Row?