Зробити універсальний цілочисельний принтер - це приємно і все, але писати єдиний код, який друкує безліч різних чисел, є громіздким. Чи не було б простіше зробити сценарій, який виводить число, але також дає вам новий сценарій, щоб отримати наступне число?
Виклик:
Напишіть код, який виводить одне ціле число Nта виконуваний код. Наступний код повинен вивести N+1і код, який може вивести N+2. Продовжуйте цей шлях, поки не дістанетесь N = 15. (Останнє друковане число повинно бути 15).
Правила:
- Немає вводу (припустимо, що вхід порожній).
- Повна програма або функція або інші зручні формати дозволені.
- Перший код повинен вивести
1. - Ви не можете вивести провідні нулі. Тобто ви не можете роздрукувати
01для1. - Вихід повинен бути у форматі
N, Code_for_N+1. Зауважте, що вихід відокремлений комою та єдиним пробілом. КодN+1не має навколишніх лапок.N , Code_for_N+1не приймається (пробіл перед комою). Нові рядки в порядку. - Першим символом на виході має бути число. (Немає провідних пробілів, або
ans = N). - Надрукований номер не повинен бути частиною наступного коду (код може містити це число, але ви не можете приймати вихідний номер як частину коду)
- Приклад: Вихід для
N=2може бути:2, printer 2. У цьому випадкуprinter 2є код дляN=3. Ви не можете використовувати весь вихід:2, printer 2як код дляN=3.
- Приклад: Вихід для
- Сценарії можуть бути різними мовами
- Типи даних не мають значення (число може бути рядок), але воно не може бути оточене чим-небудь (лапки, дужки тощо).
- Якщо для
N=15цього виводиться код, він повинен або друкуватиSTOP!(див. Бонус), або взагалі нічого не друкувати (навіть пробіл чи новий рядок).- Код
N=15не може вийти з ладу (але виведення в STDERR нормально). - Вас дискваліфікують, якщо вивідний код для
N=15відбитків16чи чогось іншого (крім бонусного випадку).
- Код
- Вбудовані оператори quine заборонені.
- Доступ до вихідного файлу через файлову систему заборонено.
Бонус:
-10 байт, якщо код, який друкує 15, також створює код, який друкує " STOP!"
Приклади, що використовують синтаксис Python: (очевидно, вони працюватимуть лише для вибраних цілих чисел, а не від 1 до 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
Діють стандартні правила гольфу! Найменший код (для N = 1) в байтах виграй!
14, print(14+1)чи ні?
f=>f+""було б недійсним? (f+""повертає будівельний код функції.)