Herausforderung
Gehen Sie bei zwei Zeichenfolgen in einem beliebigen Standard-E / A-Format wie folgt vor:
HINWEIS: Die Herausforderung bezieht sich auf die erste Zeichenfolge als "Daten" und die zweite als "Programm".
- Ändern Sie das Programm in eine unendliche Zeichenfolge, die nur das Programm ist, das unendlich wiederholt wird (z . B.
10->1010101010...). Die Herausforderung wird dies als "unendliches Programm" bezeichnen. Während die Daten nicht leer sind, gehen Sie wie folgt vor, während Sie das Endlosprogramm durchlaufen:
ein. Wenn der aktuelle Befehl "0" ist, löschen Sie das Bit ganz links in den Daten. Wenn die Daten leer sind, macht "0" nichts.
b. Wenn der aktuelle Befehl "1" ist, hängen Sie das nächste Zeichen im Programm an die Daten an, wenn das Bit ganz links in den Daten eine Eins ist.
c. Wenn die Daten jetzt nicht leer sind, geben Sie die Daten aus.
Testfälle
Daten sind die linke Seite der Eingabe und das Programm ist die rechte Seite.
100, 0 --> 00, 0
1111, 1 --> 11111, 111111, 1111111, ...
10, 011 --> 0, 0, 0
1110, 011 --> 110, 1101, 11010, 1010...
Anmerkungen
- Die Daten und das Programm bestehen nur aus Nullen und Einsen
- Für Daten / Programme, die nicht angehalten werden, muss Ihr Programm nicht angehalten werden.
- Die Daten und das Programm sind in der Eingabe nicht leer.
- Möglicherweise haben Sie mehrere nachfolgende und führende Zeilenumbrüche
- Standardlücken sind verboten
- Sie können jedes bequeme E / A-Format verwenden
Wie immer mit Code-Golf , kürzestem Code gewinnt !
100geht an 10auf cmd 0, deren Definition „löschen Sie das am weitesten links gelegene Bit in den Daten.“ wäre nicht das Bit ganz links 100sein 1?