Tworzenie wszechstronnej drukarki liczb całkowitych jest fajne, ale pisanie jednego kodu, który drukuje wiele różnych liczb, jest uciążliwe. Czy nie byłoby łatwiej stworzyć skrypt, który wypisuje liczbę, ale daje także nowy skrypt, aby uzyskać następny numer?
Wyzwanie:
Napisz kod, który wyświetli jedną liczbę całkowitą Ni kod wykonywalny. Następny kod powinien zostać wypisany, N+1a kod, który może wypisać N+2. Kontynuuj tę ścieżkę, aż dotrzesz N = 15. (Ostatni wydrukowany numer powinien wynosić 15).
Zasady:
- Brak danych wejściowych (zakładając, że dane wejściowe są puste).
- Dozwolony jest pełny program lub funkcja lub inne wygodne formaty.
- Pierwszy kod powinien zostać wyprowadzony
1. - Nie można wyprowadzać zer wiodących. Czyli nie można drukować
01na1. - Dane wyjściowe muszą mieć format
N, Code_for_N+1. Zauważ, że dane wyjściowe są oddzielone przecinkiem i pojedynczą spacją. Kod dlaN+1nie ma otaczających cudzysłowów.N , Code_for_N+1nie jest akceptowane (spacja przed przecinkiem). Końcowe znaki nowej linii są w porządku. - Pierwszymi znakami danych wyjściowych musi być liczba. (Bez spacji wiodących lub
ans = N). - Wydrukowany numer nie powinien być częścią następnego kodu (kod może zawierać ten numer, ale nie można traktować numeru wyjściowego jako części kodu)
- Przykład: wyjście
N=2może być:2, printer 2. W tym przypadkuprinter 2jest kodN=3. Nie możesz użyć całego wyniku:2, printer 2jako kodu dlaN=3.
- Przykład: wyjście
- Skrypty mogą być w różnych językach
- Typy danych są nieistotne (liczba może być ciągiem), ale nie może być otoczona niczym (cudzysłowy, nawiasy itp.).
- Jeśli jest wyprowadzany kod
N=15, musi on albo wydrukowaćSTOP!(patrz bonus), albo w ogóle nic nie wydrukować (nawet spacji lub nowego wiersza).- Kod parametru
N=15nie może ulec awarii (ale wysyłanie do STDERR jest prawidłowe). - Jesteś zdyskwalifikowany, jeśli kod wyjściowy dla
N=15wydruków16lub cokolwiek innego (z wyjątkiem przypadku bonusowego).
- Kod parametru
- Wbudowane operatory quine są niedozwolone.
- Dostęp do pliku źródłowego za pośrednictwem systemu plików jest niedozwolony.
Premia:
-10 bajtów, jeśli kod, który drukuje 15, tworzy również kod, który drukuje „ STOP!”
Przykłady wykorzystujące składnię Pythona: (oczywiście będą one działać tylko dla wybranych liczb całkowitych, a nie od 1 do 15.)
N = 1
print "1, print 2"
1, print 2
---
N = 15
print 15
15
---
N = 15 (Qualifies for the -10 bytes bonus)
print "15, print 'STOP!'"
15, print 'STOP!'
print 'STOP!'
STOP!
----
N = 15 (Qualifies for the -10 bytes bonus)
print "15, disp('STOP!')"
15, disp('STOP!') (disp('STOP!') outputs STOP! in MATLAB)
----
N = 15 (This one is not OK. The submission is disqualified)
print "15, print 16"
15, print 16
Obowiązują standardowe zasady gry w golfa! Wygrywa najmniejszy kod (dla N = 1) w bajtach!
14, print(14+1)czy nie?
f=>f+""że byłby nieważny? (f+""zwraca kod konstrukcyjny funkcji.)