Contrairement à de nombreux défis C & R, cela ne nécessite pas un poste séparé pour les voleurs; le but des voleurs est de déchiffrer la réponse précédente, puis d’en poster une nouvelle en tant que policier.
En tant que répondeurs, vous allez écrire une série de polyglottes ressemblant à ceci (chaque colonne est une langue et chaque entrée est la sortie de la réponse dans cette langue):
Language: 1 2 3 4 5 6 7 8 ...
Answer 1: 0 1 2
Answer 2: 1 2 3
Answer 3: 2 3 4
Answer 4: 3 4 5
Answer 5: 4 5 6
Answer 6: 5 6 7
...
(Les espaces vides signifient qu'aucun comportement n'est requis dans ce cas).
Chaque réponse doit travailler en 3 langues et imprimer 3 différents numéros consécutifs qui sont chacun plus que les chiffres imprimés par la réponse précédente (les premières impressions de réponse 0
, 1
et 2
). Chaque réponse utilise deux langues de la soumission précédente et une troisième nouvelle langue. Le répondant devrait essayer de dissimuler ce qu'est cette troisième langue.
Pour poster une nouvelle réponse, vous devez:
- Casser la réponse la plus récente en trouvant quelle est sa troisième langue.
- De préférence, ajoutez une explication à votre fissure et informez l'affiche de la réponse. Une fois votre soumission fissurée, vous devez également ajouter une explication.
- Ecrivez un polyglotte composé des deuxième et troisième langues de cette réponse, ainsi que d'une autre langue de votre choix. Révélez vos deux premières langues, mais ne révélez pas la nouvelle. La prochaine affiche ayant pour objectif de trouver cette langue (ou toute autre langue dans laquelle elle fonctionne), vous devez donc essayer de la dissimuler.
Caractéristiques
Les critères de validité d'un langage de programmation sont les mêmes que ceux de The Programming Language Quiz, Mark II - Cops :
- Il contient un article sur Wikipedia anglais , un article sur esolangs ou un article sur Rosetta Code au moment de la publication du défi ou est sur Essayez-le en ligne! . Avoir un interprète lié dans l'une de ces pages le rend tout à fait légal.
- Il doit satisfaire nos règles sur ce qui constitue un langage de programmation .
- Il doit y avoir un interprète gratuit (comme dans la bière). Gratuit ici signifie que tout le monde peut utiliser le programme sans avoir à payer pour le faire.
Chaque réponse doit être exécutée en moins d’une minute sur un PC raisonnable.
- Vous pouvez réutiliser des langages de programmation, mais il doit y avoir au moins deux réponses (une réponse individuelle ne peut donc pas réutiliser un langage).
- Cracker une soumission consiste à rechercher tout langage de programmation imprimant le résultat correct, et pas seulement celui souhaité. Si une soumission est exécutée dans une langue qui n'a pas été déclarée ou qui n'a pas fonctionné, il n'y a aucune obligation de faire quoi que ce soit.
- Vous ne pouvez pas poster deux (ou plus) de suite.
Critère gagnant
La réponse gagnante est celle qui a pris le plus de temps pour être fissurée. Le défi ne finira jamais, il est donc toujours possible que la réponse gagnante change.
la source
Réponses:
Hexagony, Klein (101) et ???
Ceci est imprimé
7
en hexagone ,8
en Klein (101) et9
en ???.Le
9
ne fonctionne pas si une nouvelle ligne est ajoutée à la fin du code. Faites attention si vous testez localement.Edit: Être en direct pendant 20 heures est déjà un disque, je vais donc vous donner quelques indices à partir de maintenant. (Également parce que la langue en question est l’OMI pas encore connue.)
Astuces
9
Cela ne fonctionne pas si une nouvelle ligne est ajoutée à la fin" est très important, de même que les deux premiers espaces (ignorés par Hexagony et Klein).v
commande termine le programme.Explication ( poteau fissuré )
Dans le code source
Les instructions pertinentes dans Klein (101) sont les suivantes:
Klein est un langage 2D similaire à celui de gabarit où le franchissement de la limite de la zone de code (qui est un carré) dépend de la topologie de Klein.
/
et\
sont des miroirs.L'adresse IP commence dans le coin supérieur gauche en direction de droite. Il rencontre un miroir vers la limite supérieure et entre à nouveau dans la zone de code du côté droit, comme indiqué ci-dessus. Ensuite, il frappe à nouveau le miroir, 8 est poussé, puis (après avoir traversé la limite plusieurs fois) s'arrête à
@
. Ensuite, le contenu de la pile est imprimé sur la sortie standard, qui est unique 8.la source
Befunge-96, Hexagony et ???
Cela imprime
6
en Befunge-96 ,7
en hexagone et8
en ???.Explication
Le code hexagone, quand "prettified" est:
Le chemin d'exécution commence en haut à gauche en direction est. La rangée du haut ne fait pas grand chose.
-
change le bord actuel de la mémoire pour que sa valeur soit0
. L'exécution se poursuit vers l'est sur la rangée du milieu, où elle se7!
charge7
dans le bord de la mémoire en cours et s'imprime sous la forme d'un entier.[
change le pointeur d’instruction sur Nord-Est à partir de7
. Ensuite7+3
, l'exécution atteint[
ce qui change le pointeur d'instruction en direction du nord-ouest à partir du coin sud-est. Enfin, le chemin est l'..@
endroit où se@
termine le programme.la source
Lua, brainfuck, ???
Imprime 3 à Lua, 4 à la merde et 5 à ???.
Explication pour poste fissuré :
3--(-1)
vaut 2, doncprint(f)
affiche 2 (les autres éléments ne sont pas nécessaires)--
nouveau il y a un commentaire, donc il3--(-1)
n'y en a que 3, donc on enprint(f)
imprime 3.
caractère de sortie 52, qui est 4.la source
Déclencheur , JavaScript et ???
Impressions
11
en déclencheur ,12
en JavaScript et13
enREDACTED
.Comme cela n'a pas été craqué depuis plus longtemps que toute autre réponse jusqu'à présent, voici quelques astuces:
Т
etе
sur la première ligne sont des caractères multi-octets.[ //
et\\ ][ //
sont des no-ops.-²52
, est du code mort.²6
forme donc une boucle infinie.²
, avec le6
, forme une boucle infinie./!'!/
Explication
Eh bien, cela a pris du temps pour se fissurer. Voyons à quoi ressemble le code:
Cela signifie que, bien que de nombreux émulateurs disponibles se comportent correctement, l'implémentation conforme aux règles est liée à la deuxième phrase de la page Wikipedia . Bien sûr, il ne peut pas être exécuté directement sur un PC ordinaire , mais j'ai trouvé l' émulateur Emma 02 associé à la page VIP COSMAC pour fonctionner au mieux.
la source
Python 2, Python 3, ???
Ceci affiche 1 en Python 2, 2 en Python 3 et 3 en ???.
Explication de fissure (poteau fissuré) :
0
: C: La première ligne définit une macro de type fonctionprint
qui ignore son argument unique et évaluemain(){puts("0");}
un programme complet qui s'imprime0
et se ferme. L'expression entière1+bool(1/2)
est ignorée lorsque laprint( )
macro de la deuxième ligne est étendue àmain(){puts("0");}
.1
: Python 2: La première ligne est un commentaire.1/2
utilise la division entière en Python 2, donnant 0. Cette valeur est ensuite interprétée comme un booléen (bool(0)
->False
), puis ajoutée à1
(1+False
->1
), puis imprimée.2
: Python 3: La première ligne est un commentaire.1/2
utilise la division float dans Python 3, donnant 0,5. Cette valeur est ensuite interprétée comme un booléen (bool(0.5)
->True
), puis ajoutée à1
(1+True
->2
), puis imprimée.la source
JavaScript , CHIP-8 et ???
12
en JavaScript ,13
dans CHIP-8 et14
dans ???Je vais m'engager et dire que celui-ci est fissuré, même si je ne parviens pas à le faire fonctionner, je suis sûr du langage (ce qui semble être ce que les règles exigent.)
Voici une explication imparfaite du poteau fissuré
Le code hexadécimal "est" (il se peut que je sois légèrement désactivé):
Vous pouvez aller ici , cliquez sur "Outils binaires" et collez-le dans le tableau d'octets. Cliquez sur "Décompiler".
Les éléments clés du code sont les suivants: des instructions pour indiquer où se trouve le "numéro", la
sprite
commande qui imprime le nombre, la quantité correcte de déchets indésirables ici et là et les suivants:Pour voir ce que cela représente, vous pouvez cliquer sur "Éditeur de sprite" et coller ces hexadécimaux dans la zone située en dessous. Vous verrez la réponse:
Je suis presque sûr que vous pouvez ensuite mettre ce que vous voulez à la fin et le résultat de CHIP-8 ne changera pas, d'où la nouvelle entrée.
Je serais ravi si quelqu'un pouvait faire en sorte que cela fonctionne pleinement, plutôt que la "preuve" de la réponse que j'ai donnée ici.
la source
C, Python 2, ???
Ceci est imprimé
0
en C,1
en Python 2 et2
en ???.Ce sera extrêmement facile à craquer pour les personnes qui connaissent Python, mais je voulais un point de départ pour d’autres réponses. Les réponses ultérieures doivent essayer d’obscurcir la troisième langue (je ne l’ai pas fait).
la source
Python 3, Lua, ???
Imprime 2 en Python 3, 3 en Lua et 4 en ???.
Explication pour poste fissuré :
la source
> <>, Befunge-96 et ???
Ceci imprime 5 dans
><>
, 6 dansBefunge-96
et7
dans ???.Je sais que la solution envisagée était Befunge-93, mais je n'ai pas pu résister.
Explication:
Befunge-96 suit le même chemin que
><>
, mais ignore les instructions inconnues, en ajoutant un à 5 et en le multipliant par 9 pour obtenir 54, le code ascii pour6
.la source
Commentateur , Beatnik , ???
Les sorties 15 dans Commentator , 16 dans Beatnik et 17 dans une langue que vous êtes supposé trouver.
Ok, c'est l'heure des indices:
la source
fn main()
entre autres), mais il ne fait pas exécutent à Rust (explicit lifetime required in the type of 's'
), ni sur TIO , ni un autre interprète , j'ai trouvé. Et je ne trouve pas d'autre langage qui utilisefn
comme identifiant de fonction.Brainfuck,> <>, et ???
Imprime
4
dans Brainfuck,5
dans> <> et6
dans ???v
redirige le flux du programme vers le bas. Lan
est n sortie umérique.;
termine l'exécution.la source
Klein (101), Z80Golf, ???
Estampes
8
à Klein (101) ,9
à Z80Golf et10
à ??? .la source
Beatnik , Rust , ???
Cela imprime 16 à Beatnik, 17 à Rust et 18 en ???.
Le
�
caractère de la ligne 4 doit être remplacé par le caractère ASCII 18 (cela n'a pas été fait dans les liens TIO car il ne concerne aucun des deux).Explication ( fissurée ):
La réponse précédente était Rust: spécifiquement, Rust compilé avec mrustc . mrustc est un compilateur expérimental, et comme il est principalement destiné à amorcer une version valide de
rustc
, il ignore la vérification d'emprunt et la vérification de la mutabilité, ce qui permet à l'extrait de code de @ NieDzejkob de se compiler sans erreur.Ce programme fonctionnera avec le compilateur Rust normal, vous n’avez donc pas besoin d’installer mrustc pour le tester.
Astuces
Puisque cette réponse a maintenant duré le plus longtemps sans être fissurée, je laisserai un indice et continuerai à le faire régulièrement jusqu'à ce qu'elle soit fissurée:
�
personnage est un hareng rouge et a très peu de signification. La plupart des octets peuvent être remplacés à la place et le programme fonctionnera toujours.la source
@
,P
,{
oum
commence un littéral de caractère et quelque chose imprime après sa codepoint en décimal, mais cela n'explique pas tous les++
s ...Z80Golf , Somme , ???
Cela imprime 9 en Z80Golf , 10 en Somme et 11 en ??? .
Nous remercions Bubbler pour avoir craqué le message précédent sous le nom de Somme, qui prend la somme de la colonne comme indiqué dans les instructions. Les trois premières colonnes évaluent à
Ce qui pousse 10, l'imprime et sort.
la source
Somme , Trigger et ???
Ceci est imprimé
10
dans la Somme ,11
dans Trigger et12
dans ???.Comme les deux dernières langues sont faciles à polygloter, j'ai décidé de mélanger cette langue .
Explication ( poteau fissuré )
Trigger voit tout le code comme une série de jetons (la tokénisation est gourmande):
A
)AAB
)AAA
)AAAA
)Dans le code source
les jetons significatifs sont
((1
11+
111
111
, où les deux premiers ne font rien et les deux derniers empreintes 1, donc 11.la source
CHIP-8 , Klein (100) , ???
Les sorties 13 dans CHIP-8 (je suppose), 14 dans Klein et 15 dans ???.
Une autre topologie de Klein, tsk tsk. J'ai conservé le code avant le
@
, car je ne sais pas ce qui va affecter CHIP-8.Des indices
Je suis un peu en retard pour ça, désolé. Je vais essayer d'en ajouter un par jour.
not
s et lesay
peuvent être enlevés sans affecter le programmePour référence, le programme sans ce genre de choses ressemble à ceci:
Essayez-le en ligne!
la source
1
une chaîne contenant une chaîne composée de la première ligne et indiquant "ceci n’est pas une valeur" et les ignorant, la update concat, même si j'ai un opérateur pour cela, mais concat opère sur les caractères et les nombres ainsi que sur les chaînes, où les+
traite comme des nombres ). Mais c'était très effrayant de se dire "Je me demande quoi ... oh mon dieu, cela pourrait être laissé sans modification et être la prochaine entrée ... si seulement je connaissais la ??? langue ..."Klein (100), commentateur , ???
Sorties 14 en Klein (100) , 15 en commentateur , 16 en ???.
Je suis sérieusement mauvais pour obscurcir les polyglottes.
Explication ( poteau fissuré )
Dans Commentator, les commandes les plus importantes sont les jetons de commentaire et les espaces. Tous les autres caractères sont ignorés.
<#
fait XOR 1 sur la cellule de mémoire actuelle.%
est utilisé pour remettre à zéro la cellule de mémoire actuelle.Attendez, il y a 16 espaces après
%
, que s'est-il passé?C'est en fait un petit bug (ou fonctionnalité?) Dans l'interprète.
/
est considéré comme le début d'une commande à 2 caractères, donc l'espace après sa consommation. Mais il/<space>
s'agit d'une commande non définie (donc non-op), l'espace est donc effectivement ignoré.la source