?'+)=:!@/*"*'6/{=+'+}/{
온라인으로 사용해보십시오!
설명
펼쳐진 :
? ' + )
= : ! @ /
* " * ' 6 /
{ = + ' + } /
{ . . . . .
. . . . .
. . . .
이것은 실제로 /
일부 리디렉션에 사용되는 선형 프로그램입니다 . 선형 코드는 다음과 같습니다.
?'+){=+'+}*"*'6{=:!@
어떤 계산하여 N (N + 1) (2N + 1) / 6 . 다음과 같은 메모리 에지를 사용합니다.
메모리 포인트 (MP)가 n으로 표시된 가장자리에서 시작하여 북쪽을 가리 킵니다.
? 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.
이론적 으로이 프로그램을 측면 길이 3에 맞추는 것이 가능할 수 있습니다. 왜냐하면 /
계산에 필요하지 않기 때문에 :
프로그램을 종료하는 데 재사용 할 수 있으며 일부는 '"=+*{
재사용 할 수 있기 때문에 필요한 수를 가져 오는 것입니다 19 미만의 명령 (측면 길이 3의 최대 값). 그래도 그러한 솔루션을 찾을 수 없다면 의심 할 여지가 없습니다.
f(1) == 1 * 1 (1)
하고f(24) == 70 * 70 (4900)
.