Stax , 11 байт (оцінка 4)
'''cc'~~'dd
Запуск та налагодження в Інтернеті!
Мені честь отримати першу (хронологічно) відповідь на цей виклик із оцінкою, що перевищує або дорівнює 4. Можливо, оцінка може бути навіть вищою.
У Stax записаний рядковий літерал, який складається з одного символу '
, так само, '', 'c, 'd, '~
як і всі рядкові літерали. Відповідні команди для c
d
та ~
засобів дублюють верхню частину основного стека, виводять верхню частину основного стека та спливають верхню частину основного стеку та натискають відповідно до вхідного стеку. Для цього завдання стек вводу не впливає на вихід і не є важливим, отже, ми можемо сказати d
і ~
є однаковими.
Пояснення
Найкраще розділити код на кілька частин і розглянути їх окремо.
Коли він не підроблений, '''cc
поштовхи буквальний '
і буквальні c
до основної стек і дублює вершину, так що стек буде (від дна) c,c,'
.
Якщо його не підробляють, '~~
натискає буквар, ~
а потім вискакує (і натискає на вхідний стек), що в основному є неоперативним для основного стека.
Якщо його не підробляють, 'dd
виштовхує літерал, d
а потім вискакує, ще одна неопераційна версія для основного стека.
В кінці програми, оскільки явного виводу не робиться, верхня частина основного стеку буде неявно роздрукована.
Якщо програма працює як є, остаточний стек залишається c,c,'
і виводиться c
.
Якщо перша частина стане ''cc
, тоді у нас є буквальна '
та дві інструкції щодо копіювання, остаточний стек буде ',','
. З огляду на те, що дві інші частини не є опціоном, результат буде'
.
Якщо перша частина стає '''c
, результат в основному збігається з незашкодженим, але той c
не дублюється. Тож стека буде c,'
. Після двох неопераційних вершина стека є c
.
Тож ми можемо виявити радіацію в першій частині.
Друга частина і третя частина працюють точно так само. Я візьму третю частину як приклад.
Якщо третя частина підроблена, перші дві частини зберігаються як є, а стек перед запуском третьої частини - c,c,'
Якщо третя частина стає 'd
, буквар d
висувається до вершини основного стеку і більше нічого не робиться. Тепер верхня частина основного стека, d
яка буде виведена.
Якщо третя частина стає dd
, два елементи вискакують з основного стека і тепер верхня частина стека є '
і виводиться.
Отже, ми можемо виявити випромінювання в третій частині. З тієї ж причини ми можемо виявити випромінювання у другій частині.