Trong toán học, một dấu chấm than !thường có nghĩa là giai thừa và nó xuất hiện sau khi lập luận.
Trong lập trình, một dấu chấm than !thường có nghĩa là phủ định và nó xuất hiện trước đối số.
Đối với thử thách này, chúng tôi sẽ chỉ áp dụng các hoạt động này cho không và một.
Factorial
0! = 1
1! = 1
Negation
!0 = 1
!1 = 0
Lấy một chuỗi từ 0 trở lên !, theo sau 0hoặc 1, theo sau là 0 hoặc nhiều hơn !( /!*[01]!*/).
Ví dụ, đầu vào có thể !!!0!!!!hay !!!1hay !0!!hay 0!hay 1.
Những !cái trước 0hoặc 1là phủ định và cái !sau là giai thừa.
Yếu tố có độ ưu tiên cao hơn phủ định vì vậy giai thừa luôn được áp dụng đầu tiên.
Ví dụ, !!!0!!!!thực sự có nghĩa là !!!(0!!!!), hoặc tốt hơn chưa !(!(!((((0!)!)!)!))).
Xuất ra ứng dụng kết quả của tất cả các giai thừa và phủ định. Đầu ra sẽ luôn luôn là 0hoặc 1.
Các trường hợp thử nghiệm
0 -> 0
1 -> 1
0! -> 1
1! -> 1
!0 -> 1
!1 -> 0
!0! -> 0
!1! -> 0
0!! -> 1
1!! -> 1
!!0 -> 0
!!1 -> 1
!0!! -> 0
!!!1 -> 0
!!!0!!!! -> 0
!!!1!!!! -> 0
Mã ngắn nhất tính bằng byte thắng.
