Tugas Anda adalah membuat satu program brainfuck untuk masing-masing operator biner berikut. Setiap program harus mengambil satu atau dua angka 8-bit (A dan B) dari input dan menghitung operasi yang ditentukan:
A XOR B
A AND B
A OR B
A Shifted Left by 1 (circular shift)
NOT A
Anda tidak harus menerapkan semua 5. Skor dihitung dengan:
#totalCharacters + {4000 * #problemsNotCompleted}
Jadi skor yang valid adalah dari nol (terbaik) hingga 20.000 (tidak ada yang selesai).
Saya tidak peduli di mana Anda menyimpan hasilnya, atau apakah Anda menyimpan input atau tidak. Asumsikan sel 8-bit, dan sel kosong sebanyak yang Anda butuhkan hanya di sebelah kanan.
Anda dapat mengasumsikan angkanya sudah di lokasi memori apa pun yang paling cocok untuk Anda, sehingga Anda tidak perlu khawatir tentang operasi IO.
code-golf
binary
brainfuck
code-golf
code-golf
ascii-art
random
code-golf
code-golf
code-challenge
sorting
code-golf
code-challenge
java
code-golf
statistics
code-golf
code-challenge
fastest-code
code-golf
math
code-golf
math
kolmogorov-complexity
code-golf
code-golf
array-manipulation
combinatorics
code-golf
kolmogorov-complexity
popularity-contest
underhanded
code-golf
math
floating-point
code-golf
interpreter
code-golf
music
code-golf
code-golf
cryptography
code-challenge
scrabble
code-golf
code-challenge
popularity-contest
quine
code-golf
quine
cryptography
code-golf
kolmogorov-complexity
code-golf
printable-ascii
code-golf
chess
code-golf
math
number-theory
code-challenge
c
code-golf
random
popularity-contest
hello-world
code-shuffleboard
code-golf
compression
grammars
code-golf
tips
code-golf
sequence
code-golf
string
code-challenge
sorting
permutations
code-golf
string
code-challenge
optimization
code-golf
interpreter
code-challenge
string
code-golf
math
number
fibonacci
string
compression
c#
code-golf
chemistry
popularity-contest
math
c
c++
java
code-golf
math
function
code-golf
complex-numbers
code-golf
geometry
captncraig
sumber
sumber
Jawaban:
Nilai: 275
Ini berfungsi lebih baik untuk memperluas ini dengan penghitung biner. Bagian-bagian yang kurang intuitif berurusan dengan kemungkinan bahwa A atau B adalah 0. Saya tidak menemukan cara yang menguntungkan untuk menggunakan kontrol aliran tidak rusak dalam manipulasi bit aktual dari tiga yang pertama. Kebetulan ini semua harus bekerja dengan baik dengan sel 16-bit dan perlahan-lahan dengan 32-bit.
XOR, 86
Asumsikan A dan B berada di sel 1 dan 2, menyimpan A XOR B di sel 2, penunjuk dimulai di sel 0 dan berakhir di sel 5.
DAN 78
Asumsikan A dan B berada di sel 1 dan 2, menyimpan A OR B di sel 4, penunjuk dimulai di sel 0 dan berakhir di sel 5.
ATAU, 86
Asumsikan A dan B berada di sel 1 dan 2, menyimpan A OR B di sel 2, penunjuk dimulai di sel 0 dan berakhir di sel 5.
ROL, 18
Asumsikan A ada di sel 0, simpan A ROL 1 di sel 1, penunjuk dimulai dan berakhir di sel 0.
TIDAK, 7
Asumsikan A ada di sel 0, simpan BUKAN di sel 1, penunjuk dimulai dan berakhir di sel 0.
sumber
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:
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:
Inilah sumber untuk XOR (angka menunjukkan di mana pointer berada pada waktu itu):
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:
sumber
,>,<
. Saya akan mengedit pertanyaan.Skor (saat ini):
12038837 / -Program mengasumsikan angka dimuat dalam sel apa pun yang ditentukan, oleh
,
atau serupa. Ini juga mengasumsikan bahwa semua sel 8-bit tidak ditandai dengan pembungkus sesuai kebutuhan. Di awal setiap cuplikan, angka dimuat di sel 0 (dan 1 jika perlu).Operasi bit - 799
Operasi bit mengikuti struktur umum yang sama.
Putar Kiri A, 1 - 31 / -
Jumlahnya
A
dimuat dalam sel 0.BUKAN A - 7
Jumlahnya
A
dimuat dalam sel 0.sumber