Ihre Aufgabe ist es, ein Programm zu erstellen, in dem beim Löschen eines Zeichens erkannt wird, welches Zeichen gelöscht wurde, und das gelöschte Zeichen dann erneut in die eigene Quelldatei eingefügt wird.
Wenn zum Beispiel Ihr Programm RadiationHardened
geändert wurde RadiaionHardened
, muss Ihr Programm ausgeben, dass das 5. Byte (0-indiziert) geändert wurde, und anschließend muss die Programmquelle angegeben werdenRadiationHardened
unmittelbar nach der Ausführung .
Notizen und Regeln
- Sie können davon ausgehen, dass vor der Ausführung genau ein Zeichen im Quelltext gelöscht wurde. Das Verhalten für das nicht geänderte Programm ist undefiniert.
- Sie können davon ausgehen, dass das geänderte Byte gelöscht, nicht transponiert, eingefügt oder ersetzt wird.
- Im Fall eines Laufs mit mehreren Zeichen desselben Charakters können Sie entweder den ersten oder den letzten Index des Laufs melden, aber konsistent darüber sein, welchen Sie verwenden. Wenn Sie beispielsweise
baaad
gelöscht werden,baad
um entweder 1 oder 3 zu melden (mit einem Index von Null), muss dies jedoch für das gesamte Programm gleich sein. - Sie müssen nicht die gesamte Quelle in eine eigene Datei schreiben. Sie müssen nur das gelöschte Byte erneut einfügen.
- Im Gegensatz zu den typischen Regeln für strahlungsgehärtete Quines ist das Erkennen des geänderten Bytes beim Lesen des programmeigenen Quellcodes ein faires Spiel.
- Sie können den geänderten Byteindex in jedem geeigneten Format ausgeben. Seien Sie konsistent, ob es sich um eine 0-indizierte oder eine 1-indizierte oder eine andere Schreibweise handelt. Sie können sogar eine Zahl in einer Vorlagenzeichenfolge ausgeben.
Dies ist Code-Golf, also gewinnt das kürzeste Programm.
Viel Glück!
EDIT1: Anforderung von Ersetzung auf Löschung geändert
EDIT2: Regel für Dubletten hinzugefügt
code-challenge
jedes Programm eine Liste von Bytes deklarieren darf, die gegen Strahlung geschützt sind (aber nicht mehr als - sagen wir - 50% der Gesamtgröße). Ein einfaches Bewertungssystem könnte darin bestehen, jedes strahlungsgeschützte Byte als 10 Bytes zu zählen, oder so ähnlich.
*
Befehl tötet alle IPs. Cardinal kann es auch nicht, weil@
.