Một Số Friedman là một số nguyên dương đó là tương đương với một biểu hiện không tầm thường trong đó sử dụng chữ số riêng của mình trong sự kết hợp với các hoạt động +, -, *, /, ^, dấu ngoặc đơn và nối.
Số Fried Friedman là một số nguyên dương bằng với một biểu thức không tầm thường sử dụng các chữ số của chính nó kết hợp với các hoạt động tương tự, với các chữ số theo thứ tự ban đầu của chúng.
Số Friedman rất đẹp (VNFN), mà tôi đang phát minh ở đây, là Số Friedman đẹp có thể được viết mà không có phần kém đẹp (theo ý kiến của tôi) của một biểu thức như vậy. Dấu ngoặc đơn, nối và phủ định unary không được phép.
Đối với thử thách này, có ba cách viết biểu thức không có dấu ngoặc đơn.
Tiền tố: Điều này tương đương với tính kết hợp trái. Loại biểu thức này được viết với tất cả các toán tử ở bên trái của các chữ số. Mỗi toán tử áp dụng cho hai biểu thức sau. Ví dụ:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
Một VNFN có thể được viết theo cách này là 343:
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
Postfix: Điều này tương đương với tính kết hợp đúng. Nó giống như ký hiệu tiền tố, ngoại trừ thao tác đi bên phải các chữ số. Mỗi toán tử áp dụng cho hai biểu thức trước. Ví dụ:
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
Một VNFN có thể được viết theo cách này là 15655:
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
Infix: Ký hiệu Infix sử dụng thứ tự hoạt động tiêu chuẩn cho năm thao tác. Đối với các mục đích của thách thức, thứ tự hoạt động đó sẽ được xác định như sau: Dấu ngoặc ^
trước, bên phải kết hợp. Sau đó, ngoặc đơn *
và /
đồng thời, trái một cách kết hợp. Cuối cùng, ngoặc đơn +
và -
đồng thời, trái một cách kết hợp.
1-2-3 = (1-2)-3 = -4
2/3*2 = (2/3)*2 = 4/3
2^2^3 = 2^(2^3) = 256
1^2*3+4 = (1^2)*3+4 = 7
Một VNFN có thể được viết theo cách này là 11664:
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
Thách thức: Cho một số nguyên dương, nếu nó có thể được biểu thị dưới dạng một biểu thức không tầm thường của các chữ số của chính nó trong các ký hiệu tiền tố, ký tự hoặc hậu tố, xuất ra biểu thức đó. Nếu không, đầu ra không có gì.
Làm rõ: Nếu có thể có nhiều biểu diễn, bạn có thể xuất bất kỳ tập hợp con không trống nào của chúng. Chẳng hạn, 736 là một VNFN:
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
Hoặc cả hai tất cả sẽ là kết quả đầu ra chấp nhận được.
Biểu thức "Trivial" có nghĩa là một biểu thức không sử dụng bất kỳ toán tử nào. Điều này chỉ phù hợp với các số có một chữ số và có nghĩa là số một chữ số không thể là VNFN. Điều này được kế thừa từ định nghĩa của Số Friedman.
Câu trả lời sẽ chạy trong vài giây hoặc vài phút trên đầu vào dưới một triệu.
IO: Quy tắc IO tiêu chuẩn. Chương trình đầy đủ, chức năng, động từ hoặc tương tự. STDIN, dòng lệnh, đối số chức năng hoặc tương tự. Để xuất "Không có gì", chuỗi trống, một dòng trống null
hoặc tương tự và một bộ sưu tập trống đều ổn. Đầu ra có thể là một chuỗi được phân tách bằng một ký tự không thể có trong một biểu diễn hoặc có thể là một tập hợp các chuỗi.
Ví dụ:
127
None
343
^+343
736
736^+
7+3^6
2502
None
15655
15655^+**
11664
1*1*6^6/4
1^1*6^6/4
5
None
Ghi điểm: Đây là mã golf. Ít byte nhất sẽ thắng.
Ngoài ra, nếu bạn tìm thấy một, xin vui lòng cung cấp một Số Friedman rất đẹp trong câu trả lời của bạn.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
đang thiếu một paren gần, sau,3