Utwórz program, który generuje ciąg hello world („Hello world”, „Hello, World” itp.) I kod źródłowy. Dane wyjściowe są zapisywane na standardowym lub równoważnym. Łańcuch Hello world jest osadzony w kodzie źródłowym.
Na przykład wynikiem może być
(some source code here)hello world(some source code here)
Kiedy dane wyjściowe zostaną ponownie skompilowane lub zinterpretowane, powinny utworzyć podobne dane wyjściowe, ale ciąg znaków hello world musi mieć inną interpunkcję lub wielkie litery. Na przykład w poprzednim przykładzie można utworzyć następujące dane wyjściowe
(some source code here)hello, wORld(some source code here)
Każdy „(tutaj trochę kodu źródłowego)” w tych przykładach może ulec zmianie po każdym wykonaniu lub może być taki sam.
Twoje dane wyjściowe muszą zawierać prawidłowy ciąg hello world dokładnie raz. Może zawierać dowolną liczbę niepoprawnych ciągów hello world. Kod źródłowy może zawierać dowolną liczbę komentarzy, a ciąg hello world może być osadzony w komentarzach. Pierwszy program może mieć zero lub jeden prawidłowy ciąg znaków hello world, ale nie więcej.
Ważna jest następująca interpunkcja:
hello, world
hello world
helloworld
Wszelkie wielkie litery są dopuszczalne. Na przykład są to poprawne ciągi znaków hello world:
Hello, world
hellO WORld
HELLoworlD
Te ciągi są nieprawidłowe:
Hello world
Hello(newline)world
Hello,world
Hello, Steve
Twój program kończy się niepowodzeniem, gdy zostanie spełniony jeden z następujących warunków:
- Wyświetla ciąg znaków hello world, który został wygenerowany podczas wcześniejszego wykonania,
- wynik nie jest już poprawnym kodem źródłowym w tym samym języku lub
- dane wyjściowe nie zawierają dokładnie jednego prawidłowego ciągu hello world.
Twój program nie jest ważny w tym konkursie, chyba że co najmniej dwa pierwsze wykonania zakończą się powodzeniem. Oznacza to, że trzecie wyjście może być nieprawidłowe. Dane wyjściowe Twojego programu mogą nie być losowe. Pierwsze wykonanie powinno zawsze tworzyć takie same drugie wyjście, drugie wykonanie powinno zawsze tworzyć takie samo trzecie wyjście itp.
Wynik jest obliczany jako ilość bajtów w kodzie źródłowym programu początkowego. Najniższy wynik wygrywa.
Obowiązują następujące bonusy (do -60%):
- -5% * (N - 2), gdzie N jest indeksem wykonania, po którym program wygeneruje nieprawidłowe dane wyjściowe. Ten bonus ogranicza się do -50%. Jeśli Twój program odniesie 12 lub więcej sukcesów, otrzymasz maksymalną premię.
- -10%, jeśli twoje dane wyjściowe (w tym pierwszy kod źródłowy) zawierają wszystkie trzy prawidłowe alternatywy interpunkcyjne.
Twoje zgłoszenie powinno zawierać pierwszy kod źródłowy, a także zawierać wyniki pomyślnych wykonań. Jeśli twój program odniesie sukces więcej niż 12 razy, dodaj wynik dla 12 wykonań.
Przykład
Następny wiersz to pierwszy kod źródłowy. Kiedy go wykonujemy, jest to pierwsze wykonanie.
hello world(some source code here)
Następny wiersz to wynik pierwszego kodu źródłowego. To jest pierwsze wyjście.
hello, world(some source code here)
Następny wiersz to wynik drugiego wykonania. To drugie wyjście.
helloworld(some source code here)
Kiedy wykonaliśmy pierwsze wyjście, program ten kwalifikował się do premii -10%. Oznacza to, że mamy dwa wyjścia i jeden oryginalny kod, z których każdy ma inną interpunkcję. Ponadto, ponieważ drugie wyjście było ważne, ten program kwalifikuje się do tego konkursu.
Następny wiersz to wynik trzeciego wykonania. To trzecie wyjście.
Helloworld(some source code here)
Następny wiersz to wynik czwartego wykonania. To czwarte wyjście.
hellworld(some source code here)
To wyjście było nieprawidłowe. Indeks ostatniego ważnego wykonania wynosił 4. Ten program kwalifikuje się do premii -5% * (4 - 2) i -10% premii za interpunkcję. To daje w sumie -20%. Długość pierwszego kodu źródłowego („witaj świecie (tutaj trochę kodu źródłowego)”) wynosiła 34 bajty, więc końcowy wynik to 27,2.
hello world
?