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 0
hoặc 1
, theo sau là 0 hoặc nhiều hơn !
( /!*[01]!*/
).
Ví dụ, đầu vào có thể !!!0!!!!
hay !!!1
hay !0!!
hay 0!
hay 1
.
Những !
cái trước 0
hoặc 1
là 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à 0
hoặ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.