Stax , 11 octets (Score de 4)
'''cc'~~'dd
Exécutez et déboguez en ligne!
C'est mon honneur d'avoir la première (chronologiquement) réponse à ce défi avec un score supérieur ou égal à 4. Peut-être que le score peut être encore plus élevé.
Dans Stax, un littéral de chaîne composé d'un seul caractère est écrit avec '
, tout '', 'c, 'd, '~
comme tous les littéraux de chaîne. Les commandes c
d
et ~
moyens correspondants dupliquent le haut de la pile principale, sautent le haut de la pile principale et sautent le haut de la pile principale et poussent vers la pile d'entrée, respectivement. Pour ce défi, la pile d'entrée n'affecte pas la sortie et n'est pas importante, nous pouvons donc dire d
et ~
sont identiques.
Explication
Il est préférable de diviser le code en plusieurs parties et de les considérer séparément.
Quand il n'est pas altéré, '''cc
pousse un littéral '
et un littéral c
vers la pile principale et duplique le haut, de sorte que la pile serait (de bas en haut) c,c,'
.
Lorsqu'il n'est pas altéré, '~~
pousse le littéral ~
, puis le fait apparaître (et le pousse vers la pile d'entrée), qui est fondamentalement un no-op pour la pile principale.
Lorsqu'il n'est pas altéré, 'dd
pousse le littéral d
puis le fait apparaître, un autre no-op pour la pile principale.
À la fin du programme, étant donné qu'aucune sortie explicite n'est effectuée, le haut de la pile principale sera implicitement imprimé.
Si le programme s'exécute tel quel, la pile finale est toujours c,c,'
et sortira c
.
Si la première partie devient ''cc
, alors nous avons un littéral '
et deux instructions de copie, la pile finale sera ',','
. Étant donné que les deux autres parties sont sans opération, le résultat sera '
.
Si la première partie devient '''c
, le résultat est fondamentalement le même que celui non modifié, mais le c
n'est pas dupliqué. La pile sera donc c,'
. Après deux no-op, le haut de la pile est c
.
Nous pouvons donc détecter le rayonnement dans la première partie.
La deuxième partie et la troisième partie fonctionnent exactement de la même manière. Je prendrai la troisième partie comme exemple.
Si la troisième partie est altérée, les deux premières parties sont conservées telles quelles et la pile avant d'exécuter la troisième partie est c,c,'
Si la troisième partie devient 'd
, un littéral d
est poussé vers le haut de la pile principale et rien de plus n'est fait. Le haut de la pile principale est maintenant celui d
qui sera sorti.
Si la troisième partie devient dd
, deux éléments sont extraits de la pile principale et maintenant le haut de la pile est '
et est sorti.
Par conséquent, nous pouvons détecter le rayonnement dans la troisième partie. Pour la même raison, nous pouvons détecter un rayonnement dans la deuxième partie.