?'+)=:!@/*"*'6/{=+'+}/{
Hãy thử trực tuyến!
Giải trình
Mở ra:
? ' + )
= : ! @ /
* " * ' 6 /
{ = + ' + } /
{ . . . . .
. . . . .
. . . .
Đây thực sự chỉ là một chương trình tuyến tính với việc /
sử dụng cho một số chuyển hướng. Mã tuyến tính là:
?'+){=+'+}*"*'6{=:!@
Mà tính n (n + 1) (2n + 1) / 6 . Nó sử dụng các cạnh bộ nhớ sau:
Trong đó điểm bộ nhớ (MP) bắt đầu trên cạnh có nhãn n , chỉ về hướng bắc.
? Read input into edge labelled 'n'.
' Move MP backwards onto edge labelled 'n+1'.
+ Copy 'n' into 'n+1'.
) Increment the value (so that it actually stores the value n+1).
{= Move MP forwards onto edge labelled 'temp' and turn around to face
edges 'n' and 'n+1'.
+ Add 'n' and 'n+1' into edge 'temp', so that it stores the value 2n+1.
' Move MP backwards onto edge labelled '2n+1'.
+ Copy the value 2n+1 into this edge.
} Move MP forwards onto 'temp' again.
* Multiply 'n' and 'n+1' into edge 'temp', so that it stores the value
n(n+1).
" Move MP backwards onto edge labelled 'product'.
* Multiply 'temp' and '2n+1' into edge 'product', so that it stores the
value n(n+1)(2n+1).
' Move MP backwards onto edge labelled '6'.
6 Store an actual 6 there.
{= Move MP forwards onto edge labelled 'result' and turn around, so that
the MP faces edges 'product' and '6'.
: Divide 'product' by '6' into 'result', so that it stores the value
n(n+1)(2n+1)/6, i.e. the actual result.
! Print the result.
@ Terminate the program.
Về lý thuyết, có thể điều chỉnh chương trình này thành chiều dài 3, vì /
không cần thiết cho tính toán, nên :
có thể sử dụng lại để chấm dứt chương trình và một số '"=+*{
có thể được sử dụng lại, mang lại số lượng yêu cầu các lệnh dưới 19 (mức tối đa cho chiều dài phụ 3). Tôi nghi ngờ rằng có thể tìm thấy một giải pháp như vậy bằng tay, nếu một trong tất cả.
f(1) == 1 * 1 (1)
vàf(24) == 70 * 70 (4900)
.