Abstract Rewriting Challenge (Räuber)

9

Dies ist ein etwas -ähnlichen Herausforderung. Dies ist der Faden der Räuber; Der Thread der Polizei ist hier .

Räuber

Die Cops werden abstrakte Umschreibungssysteme veröffentlichen. Ihre Aufgabe ist es, ihre Übermittlungen zu knacken, indem Sie beweisen, dass die Zielzeichenfolge von der Quellzeichenfolge aus erreicht werden kann oder nicht, indem Sie ihre Umschreiberegeln anwenden. (Sie können dies entweder tun, indem Sie eine Folge von Umschreiberegeln veröffentlichen, die mit der Quellzeichenfolge beginnt und mit dem Ziel endet, oder indem Sie mathematisch nachweisen, dass dies vorhanden ist oder nicht.)

Einzelheiten und Definitionen finden Sie im Thread der Polizei .

Nathaniel
quelle
Do'h! Ich habe die falsche Frage mit einem Kopfgeld belegt, dies sollte die Herausforderung der Polizei sein. Also wird jemand ein zufälliges Kopfgeld bekommen.
Nathaniel
Keine Sorge, ich habe das Kopfgeld zurückerstattet.
James
@DJMcMayhem: Huh ... aus diesem Grund listet die SE-API diese Frage als vorgestellt auf, jedoch ohne Kopfgeldbetrag oder Abschlussdatum. : o Na ja, Zeit, meinem Benutzerskript eine Eingabevalidierung hinzuzufügen.
Ilmari Karonen

Antworten:

16

jimmy23013

Lassen Sie uns für diesen Fall rückwärts arbeiten. Wir wandeln zuerst die Ziffern in ihre binären Darstellungen um. Wir gehen von VW626206555675126212043640270477001760465526277571600601nach VW++__+_++__+____++_+_++_++_+++_++++_+__+_+_++__+___+_+____+___++++_+______+_+++___+__++++++________++++++____+__++_+_++_+_+_++__+_+++++++_++++__+++_______++______+. Als nächstes wenden wir die Umkehrung von DCW:W+und an, DW:W_bis wir alle Symbole gelöscht haben. Unser Ergebnis ist jetzt VDCDCDDDCDDCDCDDDCDDDDDCDCDDCDDCDCDDCDCDDCDCDCDDCDCDCDCDDCDDDCDDCDDCDCDDDCDDDDCDDCDDDDDCDDDDCDCDCDCDDCDDDDDDDCDDCDCDCDDDDCDDDCDCDCDCDCDCDDDDDDDDDCDCDCDCDCDCDDDDDCDDDCDCDDCDDCDCDDCDDCDDCDCDDDCDDCDCDCDCDCDCDCDDCDCDCDCDDDCDCDCDDDDDDDDCDCDDDDDDDCW. Wir wollen jetzt, dass diese Zeichenfolge übereinstimmt VD+C+W. Das heißt, wir möchten alle Ds links von allen Cs verschieben. Dies kann durch Umkehren erfolgen DCC:CD. Dazu wiederholen wir den folgenden Algorithmus:

  1. Suchen Sie den ersten Drechts von einem Block von Cs.
  2. Bewegen Sie den Dnach links von diesem Block.
  3. Verdoppeln Sie die Anzahl von Cs.

Durch einige Berechnungen können wir feststellen, dass wir 123 Ds und 4638704741628490670592103344196019722536654143873 Cs erhalten werden (Sie hatten Recht damit, dass dies nicht in eine SE-Antwort passt ... Ich bezweifle, dass dies passen würde, wenn es als Zustände aller Atome auf der Erde gespeichert würde kombiniert: P).

Wenn wir weiterhin das Gegenteil von anwenden V:VD, können wir Djetzt alle s loswerden , also bekommen wir VCCC.......CCCW. Wir wandeln den VRücken in um YZ. Jetzt haben wir YZCCC.......CCCW.

Wir wollen in der Lage sein, alle Cs loszuwerden und sie in der Form zu haben YAAA...AAABBB...BBBZW. Glücklicherweise kann dies mit der folgenden Methode erfolgen. Erstens wenden wir YB:Y587912508217580921743211 mal invers an, um zu erhalten YBBB.......BBBZCCC.......CCCW. Dann wiederholen wir die folgende Abfolge von Schritten (wobei [?*]eine beliebige Anzahl von ?, nicht notwendigerweise größer als Null, bedeutet):

  1. CZ:ZCUmgekehrt 587912508217580921743211 mal anwenden , um zu erhaltenY[A*]BBB.......BBBCCC.......CCCZCCC.......CCCW
  2. Umgekehrt CB:BCviele Male anwenden , um zu erhaltenY[A*]BCBCBC.......BCBCBCZCCC.......CCCW
  3. Invers anwenden AZ:Zund AB:BCAoft zu bekommenY[A*]ABBB.......BBBZCCC.......CCCW

Durch Induktion sehen wir, dass wir die BZKombination bis zum Ende verschieben können (außer vor dem W), und dann ist die Anzahl von As 1/587912508217580921743211 der Anzahl von Cs, so dass wir 7890127658096618386747843 As haben. Wir haben jetzt YAAA.......AAABBB.......BBBZW. Konvertieren Sie den ZWRücken in a U, wenden Sie ihn dann U:BUmehrmals invers an, um nur 2 Bs zu behalten, und konvertieren Sie ihn dann BBUin a T, und Sie haben jetzt YAAA.......AAAT. Dann können Sie T:AAAAATviele Male invers anwenden , um zu erhalten, YAAATweil die Anzahl von As 3 größer war als ein Vielfaches von 5.

Danke für die Herausforderung!

HyperNeutrino
quelle
Wird irgendwo angegeben oder ist standardmäßig die umgekehrte Anwendung zulässig?
Weijun Zhou
2
@WeijunZhou Ich meine, wenn man sich A:Bauf ABCgibt BBC, ist es offensichtlich, dass das Anwenden der Umkehrung von A:Bauf BBCgeben kann ABC. Es wird nicht ausdrücklich angegeben, dass es erlaubt ist, aber ich kann einfach meine Schritte umkehren und eine "konventionelle" Lösung haben. Es ist nur einfacher, IMO rückwärts zu gehen.
HyperNeutrino
Ich meine zum Beispiel, wenn es nur eine Regel gibt A:Bund nicht angegeben ist, dass die umgekehrte Anwendung zulässig ist, dann denke ich nicht, dass Sie von BBCzu gehen können ABC. Dieser spezielle Fall kann anders sein und es gibt einen Weg in die andere Richtung. Ich werde es später überprüfen.
Weijun Zhou
2
@ HyperNeutrino ^^
Weijun Zhou
1
Mit welchem ​​Programm haben Sie dies berücksichtigt und wie lange hat es gedauert?
user202729
9

Boboquack

Nehmen Sie für eine bestimmte Zeichenfolge alle Buchstaben (a = 0, b = 1, c = 2), fassen Sie sie zusammen und nehmen Sie das Modulo 3. Dann ändert keine der Umschreiberegeln diesen Wert. Die Quellzeichenfolge hat den Wert 1 und das Ziel den Wert 2. Daher wird die Quellzeichenfolge durch keine Kombination von Regeln in die Zielzeichenfolge umgewandelt.

bb94
quelle
9

Feersum

Dies ist ein Sokoban-Puzzle. Die Ausgangsposition ist:

          ___#
#___####_____#
#_#_#_##_#_!##
##______##_###
##__####_#_###
###__###__

Die Endposition ist:

          ___#
#___####_____#
#_#_#_##_#_###
##____!__#_###
##__####_#_###
###__###__

Es kann mit der folgenden Tastenfolge gelöst werden:

←← → ↓↓ ← ↑ ←←←←←← ↓↓ → ↑ ← ↑↑↑ ←← ↓ → ↑ → ↓↓ →→→→→→ ↓ → ↑↑ ↓↓ ← ↓ ← ↑ → ↑ ←←← ← ↑ ←← ↓ →→→→→ ↓ →→ ↑↑ → ↑↑ ← ↓ ←← ↓↓ → ↑ ← ↑ →→ ↑ →→ ↓ ← ↓ ←← ↓↓ → ↑ ←←←←←←← ↑ ↑ ← ↓ → ↓ → ↓ ↓ ← ↑ ← ↑ → ↑ ↑ ← ↓ ↑ → ↑ → ↓ ← ↓ → ↑ → → Bungal ↓ ↑↑ → ↑ →→ ↓ ← ↓ ← ↓ ←← ↑↑ →→ ↑ → ↓ ← ↓↓ ←←←←← ↑ ←← ↓ →→→→→ ←←←←← ↑↑ ←← ↓ →→ ↓↓ ← ↑ → Bungional Bungal

Hier ist ein Bash-Programm, das die Tastenfolge in sed-Befehle konvertiert und diese anwendet. Die sed-Befehle enthalten nur das Ersetzen von Befehlen mithilfe der in der Antwort des Cop definierten Umschreiberegeln sowie Beschriftungs- und Verzweigungsbefehle, die die Zeichenfolge nicht ändern. Es bestätigt, dass Sie die Zielzeichenfolge nur mit den Umschreiberegeln abrufen können.

s="___##___####_____##_#_#_##_#_!####______##_#####__####_#_######__###__"
input=

while
    printf '\n%80s\n' "$s"|fold -w14
    read -n 1
    [ "$REPLY" = $'\e' ]
do
    read -n 2
    case "$REPLY" in
    [A)
        s="$(sed '
s:!:wLW_:
        :a
s:L:<<<<<<<<<<<<<:
s:#w<:w#:
s:_w<:w_:
s:_<:<_:
s:#<:<#:
s:#wW:wLX!:
s:_W:W_:
s:#W:W#:
s:_wW:!:
s:_X:X_:
s:#X:X#:
s:_wX:#:
        ta' <<<"$s")";;
    [B)
        s="$(sed '
s:!:_VRv:
        :a
s:R:>>>>>>>>>>>>>:
s:>v#:#v:
s:>v_:_v:
s:>_:_>:
s:>#:#>:
s:Vv#:!URv:
s:U_:_U:
s:U#:#U:
s:Uv_:#:
s:V_:_V:
s:V#:#V:
s:Vv_:!:
        ta' <<<"$s")";;
    [C)
        s="$(sed '
s:!#_:_!#:
        te
s:!_:_!:
        :e' <<<"$s")";;
    [D)
        s="$(sed '
s:_#!:#!_:
        te
s:_!:!_:
        :e' <<<"$s")";;
    esac
    input="$input${REPLY:1}"
done

echo "$input"

Probieren Sie es online aus!

Probieren Sie es online aus (mit entferntem Escape-Code)!

Für Auf und Ab !:wLW_oder !:_VRvwird einmal entsprechend angewendet, und die entsprechenden Regeln werden wiederholt angewendet, bis die !wieder erscheinen. Für richtig wird eines von !#_:_!#und !_:_!angewendet. Für links wird eines von _#!:#!_und _!:!_angewendet.

Siehe die Ausgabe in den Links für die Position nach jeder Bewegung.

jimmy23013
quelle
6

xnor

Regel 1 x:xn Regel 2 no:oon Regel 3 nr:r Regel 4ooooooooooo:

Wir verwenden [X,Y]einen Lauf von Y , um anzuzeigen , Xs

Ausgehend von xn[o,A]r,

  1. Anwendung von Regel 2, sobald wir haben x[o,2]n[o,A-1]r.
  2. Wir wenden noch einmal Regel 2 an x[o,4]n[o,A-2]r
  3. Anwenden, bis das os zwischen nund r0 wird, haben wir x[o,2*A]nr.
  4. Anwendung von Regel 3, sobald wir haben x[o,2*A]r.
  5. Anwendung von Regel 1, sobald wir haben xn[o,2*A]r.

Wir haben also einen Algorithmus, von xn[o,A]rdem aus generiert werden kann xn[o,2*A]r.

Ausgehend von der xnor = xn[o,1]r10-fachen Wiederholung des Algorithmus - außer in der 10. Schleife halten wir bei Schritt 4 an x[o,1024]r.

Bei Anwendung von Regel 4 werden 1023 = 11 * 93 os gelöscht xor.

Shieru Asakoto
quelle
2

VortexYT

Es gibt keine Möglichkeit, Fs zu eliminieren, ohne andere Zeichen zu erstellen / zu verwenden. Daher müssen wir I:Fals letzten Schritt das Ziel erreichen. Keine Regel gibt eine Single Iohne andere unerwünschte Zeichen an, sodass Sie nicht zur Zielzeichenfolge gelangen können.

Wenn Sie versuchen, von der Quelle aus rückwärts zuzuordnen, können Sie nur von Fzu gelangen , Ibevor Sie keine weiteren Optionen mehr haben.

HyperNeutrino
quelle
Ooch, das tut weh. Es gibt jedoch eine andere Lösung ...
VortexYT
@VortexYT oh wirklich, gibt es? hm, wusste es nicht. aber ja, das Ziel kann nicht mehr als einen Schritt
zurückbilden,
2x einfacher um genau zu sein
VortexYT