Вам слід написати програму на 100 байтів (BF).
Один символ усіляко видалить із нього 100 нових (99-байтних) програм. Наприклад , для програми ++.>.
на 5 Підпрограми +.>.
, +.>.
, ++>.
, ++..
і ++.>
.
Вашим балом буде кількість унікальних результатів, які генерують 100 програм. Вищий бал - кращий.
Деталі
- Ваші програми будуть припинені після виведення першого символу.
- Недійсні або не припинені програми та програми, що генерують порожні виводи, не враховуються в рахунок.
- Клітини BF - це 8-бітні обгорткові. (255 + 1 = 0, 0-1 = 255)
- Вашій програмі не вводять даних. Якщо ви використовуєте
,
в коді, він встановлений для поточної комірки0
. - У лівій частині вихідної позиції немає комірок. Наприклад
<.
, недійсний, але.<
дійсний, оскільки виконання завершено о.
. Стрічка не обмежена в інший бік. - Програми з незбалансованими дужками (
[
і]
) недійсні. - Ваша оригінальна програма може бути коротшою, ніж 100 байт, оскільки її легко розширити до 100 байт, не змінюючи показник.
- Ваша оригінальна програма не повинна бути дійсним кодом BF.
Ви можете використовувати цю програму python3 (посилання ideone), щоб визначити бал своєї відповіді. (Для тривалих програм вам може знадобитися змінити maxstep
змінну.)
Приклад
(Для простоти ця програма коротша, ніж 100 байт.)
Solution: ++,+[-]+><.-,-.
Score: 3
Explanation:
Subprogram => Output
+,+[-]+><.-,-. => 1
+,+[-]+><.-,-. => 1
+++[-]+><.-,-. => 1
++,[-]+><.-,-. => 1
++,+-]+><.-,-. => None
++,+[]+><.-,-. => None
++,+[-+><.-,-. => None
++,+[-]><.-,-. => 0
++,+[-]+<.-,-. => None
++,+[-]+>.-,-. => 0
++,+[-]+><-,-. => 255
++,+[-]+><.,-. => 1
++,+[-]+><.--. => 1
++,+[-]+><.-,. => 1
++,+[-]+><.-,- => 1
Unique outputs are [0, 1, 255]
Score is 3 for ++,+[-]+><.-,-. (length = 15)
У разі вирівнювання виграє той, хто має коротший код. (Ваша програма може бути коротшою, ніж 100 байт, як зазначено в розділі "Деталі".) Якщо коди однакової довжини, переможцем стає попередній плакат.
Бонусна головоломка: без жирного обмеження можна знайти програму з оцінкою 100?