Created
December 5, 2017 16:37
-
-
Save mattboehm/357a8c6cb9ae01c4bc7c4c3750564322 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
must be run on cell size of 16 bits or more with wrapping on inc and dec operations | |
>>>>>> | |
,[------------------------------------------------>>,] read input and convert ascii digits to data | |
data is loaded into an array with empty slots in between the data cells | |
get len | |
<<[while still on a number | |
>[-<<+>>]<<+< move len counter to the left and inc | |
] | |
go to len counter and copy to some new cells | |
>[-<<+<<+>>>>] | |
<<[--<+>] put half len into cells | |
<<[-<+>] | |
<[->+<] | |
> | |
[-->>>>+>>+<<<<<<] | |
>>>> | |
>[>>]+[<<]> add a marker to the end of the array (needed for some of the navigation below) | |
go halfway through the loop finding matches and adding to a sum stored at the end | |
hlen _sb2_ _nb1_ (counter=hlen) num counter2=hlen n2 _s1_ n3 _s2_ | |
[ | |
>num [-<<+>>] move to prev num slot | |
>c2 | |
[ | |
[->>+<<]>>- | |
]move counter2 over and dec til 0 to find num2 halfway away | |
<num2 | |
[->+>>+<<<] move num2 to next 2 slots | |
> | |
[-<<<[<<]>+>[>>]>] move num2_s1 to num1_s1 | |
>>[-<<<+>>>] move num2_s2 to num2 | |
<[<<] | |
<<[-<+>>>+<<] move num to its original place and the second slot before | |
>>[-<<+>>]move orig back to prev num slot | |
>[-<<<<->>>>] sub h from the num in sb2 | |
<+ | |
<<<[if sub is nonzero remove num mark | |
[-]>>>-<<< | |
] | |
>>> | |
[if num is marked sub was 0 and numbers are same | |
- remove mark | |
<<[->>>>[>>]>>+<<<<[<<]<<] result stored past the end of the array | |
>> | |
] | |
<<[-] clear out pnum | |
>[->>+<<]>>- move counter over and dec | |
move half counter into place | |
<<<<<[->>+>>>>>+<<<<<<<] | |
>>>>> | |
] | |
>[>>]>>sum | |
[-<++>]< double the sum | |
print to ascii | |
[>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-] | |
++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<[.[-]<]< |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment