Ihre Aufgabe ist es, ein Brainfuck-Programm für jeden der folgenden Binäroperatoren zu erstellen. Jedes Programm sollte eine oder zwei 8-Bit-Zahlen (A und B) von der Eingabe nehmen und die angegebene Operation berechnen:
A XOR B
A AND B
A OR B
A Shifted Left by 1 (circular shift)
NOT A
Sie müssen nicht alle 5 implementieren. Die Bewertung wird berechnet durch:
#totalCharacters + {4000 * #problemsNotCompleted}
Gültige Werte liegen also zwischen null (am besten) und 20.000 (nichts abgeschlossen).
Es ist mir egal, wo Sie das Ergebnis speichern oder ob Sie die Eingabe beibehalten. Nehmen Sie 8-Bit-Zellen und so viele leere Zellen an, wie Sie nur rechts benötigen.
Sie können davon ausgehen, dass sich die Nummern bereits in dem Speicher befinden, der für Sie am besten geeignet ist, sodass Sie sich nicht um E / A-Vorgänge kümmern müssen.
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
quelle
quelle
Antworten:
Ergebnis: 275
Es ist besser, diese mit einem Binärzähler zu erweitern. Die weniger intuitiven Teile befassen sich mit der Möglichkeit, dass A oder B 0 ist. Ich habe keinen rentablen Weg gefunden, die zerstörungsfreie Flusssteuerung bei der tatsächlichen Bitmanipulation der ersten drei zu verwenden. Übrigens sollten alle mit 16-Bit-Zellen und langsam mit 32-Bit funktionieren.
XOR, 86
Angenommen, A und B befinden sich in den Zellen 1 und 2, speichern A XOR B in Zelle 2, der Zeiger beginnt in Zelle 0 und endet in Zelle 5.
UND, 78
Angenommen, A und B befinden sich in den Zellen 1 und 2, speichern A ODER B in Zelle 4, der Zeiger beginnt in Zelle 0 und endet in Zelle 5.
ODER 86
Angenommen, A und B befinden sich in den Zellen 1 und 2, speichern A ODER B in Zelle 2, der Zeiger beginnt in Zelle 0 und endet in Zelle 5.
ROL, 18
Angenommen, A befindet sich in Zelle 0, speichert A ROL 1 in Zelle 1, der Zeiger beginnt und endet in Zelle 0.
NICHT, 7
Angenommen, A befindet sich in Zelle 0, speichert NOT A in Zelle 1, der Zeiger beginnt und endet in Zelle 0.
quelle
Ergebnis: 686
Alle Snippets setzen voraus, dass die Zahlen bereits in Zelle 0 und 1 geladen sind und der Zeiger auf Zelle 0 zeigt. Ich kann später ein Atoi-Snippet hinzufügen, wenn dies für die Herausforderung erforderlich ist. Im Moment können Sie den Code folgendermaßen ausprobieren:
XOR 221
Das Ergebnis wird in Zelle 10 geschrieben, der Zeiger endet in Zelle 5
UND, 209
Das Ergebnis wird in Zelle 10 geschrieben, der Zeiger endet in Zelle 5
ODER 211
Das Ergebnis wird in Zelle 10 geschrieben, der Zeiger endet in Zelle 5
Nach links drehen, 38
Ergebnis wird in Zelle 1 geschrieben, Zeiger endet in Zelle 4
NICHT, 7
Ergebnis wird in Zelle 1 geschrieben, Zeiger endet in Zelle 0
Erläuterung:
XOR, AND und OR funktionieren alle auf ähnliche Weise: Berechnen Sie n / 2 für jede Zahl und merken Sie sich n mod 2. Berechnen Sie das logische XOR / AND / OR für die einzelnen Bits. Wenn das resultierende Bit gesetzt ist, addieren Sie 2 ^ n zum Ergebnis. Wiederholen Sie das 8 Mal.
Dies ist das Speicherlayout, das ich verwendet habe:
Hier ist die Quelle für XOR (Zahlen geben an, wo sich der Zeiger zu diesem Zeitpunkt befindet):
Beim Drehen nach links befindet sich erneut eine Markierung in Zelle 2, um zu bestimmen, ob 2n Null ist, da Sie nur direkt bestimmen können, ob eine Zelle nicht Null ist. Wenn ja, wird ein Übertragsbit in Zelle 4 geschrieben und später zu 2n addiert. Dies ist das Speicherlayout:
quelle
,>,<
. Ich werde Frage bearbeiten.Ergebnis (aktuell):
12038837 / -Die Programme gehen davon aus, dass Zahlen in eine Zelle geladen werden, die von
,
oder ähnlich angegeben wurde. Es wird außerdem davon ausgegangen, dass alle Zellen 8-Bit-Zellen ohne Vorzeichen sind und nach Bedarf umbrochen werden. Zu Beginn jedes Snippets werden die Zahlen in Zelle 0 (und bei Bedarf in Zelle 1) geladen.Bitoperationen - 799
Die Bitoperationen folgen der gleichen allgemeinen Struktur.
Nach links drehen A, 1 - 31 / -
Die Nummer
A
wird in Zelle 0 geladen.NICHT A - 7
Die Nummer
A
wird in Zelle 0 geladen.quelle