Thử thách này được lấy cảm hứng từ Toán học là sự thật. Lập trình thì không .
Ký hiệu toán học cho một giai thừa, hoặc thực tế là một dấu chấm than !. Dấu chấm than cũng là một biểu tượng phổ biến cho notnhiều ngôn ngữ lập trình.
Thử thách:
Lấy một chuỗi, chứa các chữ số và các ký tự: + !làm đầu vào và đầu ra như sau:
Tất cả mọi thứ ở phía trước dấu chấm than nên được đánh giá là biểu thức toán học, vì vậy 2+2sẽ là như vậy 4.
Tất cả mọi thứ sau một dấu chấm than duy nhất nên được thêm vào như phụ kiện cho bất cứ thứ gì ở phía trước nó, vì vậy: 2+2!5nên cho 45, bởi vì 2+2=4, và 5là một phụ kiện. 2+2!5+5nên cho 410.
Vì !cũng có nghĩa là not, bất cứ thứ gì không phải là phụ kiện sau khi thực tế không nên được thêm vào. Vì vậy, 2+2!!5nên cho 4, vì 5không phải là một phụ kiện. Bây giờ, not(not(true))==true, vì vậy 2+2!!!5nên cung cấp 45. 2+2!!5!5+5nên cho : 410, bởi vì 2+2=4, sau đó là một giai thừa và !5!5+5. Đầu tiên 5không phải là một sự thật, mà 5+5là sau một dấu chấm than khác, và do đó là một sự thật, một lần nữa.
Làm rõ:
- Các dấu chấm than sẽ không liền kề với một
+bên. - Sẽ không dẫn đầu
+về số lượng (nó5, không phải+5). - Bạn có thể tùy ý bao gồm một số 0 đứng đầu nếu đó là kết quả của biểu thức ở phía trước đầu tiên
!. Cả hai4và04được chấp nhận đầu ra cho đầu vào:0+0!4
Tóm tắt điều hành: đánh giá từng khoản tiền (coi !như dấu phân cách). Sau đó loại bỏ tất cả các số xuất hiện sau một số chẵn !(tính từ đầu chuỗi). Sau đó loại bỏ tất cả !.
Các trường hợp thử nghiệm:
!
<- 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
Đây là môn đánh gôn để mã ngắn nhất tính theo byte (theo từng ngôn ngữ) sẽ thắng! Giải thích được khuyến khích mạnh mẽ!
25(xem thêm trường hợp thử nghiệm). Quan trọng hơn 2!!3!5!7vẫn sẽ đưa ra 25, bởi vì có một số chẵn !bên trái của số 7(vì vậy bạn không chỉ đếm số chạy bên phải trước số, nhưng tất cả !bên trái của số đó).
Row?