0
我最近又開始做一些BF的樂趣,今天我做了一個階乘代碼,正如我所知,它與我在網上發現的很多不同。我只需要五個單元格來計算它,但不幸的是我不能輸入數字,如100例如。如何提高我的BF因子碼輸入大數字並輸出整個結果?
我想知道,如果有人有一個想法,我該怎麼做,以改善我的代碼能夠做到這一點?
編輯:A,B,C,d和E是細胞
++++ #For example we put four in input
[->+<] #Put A in B and A=0
[-] #If A=0 (which is true)
>- #Decrease B by one
[->+>+>+<<<] #Put B in C, D and E (at the end pointer is on B)
> #Move on C
[-<+>] #Put C in B and C=0
<+ #Add one in B
>>[-<<<+>>>] #Put D in A and D=0
> #Pointer move on E
[ #While
- #E is not null
<<<<
[->[->+>+<<]>[-<+>]<<]>[-]>>[-<<+>>] #Do A*B and put the result in B
>
[-<+<<<+>>>>] #Put E in A and D
<
[->+<] #Then put D in E
> #pointer goes on E to test the while condition
] #While end
<<< #If E is null go back to cell B
[-<+>] #Put B in A
< #Pointer on A at the end
預先感謝您爲您解答!
如果您需要幫助以可視化的代碼步步go there 我用最好的解釋是this one,你可以在32位執行BF和計數操作的數量。它需要兩千萬以上的十億分之一......但它確實很快。
支持人數達到100無關與您的代碼明確;它只取決於你的解釋器,以及它所支持的整數的大小。如果你要例如使用python解釋器,那麼即使對於非常高的階乘,你的代碼也會產生結果;如果你使用32位的,你會受到限制,除非你用某種方式在brainfuck中存儲bigint,並實現所需的所有算法,而且我懷疑這樣做的代碼會溢出回答的字符限制。簡而言之 - **使用支持BigInts **的解釋器。 – Uriel
> ++++++++++ >>> +> + [>>> + [ - [<<<<<[+<<<<<]>> [[ - ]> [<<+> +> - ] <[> + <-]<[> + <-[> + <-[> + <-[> + <-[> + <-[> + <-[> + <-[> + <-[> + <-[> [ - ] >>>> +> + <<<<<<-[> + < - ]]]]]]]]]]]> [<+> - ] + >>>>>] <<<<<[<<<<<]> >>>>>> [>>>>>] ++ [ - <<<<<]> >>>>> - ] + >>>>>] <[> ++ < - ] <<<< [<[ > + <-]<<<<]> > [ - > [ - ] ++++++ [<++++++++> - ] >>>>] <<<<<[<[> +> + <<-]>。 <<<<<]>。>>>>]與8位,你可以找到你想要的所有階乘.. @UrielEli –
這是如何工作的?它計算它還是隻是打印階乘(它使用ascii打印數字,而你使用內存作爲結果) – Uriel