Einführung
Nehmen wir für einen Moment an, dass die Vipern und die Klippe nur zwei statt drei Schritte entfernt sind.
o
---
Hsss! |
';;' ___ /_\ ___ _
|
Sie sind leider ein Gefangener eines sadistischen Folterers. Sie müssen in jeder Kurve einen Schritt nach links oder rechts machen. Wenn Sie dies nicht tun, werden Sie sofort erschossen. Sie können Ihre Schritte im Voraus planen, aber sobald Sie den ersten Schritt getan haben, können Sie Ihren Plan nicht mehr ändern. (Und auch nicht trödeln; sie werden dich erschießen.)
Plötzlich kommt eine gute Idee in den Sinn ...
Ah! Ich kann einfach abwechselnd nach rechts und links gehen! Schritt nach rechts, Schritt nach links, Schritt nach rechts, Schritt nach links und so weiter ...
Ah ah ah, nicht so schnell. Wie gesagt, der Folterer ist sadistisch. Sie können wählen, ob Sie jeden Schritt, jeden zweiten Schritt oder jeden dritten Schritt und so weiter machen. Wenn Sie also naiv die Reihenfolge wählen RLRLRL...
, können Sie gezwungen werden, jeden zweiten Schritt zu machen, der mit beginnt LL
. Oh oh! Du wurdest von Vipern gebissen! Die Dunkelheit überflutet dich und alles andere verschwindet ...
Eigentlich nein, du bist noch nicht tot. Sie müssen sich noch Ihren Plan ausdenken. Nachdem Sie ein paar Minuten darüber nachgedacht haben, stellen Sie fest, dass Sie zum Scheitern verurteilt sind. Es gibt keine Möglichkeit, eine Reihe von Schritten zu planen, die Ihr Überleben garantieren. Das Beste, was Sie sich einfallen lassen können, ist RLLRLRRLLRR
. 1 Elf sichere Schritte und nicht mehr. Wenn der zwölfte Schritt ist R
, veranlasst der Folterer Sie, jeden Schritt auszuführen, und die letzten drei Schritte schicken Sie von der Klippe. Wenn der zwölfte Schritt ist L
, wird der Folterer Sie veranlassen, jeden dritten Schritt zu machen ( LRLL
), was Sie direkt in die Brut der Vipern und ihrer tödlichen Bisse bringt.
Sie wählen R
als zwölften Schritt, in der Hoffnung, Ihren Tod so lange wie möglich zu verzögern. Wenn der Wind in Ihren Ohren brüllt, wundern Sie sich…
Was wäre, wenn ich drei Schritte hätte?
Spoiler Alarm!
Du würdest immer noch sterben. Wie sich herausstellt, gibt es unabhängig von der Anzahl der Schritte einen Punkt, an dem Ihr Folterer eine Reihe von Schritten ausführen kann, um sicherzustellen, dass Sie Ihrem tödlichen Schicksal begegnen. 2 Wenn die Vipern und die Klippe drei Schritte entfernt sind, können Sie insgesamt 1160 sichere Schritte ausführen, und wenn sie vier Schritte entfernt sind, gibt es mindestens 13.000 sichere Schritte! 3
Die Herausforderung
Geben Sie bei einer einzelnen Ganzzahl n < 13000
eine Folge n
sicherer Schritte aus, vorausgesetzt, die Klippe und die Viper sind vier Schritte entfernt.
Regeln
- Kann entweder ein vollständiges Programm oder eine Funktion sein.
- Die Eingabe kann über STDIN oder ein Äquivalent oder als Funktionsargument erfolgen.
- Output müssen zwei verschiedene Zeichen (die sein kann
+/-
,R/L
,1/0
, etc.). - Beliebige Leerzeichen in der Ausgabe spielen keine Rolle.
- Das Hardcodieren einer Lösung ist nicht zulässig. Das würde diese Herausforderung trivialisieren.
- Ihr Programm sollte (theoretisch) in angemessener Zeit beendet sein. Wie in,
n=13000
könnte wie ein Monat dauern, aber es sollte nicht mehr als tausend Jahre dauern. Das heißt, keine rohe Gewalt. (Nun, zumindest versuchen Sie es zu vermeiden.) - Lebensbonus: Geben Sie eine Reihe von
2000
sicheren Schritten. Wenn Sie dies tun, wird der Folterer von Ihrer Hartnäckigkeit, Ausdauer und Voraussicht so beeindruckt sein, dass er Sie am Leben lässt. Diesmal. (Behandeln Sie diese Sequenz als Binärzahl und geben Sie das Dezimaläquivalent für die Überprüfung an. Dies dient zur Belohnung von Antworten, die schnell abgeschlossen werden, da die Beantwortung sehr lange dauern kann.) - Punktzahl: Bytes , sofern Sie sich nicht für den Bonus qualifizieren - multiplizieren Sie mit 0,75 .
1 Es gibt eine gute Erklärung für dieses Problem und eine "Lösung" durch einen der Stars von Numberphile, James Grime, auf seinem YouTube-Kanal hier: https://www.youtube.com/watch?v=pFHsrCNtJu4 .
2 Diese 80 Jahre alte Vermutung, bekannt als Erdos 'Diskrepanzproblem, wurde erst kürzlich von Terence Tao bewiesen. Hier ist ein sehr schöner Artikel im Quanta Magazine dazu: https://www.quantamagazine.org/20151001-tao-erdos-discrepancy-problem/ .
3 Quelle: Ein SAT-Angriff auf die Erdos-Diskrepanz-Vermutung von Boris Konev und Alexei Lisitsa. Abgerufen von hier: http://arxiv.org/pdf/1402.2184v2.pdf .
n=13000
innerhalb eines Jahres, vielleicht zehn, damit umzugehen. Wirst du einen Monat warten n=2000
? Wahrscheinlich nicht. Und wenn ja , dann haben Sie den Bonus trotzdem verdient.
n=13000
, werden die ersten 2000 Anweisungen davon einen Bonus gewinnen? Scheint sinnlos, also hast du wahrscheinlich etwas anderes gemeint?