Warnung: Diese Herausforderung enthält einige milde Spoiler für The Secret of Monkey Island.
Gegen Ende des Spiels werden Sie von einem magisch erhaltenen Kopf eines Navigators durch die Katakomben geführt:
Sie brauchen die Augapfelkette, aber der Kopf zögert, sie Ihnen zu geben. Eine Möglichkeit, es zu bekommen, besteht darin, weiter zu betteln:
Guybrush: Darf ich bitte diese Halskette haben?
Leiter: Nein, aber danke, dass Sie so höflich gefragt haben.
Guybrush: Ach komm schon, bitte?
Kopf: Du kannst betteln, was du willst, aber du kannst es nicht haben.
Guybrush: Bitte schön?
Kopf: Du kannst betteln, was du willst, aber du kannst es nicht haben.
Guybrush: Ziemlich hübsch bitte?
Kopf: Du kannst betteln, was du willst, aber du kannst es nicht haben.
Guybrush: Ziemlich bitte mit Zucker oben drauf ?
Kopf: Oh, alles klar, du großes Baby. Du kannst es haben. Hey, was nützt eine Halskette, wenn du keine Schultern hast?
Die Herausforderung
Schreiben Sie ein vollständiges Programm, das den obigen Dialog druckt. Der Haken ist, dass jedes Mal, wenn das Programm aufgerufen wird, nur zwei Zeilen gedruckt werden sollten (eine von Guybrush und die Antwort des Leiters). Wenn Ihre Einreichung beispielsweise in Python geschrieben ist, sollte die Verwendung folgendermaßen aussehen:
$> python please.py
Guybrush: May I please have that necklace?
Head: No, but thanks for asking so politely.
$> python please.py
Guybrush: Oh come on, pleeeeease?
Head: You can beg all you want, but you can't have it.
$> python please.py
Guybrush: Pretty please?
Head: You can beg all you want, but you can't have it.
$> python please.py
Guybrush: Pretty PRETTY please?
Head: You can beg all you want, but you can't have it.
$> python please.py
Guybrush: Pretty please with sugar on top?
Head: Oh, all right, you big baby. You can have it. Hey, what good's a necklace if you don't have shoulders?
Das mehrmalige Aufrufen des Programms kann zu einem undefinierten Verhalten führen. Sie können also entweder eine Schleife ausführen, die letzten beiden Zeilen weiter drucken oder das Programm kann nach dem 5. Aufruf sogar unterbrochen werden.
Sie können in eine Datei im Arbeitsverzeichnis schreiben oder den Quellcode des Programms selbst ändern, um Aufrufe zu verfolgen. Im letzteren Fall darf Ihr Programm nicht von seinem eigenen Dateinamen abhängen. (Im ersteren Fall können Sie davon ausgehen, dass der Dateiname Ihres Programms nicht mit Dateinamen kollidiert, von denen Ihr Programm abhängt.)
Sie dürfen nicht von einer REPL-ähnlichen Umgebung ausgehen oder davon ausgehen, dass zwischen den Aufrufen Daten im RAM gespeichert werden. Wenn Sie beispielsweise in Mathematica antworten, müssen Sie davon ausgehen, dass ich den Kernel zwischen den Aufrufen verlassen habe.
Dies ist Code Golf, die kürzeste Antwort (in Bytes) gewinnt. Wenn Ihr Programm von zusätzlichen Dateien abhängt, die vor dem ersten Aufruf vorhanden sind , fügen Sie den Namen und den Inhalt Ihrer Byteanzahl hinzu.
node please.js
5 verschiedenen Ausgaben aufrufen kann .