Ihre Aufgabe ist es, einen Code zu schreiben, der die aktuelle Zelle in der Brainfuck-Variante auf Null setzt. Dabei kann jede Zelle anstelle der normalen 0 bis 255 eine vorzeichenbehaftete Ganzzahl von beliebig großer Größe enthalten .
Sie können davon ausgehen , gibt es l Zellen links und r Zellen rechts von der aktuellen Zelle , die anfänglich Null ist. Ihr Programm darf nur auf diese l + r + 1-Zellen zugreifen . Nachdem Ihr Code beendet ist, sollten die l + r zusätzlichen Zellen Null und der Zeiger auf die aktuelle Zelle an der ursprünglichen Position belassen.
Sie dürfen keine Ein- / Ausgänge verwenden.
Der Code mit dem kleinsten l + r gewinnt. Bei Gleichstand gewinnt der kürzeste Code. Es wird empfohlen, auch die zeitliche Komplexität Ihres Programms als Referenz anzugeben, wobei n der absolute Wert der ursprünglichen Ganzzahl in der aktuellen Zelle ist.
Nützliche Hilfsmittel
Sie können ein Brainfuck-Programm in dieser Variante mit diesem Interpreter auf TIO von mbomb007 testen .
Sie können in dieser Antwort auch den Interpreter von boothby verwenden (andere Python-Antworten funktionieren wahrscheinlich auch, aber ich habe nicht getestet).
quelle
Antworten:
l + r = 0 + 2 = 2,
555351 Bytesl + r = 1 + 2 = 3,
46,44 BytesMein eigener Algorithmus. Der Zeiger sollte an der Zahl beginnen, die auf Null gesetzt werden muss. Die zeitliche Komplexität ist O (n ^ 2).
Wie es funktioniert:
n
.n+1
.n+1-2 = n-1
n-1+3 = n+2
.n+2-4 = n-2
.Wir wiederholen den Vorgang und erhöhen die In- / Dekrementierung bei jedem Schritt, bis wir null bekommen.
quelle
l + r = 0 + 2 = 2; 58 Bytes
Die Komplexität ist O (n ^ 2).
Das Folgende ist mein Testprogramm-Generator, so dass Sie sehen können, dass ich tatsächlich versucht habe, es zu testen, falls es nicht funktioniert ...
quelle