Nilai: 686
Semua potongan mengasumsikan bahwa angka-angka sudah dimuat dalam sel 0 dan 1 dan bahwa pointer menunjuk ke sel 0. Saya dapat menambahkan potongan atoi nanti jika itu diperlukan untuk tantangan. Untuk saat ini, Anda dapat mencoba kode seperti ini:
+++++++++> number 1
++++< number 2
XOR, 221
Hasilnya ditulis ke sel 10, penunjuk berakhir di sel 5
>>>>>++++++++[-<<<<<[->>+<<[->>->+<]>>[->>>>+<<]<<<<]>>>[-<<<+>>>]<<[->+<[->->+>
>>>>]>[->>>>>+>>]<<<<<<<<]>>[-<<+>>]>>>[->>+<<]>[>[-<->]<[->+<]]>[[-]<<<[->+>-<<
]>[-<+>]+>+++++++[-<[->>++<<]>>[-<<+>>]<]<[->>>>+<<<<]>>]<<<]
DAN, 209
Hasilnya ditulis ke sel 10, penunjuk berakhir di sel 5
>>>>>++++++++[-<<<<<[->>+<<[->>->+<]>>[->>>>+<<]<<<<]>>>[-<<<+>>>]<<[->+<[->->+>
>>>>]>[->>>>>+>>]<<<<<<<<]>>[-<<+>>]>>>[->[->+<]<]>[-]>[-<<<[->+>-<<]>[-<+>]+>++
+++++[-<[->>++<<]>>[-<<+>>]<]<[->>>>+<<<<]>>]<<<]
ATAU, 211
Hasilnya ditulis ke sel 10, penunjuk berakhir di sel 5
>>>>>++++++++[-<<<<<[->>+<<[->>->+<]>>[->>>>+<<]<<<<]>>>[-<<<+>>>]<<[->+<[->->+>
>>>>]>[->>>>>+>>]<<<<<<<<]>>[-<<+>>]>>>[->>+<<]>[->+<]>[[-]<<<[->+>-<<]>[-<+>]+>
+++++++[-<[->>++<<]>>[-<<+>>]<]<[->>>>+<<<<]>>]<<<]
Putar Kiri, 38
Hasil ditulis ke sel 1, penunjuk berakhir di sel 4
[->++>+<[>-]>[->>+<]<<<]>>>>[-<<<+>>>]
TIDAK, 7
Hasil ditulis ke sel 1, penunjuk berakhir di sel 0
+[+>+<]
Penjelasan:
XOR, AND dan OR semua bekerja dengan cara yang sama: Hitung n / 2 untuk setiap angka dan ingat n mod 2. Hitung XOR logis / DAN / ATAU untuk bit tunggal. Jika bit yang dihasilkan diatur, tambahkan 2 ^ n ke hasilnya. Ulangi itu 8 kali.
Ini adalah tata letak memori yang saya gunakan:
0 1 2 3 4 5 6 7
n1 | n2 | marker | n/2 | 0 | counter | bit1 | bit2 |
8 9 10
temp | temp | result
Inilah sumber untuk XOR (angka menunjukkan di mana pointer berada pada waktu itu):
>>>>>
++++ ++++ counter
[
-
<<<<<
divide n1 by two
[ 0
-
>>+ set marker 2
<< 0
[->>->+<] dec marker inc n/2
>> 2 or 4
[->>>>+<<]
<<<<
]
>>>
[-<<<+>>>]
<<
divide n2 by two
[ 1
-
>+ set marker 2
< 1
[->->+>>>>>] dec marker inc n/2
> 2 or 9
[->>>>>+>>]
<<<< <<<<
]
>>[-<<+>>] 3
>>> 6
[->>+<<]>[>[-<->]<[->+<]]> one bit xor 8
[
[-]<<< 5
[->+>-<<] copy counter negative
> 6
[-<+>]
+> 7
++++ +++ cell 6 contains a one and cell 7 how many bits to shift
[-<[->>++<<]>>[-<<+>>]<] 2^n
< 6
[->>>>+<<<<]
>> 8
]
<<<
]
Untuk rotate kiri, sekali lagi ada penanda di sel 2 untuk menentukan apakah 2n adalah nol, karena Anda hanya dapat menentukan apakah sel tersebut bukan nol secara langsung. Jika demikian, bit carry ditulis ke sel 4 dan kemudian ditambahkan ke 2n. Ini adalah susunan memori:
0 1 2 3 4
n | 2n | marker | 0 | carry