Le fil des voleurs peut être trouvé ici: L'imprimante à cordes mystère (Robbers)
Votre challenge
- Ecrivez un programme, une fonction ou un script REPL qui imprime une chaîne sur STDOUT.
- Les voleurs vont essayer de créer un programme qui imprime la même chaîne.
- S'ils réussissent à créer le programme dans les 7 jours, votre soumission est fissurée.
- Si personne ne peut créer un programme imprimant la même chaîne dans les 7 jours, votre soumission est sécurisée. Vous pouvez choisir de révéler votre programme ou de le laisser pour lancer un défi aux futurs voleurs. Cependant, si vous ne le révélez pas, vous ne pourrez obtenir aucun point de votre soumission (ne mettez pas "safe" dans l'en-tête de votre réponse si vous choisissez de le faire).
Restrictions
- Le programme doit être inférieur ou égal à 128 octets au total (plus d'informations à ce sujet ultérieurement).
- Si le programme dépend du nom du programme ou du nom / du contenu d'un fichier externe, vous devez le dire et l'inclure dans votre nombre total d'octets.
- La chaîne imprimée doit être inférieure ou égale à 2048 octets.
- La chaîne imprimée doit être composée uniquement de caractères ASCII imprimables (de nouvelles lignes peuvent être incluses).
- Le programme doit produire le même résultat à chaque exécution.
- Les primitives cryptographiques intégrées (y compris tous les rng, cryptages, décryptages et hachages) ne sont pas autorisées.
- Le programme ne doit pas prendre d’entrée.
- Aucune échappatoire standard.
Notation
- Si une soumission est fissurée avant sept jours, elle gagne 0 point.
- Une soumission sécurisée de ≤128 caractères rapporte 1 point.
- Une soumission sécurisée de ≤64 caractères rapporte 2 points. S'il est inférieur ou égal à 32 octets, il gagne 4 points, et ainsi de suite.
- Chaque soumission sécurisée gagne également un bonus supplémentaire de 3 points (indépendamment de la longueur).
- Il y a une pénalité minuscule (1/2 point) pour chaque fissure après votre première.
- Notez que la solution du voleur doit être dans la même plage de longueurs de programme.
- Chaque personne peut soumettre un maximum de 1 programme par plage d'octets par langue (les versions différentes et les substitutions arbitraires de la même langue ne comptent pas comme des langues séparées). Exemple: vous pouvez publier un programme python de 32 octets et un programme python de 64 octets, mais vous ne pouvez pas publier de programme de 128 octets dans Java 7 et Java 8.
- La personne avec le total de points le plus élevé gagne.
Les soumissions
Chaque soumission doit contenir les informations suivantes:
- Le nom de la langue Toutes les solutions de nouveaux voleurs doivent être le même langage.
- La plage de la taille du programme (il s'agit de la puissance la plus proche de deux fois supérieure à la taille du programme; par exemple, si votre programme est de 25 octets, il s'agirait de "≤32").
- La chaîne réelle à imprimer.
- Si une soumission est sécurisée, inscrivez "safe" et la longueur du programme (à la puissance 2 la plus proche) dans votre en-tête. S'il y a plusieurs numéros dans votre en-tête, mettez la puissance de 2 en dernier.
Cet extrait de pile génère des classements et répertorie toutes les soumissions en cours. S'il y a des problèmes avec l'extrait de code, laissez un commentaire.
Utilisez les formats suivants pour les entrées:
Language, (any text with the program size as the last number)
=
ou
Language
=
Length <= 16
Notez que l'extrait de code ne mettra le premier mot de l'en-tête que s'il ne détecte pas de virgule.
Pour des soumissions en toute sécurité, mettez le dans l’entête. L'extrait de code mettra automatiquement votre programme dans la colonne "safe" si le temps est écoulé. Par conséquent, il s'agit davantage d'indiquer aux voleurs que votre programme est sécurisé.
Pour les soumissions fissurées, mettez craqué dans votre en-tête.
Le programme devrait également être capable de reconnaître si un commentaire dit "fissuré" et comporte un lien; Cependant, cela n'est pas garanti.
Ordre de départ: Points -> Nombre de soumissions sécurisées -> Moins de soumissions fissurées.
Notez que l'extrait de code trie les soumissions ouvertes avant le moins craqué, mais les soumissions ouvertes ne seront pas comptées à la fin du concours.
Ce défi est maintenant fermé.
Plus grand nombre de points du vainqueur: Dennis
Les soumissions les plus sûres: DLosc
(Notez que le nombre de soumissions sécurisées ne se traduit pas par un nombre de points, car la taille des programmes est prise en compte dans le calcul du score).
la source
Réponses:
Pyth, sûr, plage ≤ 8
Le code:
Explication:
la source
]
?VBA, [Safe]
Plage <= 128 octets
Astuce pour savoir où sortir
Sortie 255 octets
Solution
Code
A expliqué
la source
Mathematica, sûr, plage ≤ 64
Sortie:
La source:
la source
GenomeLookup
tout faire ...ngn APL (safe)
Gamme ≤ 8
Solution
Essayez-le en ligne.
Comment ça fonctionne
⍟⍣=42
applique le logarithme naturel (⍟
) à plusieurs reprises jusqu'à 42 jusqu'à atteindre un point fixe (⍣=
), ce qui donne 0,31813150520476413J1.3372357014306895 .La valeur initiale n'a pas vraiment d'importance ici, tant que ce n'est ni 1 ni 0 .
3○
applique une tangente à son argument de droite, ce qui donne 0,07343765001657206J0.8920713530605129 .*
applique la fonction exponentielle naturelle à son argument de droite, produisant le résultat souhaité.la source
Pyth, fissuré par Sp3000
Gamme ≤ 8
la source
> <> (Coffre-fort)
Testé sur les interprètes en ligne et officiels.
Plage: <= 16
Chaîne:
4621430504113348052246441337820019217490490
C'est joli 1337, hein?
Explication:
Voici le code source (15 octets):
f
pousse 15 (notre compteur) sur la pile (ceci est ignoré!
à la fin pour ne pas pousser plus d'un compteur)1-
soustrait 1 du comptoir:0(?;
Le visage furieux teste si le compteur est inférieur à 0, le reste termine le programme s'il est::
Double le comptoir deux fois0g
Récupère le caractère au point(c,0)
du code source où sec
trouve le compteur*
Multiplie le deuxième duplicata du compteur par la représentation ASCII du caractère précédemment saisin
Imprime le résultat.Donc, diviser, la sortie est
[462, 1430, 504, 1133, 480, 522, 464, 413, 378, 200, 192, 174, 90, 49, 0]
. Cela correspond à l'interprétation ASCII du code inversé multiplié par les nombres 14 à 0 (c'est-à-dire[!*14, n*13, ... f*0]
).La partie la plus difficile de résoudre ce problème serait probablement de déterminer comment fractionner les chiffres correctement, mais si vous obtenez les bons chiffres, il vous suffit d’essayer jusqu’à ce que vous obteniez quelque chose qui fonctionne.
la source
Bonhomme de neige 1.0.2
Plage ≤32.
La solution est:
la source
Matlab, ≤16. Fissuré par Wauzl
Plage ≤16 .
Cela fonctionne aussi dans Octave .
La chaîne imprimée est la suivante:
la source
Perl (sûr)
Gamme ≤ 32
Solution
Essayez-le en ligne.
Comment ça fonctionne
for-951..1048
exécute la commande précédente pour chaque entier de cette plage, en l'enregistrant dans la variable implicite.y/124589//
effectue la translittération en éliminant les chiffres spécifiés de la variable implicite.y///
renverra le nombre d’éliminations, c’est-à-dire le nombre d’occurrences de ces chiffres dans la variable implicite.print 2**
imprime 2 à la puissance des éliminations ( 1 , 2 , 4 ou 8 ).la source
Python, <= 16 ( fissuré par kennytm )
Cela a été produit via REPL (en exécutant une commande dans un shell Python).
Pendant que j'édite ceci, je vais également résumer les commentaires des futurs voleurs sans spoiler: cela ne fonctionne pas dans tous les Pythons. Cela fonctionne dans une version de Python 2.7 où
sys.maxint = 9223372036854775807
.la source
> <> , ≤ 8 [ fissuré ]
C'est un total de 12
o
s. Le programme s'arrête sans erreur et fonctionne à la fois avec l'interprète officiel et l' interprète en ligne .la source
TI-BASIC, ≤4 octets, fissuré par Reto Koradi
Cela a pris 5 jours et 23 heures pour craquer. Si proche ...
Sortie (10 octets):
Programme:
Comme il est fondamentalement impossible pour quelqu'un de le deviner, mon objectif était de faire de la force brute la seule approche possible.
Pour ce faire, j'ai empêché l' affichage de la sortie, ou de la sortie avec l'une de ces fonctions inverses , sur l'ISC. ISC n'a pas de tangente hyperbolique, et j'ai pensé qu'aucun outil similaire ne l'aurait
tanh(7°
.Pour ajouter un peu de sécurité contre la force brute, j'ai utilisé la conversion de degré en radian, une fonctionnalité légèrement obscure, mais cela ne suffisait pas.
la source
sin(
1 octet sur TI-BASIC. Donc, quelque chose commesin(sin(sin(e
ne serait que 4 octets.fPart(
.CJam, ≤ 8 [sûr]
Je n'aime pas les longs chiffres, alors en voici un court. Ne hésitez pas à tripoter à la fois hors ligne et en ligne .
Étant donné que je trouve les soumissions portant uniquement sur des chiffres plutôt ennuyeuses, je vais émettre lentement quelques astuces pour compenser.
Solution
Le programme était
0W#
est0^-1
, qui au lieu d'erreur donne donneInfinity
.s
puis jette ceci à une chaîne (note qui`
donne à la1d0/
place).Pour l'autre moitié,
Wc
convertit -1 en caractère, qui devient le point de code 65535 en raison du bouclage des caractères (voir cette astuce ).i
convertit ensuite le caractère en un entier, c'est-à-dire 65535.Enfin,
b
convertit la chaîneInfinity
en base 65535 pour obtenir le numéro ci-dessus.la source
Javascript (console), <= 32 ( fissuré par insertusernamehere )
Testé dans les consoles Web Chrome et Firefox. C'est une chaîne de 43 caractères.
La solution que je visais était un peu plus élaborée que celle liée (vous maudissez, ES6!).
Explication:
la source
Python, <= 32 ( fissuré par Egor Skriptunoff)
La sortie est de 1832 octets, y compris les nouvelles lignes:
la source
CJam ( fissuré par Dennis)
Longueur <= 4
Je ne lui donne pas une très grande chance de survie, mais je voulais quand même essayer une solution à 4 octets.
Mon code était exactement ce que Dennis inversait:
CJam imprime alors tout le contenu de la pile, concaténé. Donc, la sortie a été
17
concaténée avec19^20
.la source
KK#
, essayé quelques pouvoirs supplémentaires et finalement trouvéJK#
.Lua, ≤ 4 ( fissuré par le feersum)
Sortie:
Vous devez rechercher une chaîne pour Lua REPL qui génère une constante "1 / M".
C'est simple, mais pas très trivial.
la source
=
avant l'expression.0x2p-21
Pip , <= 16 (sûr)
Ceci est ma dernière soumission de Pip, je le promets. :)
Je serais surpris que quelqu'un réduise ce nombre à 16 octets - il m'a fallu plusieurs essais pour l'adapter. (Prenez cela comme un défi si vous aimez!)
Répondre:
Ce code utilise les variables prédéfinies
t
= 10 ets
= space.la source
Ruby, fissuré par Kenny
Plage: ≤64.
(Et oui, toute la sortie est sur STDOUT.)
Solution envisagée:
la source
TI-BASIC ( fissuré par Thomas Kwa )
Variante TI-89
Gamme: ≤8
Longueur de sortie: 460
Je ne pense pas que vous puissiez utiliser RIES à cet égard, mais je doute qu’il puisse survivre 7 jours de toute façon. Tant pis.
Code:
la source
MATLAB, fissuré par Tom Carpenter
Plage <= 16
la source
Mathematica, fissuré par Sp3000
Plage: <= 32
la source
Thue - <= 64 octets, fissuré par l'histocrate.
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
C'est 2016 5s; au fait.
la source
CJam, ≤8 (sûr)
Code d'origine:
C'est-à-dire, pour commencer
3.141592653589793
et remplacer chaque caractère"3.141592653589793"
par le caractère correspondant dans"\"3.141592653589793\""
. Avec les doublons supprimés, il remplace en fait".123456789
par""35\.49831
.la source
Python 2 (coffre 16)
Plage ≤ 16. Si la version est importante (pour une précision d'impression?), J'utilise idéone .
Je ne vois aucun moyen de deviner le code sans effectuer de recherche sur ordinateur, mais vous m'avez tous impressionné auparavant.
Répondre:
la source
dir(complex)
pour voir quels ops sont définis pour les nombres complexes. Je ne savais pas que tu pouvais utiliser un module. Notez que cela ne sera probablement pas utile, mais peut-être ...JavaScript ES6, ≤128 octets - fissuré
Sortie (1124 octets):
Amuse-toi bien et bonne chance!
Code d'origine:
la source
Still safe :3
TI-BASIC (fissuré par Thomas Kwa)
Plage: <= 2
Chaîne:
-10
Code:
Xmin
Il n'y a pas moyen de tromper ce gars ...
la source
~9
(inversion de bits)AppleScript, ≤ 2 octets fissuré
"Brute forcée ... grommelle grogne ..."
Qu'est-ce que c'est ça? Une courte réponse AppleScript? : o
(oui, ceci n'imprime que sur la sortie standard)
la source
a=
oua-
1=
ou1-
ou? Je ne sais pas =)say"Cracked."
, et, si cela ne vous dérange pas de la grammaire, d'un octet supplémentaire avecsay"Cracked"
. c:> <> (Poisson) , fissuré par le Sp3000
Longueur <= 8
La sortie est 23
>
et le programme ne produit aucune erreur.la source
GolfScript (safe)
Gamme ≤ 8
Solution
Essayez-le en ligne.
Comment ça fonctionne
{9?7*}
pousse ce bloc sur la pile..%
duplique le bloc et le mappe… sur lui-même.GolfScript effectue le typage comme s'il n'y avait pas de lendemain. Dans ce cas, l'interpréteur s'attend à une valeur itérable, ainsi le bloc d'origine est converti en tableau, produisant le tableau de codes de caractères suivant: [57 63 55 42] .
Le bloc lui-même élève chaque code de caractère à la neuvième puissance (
9?
), puis multiplie le résultat par sept (7*
).Pour les quatre codes de caractères du tableau, cela pousse
Avant de quitter, l'interprète imprime les quatre nombres entiers, sans séparateurs.
la source