Herausforderung
Ich habe mich vor kurzem mit 8-Bit-Computern beschäftigt und bin fasziniert von deren und anderen Funktionen. Ziel dieses Codegolfs ist es daher, einen Teil des Woz-Monitors zu kopieren, der von Steve Wozniak für den Apple I entworfen wurde.
Sie müssen ein Array mit 22 hexadezimalen Werten mit einer Breite von zwei Bytes (min. Wert $ 10 , max. Wert $ FF ) speichern und anschließend eine n- Anzahl von Eingaben eingeben. (Normalerweise zwei; Sprachen wie Brainfuck könnten es schwer haben).
Die Eingaben beziehen sich auf die Position im Array, von der aus der Druckvorgang gestartet werden soll, und auf die Position, an der angehalten werden soll. Bei einer Eingabe mit definiertem Verhalten ist der Startwert kleiner oder gleich dem Endwert. Ihr Programm muss dann in der Lage sein, jeden Hexadezimalwert zwischen und einschließlich der eingegebenen Hexadezimalwerte zu drucken.
Ein Beispiel dafür:
Array
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15
Values
FF F4 B6 D7 40 00 00 A4 F0 00 FF 0D 9C 21 65 C4 02 28 90 E7 D6 A5
input first num:
04
input second num:
14
40 00 00 A4 F0 00 FF 0D 9C 21 65 C4 02 28 90 E7 D6
Der interessante Teil dieser Übung besteht nun darin, dass Sie nach Belieben die Grenzen der Benutzereingaben überprüfen können. Personeneingaben hello
und Ihr Programm hat undefiniertes Verhalten? Es wird ohne Vorankündigung beendet? Sie sind beide gültig.
Die einzigen Regeln sind:
1. Sie müssen die Werte der 22 Hexadezimalwerte als Teil Ihres Programms angeben, bevor es gestartet wird (der Benutzer kann keine Eingaben anfordern).
2. Die Ausgabe der Hexadezimalwerte muss genau dem Format entsprechen:
00 FF 00 FF 00
Nachgestellte Leerzeichen, Tabulatoren oder Zeilen sind in Ordnung. Charaktere sind nicht.
3. Das Programm muss nicht mit einer Meldung nach den Eingaben fragen. Lassen Sie die "Nachricht" leer, wenn Sie möchten. Der Benutzer muss jedoch die Hex-Grenzen eingeben.
4. Wie bei den Werten der 22 Hexadezimalzahlen zu entscheiden ist, müssen Sie ein Programm erstellen, das die Werte tatsächlich aus dem Speicher abruft, anstatt ein Programm durch einfaches Drucken von Werten nachzuahmen . (wie eine Liste von $ 00 ).
5. n-Anzahl der Eingaben bezieht sich auf die Anzahl der Eingaben, die für die Sprache Ihrer Wahl erforderlich sind, um ein Hexadezimal mit einer Breite von zwei Bytes zu erkennen. z.B. (Brainfuck benötigt zwei Eingänge pro Hex, also vier für die beiden).
Fühlen Sie sich frei zu kommentieren, wenn Sie Klarstellung benötigen.
Dies ist Codegolf, daher ist die kürzeste Antwort in der Anzahl der Bytes der Gewinner.
Bestenliste
Hier ist eine Rangliste mit freundlicher Genehmigung von Martin Ender .
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
n
da Brainfuck keine 2-Zeichen-Zeichenfolge aufnehmen kann, müssten Sie das erste Byte, dann das zweite für den ersten Wert und dann das zweite für den zweiten Wert erneut eingeben, insgesamt 4 Eingaben. Sie können beliebig viele sein.