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, два элемента выталкиваются из основного стека, и теперь вершина стека является 'и выводится.
Следовательно, мы можем обнаружить излучение в третьей части. По той же причине мы можем обнаружить излучение во второй части.