Ostrzeżenie: to wyzwanie zawiera łagodne spoilery do gry The Secret of Monkey Island.
Pod koniec gry prowadzony jest przez katakumby magicznie zachowana głowa nawigatora:
Potrzebujesz jego gałki ocznej, ale Głowa niechętnie ci go daje. Jednym ze sposobów na to jest po prostu żebranie:
Guybrush: Czy mogę prosić o ten naszyjnik?
Głowa: Nie, ale dziękuję za tak grzeczne pytanie.
Guybrush: Oh daj spokój, proszę?
Głowa: Możesz błagać, ile chcesz, ale nie możesz tego mieć.
Guybrush: Całkiem proszę?
Głowa: Możesz błagać, ile chcesz, ale nie możesz tego mieć.
Guybrush: Całkiem PROSTY proszę?
Głowa: Możesz błagać, ile chcesz, ale nie możesz tego mieć.
Guybrush: Całkiem proszę z cukrem na wierzchu?
Głowa: Och, w porządku, ty duże dziecko. Możesz to mieć. Hej, co dobrego jest naszyjnikiem, jeśli nie masz ramion?
Wyzwanie
Napisz pełny program, który wydrukuje powyższe okno dialogowe. Problem polega na tym, że za każdym razem, gdy program jest wywoływany, powinien wypisywać tylko dwie linie (jedną prośbę Guybrusha i odpowiedź Głowy). Np. Jeśli twoje zgłoszenie jest napisane w Pythonie, użycie powinno wyglądać następująco:
$> 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?
Wywołanie programu więcej niż 5 razy może spowodować niezdefiniowane zachowanie, więc możesz albo zapętlić, drukować dwa ostatnie wiersze, albo program może nawet zostać zepsuty po piątym wywołaniu.
Możesz pisać do pliku w katalogu roboczym lub modyfikować kod źródłowy samego programu, aby śledzić wywołania. W tym drugim przypadku program nie może zależeć od własnej nazwy pliku. (W pierwszym przypadku możesz założyć, że nazwa pliku twojego programu nie będzie kolidować z nazwami plików, od których zależy Twój program).
Nie wolno zakładać środowiska podobnego do REPL lub przechowywania danych w pamięci RAM między wywołaniami. Np. Jeśli odpowiadasz w Mathematica, musisz założyć, że opuściłem jądro między wywołaniami.
To jest kod golfowy, wygrywa najkrótsza odpowiedź (w bajtach). Jeśli twój program zależy od dodatkowych plików, które istnieją przed pierwszym wywołaniem , dodaj jego nazwę i zawartość do liczby bajtów.
node please.js
uzyskując 5 różnych wyników.