Remarque: ce défi est terminé. Les soumissions sont toujours les bienvenues mais ne peuvent pas gagner.
C'est le fil des flics. Le fil des voleurs va ici .
Ecrivez un code qui affiche le nombre entier 1
. Si vous ajoutez, supprimez ou remplacez un seul caractère (de votre choix), le code doit générer le nombre entier 2
. Changez un autre caractère (le même ou un autre) et le code devrait sortir 3
. Continuez comme cela autant que vous le pouvez, mais au maximum jusqu'à 10. Les formats de sortie par défaut tels que ans = 1
sont acceptés. Vous pouvez ignorer la sortie vers STDERR (ou l’équivalent).
Vous devez révéler la langue, le nombre d'octets de votre code initial, le nombre d'entiers pour lesquels cela fonctionne, ainsi qu'un nombre facultatif de caractères du code initial. Remarque: vous ne devez révéler aucun caractère, mais rappelez-vous que le fait de révéler des caractères peut compliquer la tâche des voleurs, qui doivent utiliser le même personnage dans la même position. Vous pouvez choisir le caractère que vous utilisez pour désigner les caractères non révélés (par exemple, le trait de soulignement), mais veillez à le spécifier.
Les policiers peuvent fournir le code non fissuré après une semaine et appeler la présentation "SAFE". La soumission gagnante sera la soumission la plus courte non fissurée produisant le nombre 10. Si aucune soumission non fissurée ne peut imprimer 10, le code le plus court produisant 9 gagnera, et ainsi de suite. Notez que les voleurs n'ont pas à apporter les mêmes modifications que vous et qu'ils ne doivent pas reproduire le code exact (à moins que vous ne révéliez tous les caractères). Ils ne doivent reproduire que la sortie.
Les soumissions postées après le 24 novembre sont les bienvenues mais ne sont pas éligibles (car il y aura probablement moins de cambrioleurs).
Exemple de poste:
Le post suivant est une soumission dans la langue MyLang
, il a une longueur de 9 octets et fonctionne pour les numéros 1 à 8.
MyLang, 9 octets, 8 chiffres
Cette soumission fonctionne pour 1 - 8. caractères sont indiqués par Non Révélés un trait de soulignement: _
.
abc____i
Classement
Clause de non-responsabilité: le classement n'est pas testé et les soumissions non fissurées peuvent ne pas apparaître dans la liste.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=99546;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
la source
1
, comment puis-je empêcher les voleurs d’ ajouter de façon)
répétée pour générer le reste des chiffres? La même chose serait valable pour pas mal de langues1
alors il apparaît que CJam est un mauvais choix de langue pour ce défi. Il n'y a aucun moyen d'empêcher les voleurs de le faire.10
. Cette règle est en place parce que de nombreuses propositions peuvent probablement être étendues à l'infini (en théorie), donc une notation basée sur le nombre le plus élevé obtenu n'aurait aucun sens.cracked
une forme quelconque. C'est ce que fait actuellement le script utilisateur de refonte .Réponses:
Hexagonie , 18 octets, 10 chiffres, SAFE
Cette soumission fonctionne pour 1 - 10. caractères sont indiqués par Non Révélés un trait de soulignement:
_
.Vous pouvez essayer Hexagony en ligne ici.
Ma solution:
Hex pour la sortie 1:
Essayez-le en ligne!
<
bord de la mémoire est0
, alors il tourne.1
5
8
, mais s'inverse à<
et récupère8
le chemin du retour.5
nouveau1
<
à ce stade, la valeur de la mémoire est 1585 qui, mod 256, se trouve être ASCII1
;@
.Hex pour la sortie 2:
Essayez-le en ligne!
Cela suit le même chemin, mais sur le chemin du retour, il frappe un
)
qui incrémente le bord de la mémoire à 1586, ou2
.Hex pour la sortie 3-9:
Essayez-le en ligne!
2
<
, donc il diminue.]
change le pointeur d'instruction, mais revient immédiatement avec[
)
incrémente à3
!
Impressions3
$
est laissé par les deux premiers chiffres, nous sautons par-dessus la fin (@
)1
change le bord de la mémoire, mais cela n'a pas d'importance maintenant.<
reflète le pointeur en arrière.1
n’a pas d’importance, car nous avons mis@
fin au programme.la source
Rétine , 2 octets, 10 chiffres, fissuré
Fonctionne de 1 à 10,
_
est un personnage caché. Cela ne devrait pas être trop difficile, mais j'espère que cela fournira un casse-tête quelque peu intéressant. :)Vous pouvez essayer Retina en ligne ici.
la source
Octave, 55 octets, 10 chiffres, fissuré
_
est le personnage inconnu.Solution
la source
Python 2, 9 octets, 10 chiffres, fissuré
Aucun caractère caché. Pouvez-vous le casser sans forcer brute?
la source
Perl, 12 octets, 10 chiffres, fissuré!
Les traits de soulignement représentent des caractères inconnus.
Probablement assez facile, et cela ne me surprendrait pas s'il y avait plusieurs solutions. Pourtant, il pourrait être amusant de craquer.
(La solution envisagée était la même que la fissure. Il s’agit fondamentalement d’affecter 10 à une variable à quatre caractères, ce qui est étonnamment difficile en Perl; contrairement à de nombreuses langues de golf, il n’a pas de variable qui commence utilement à dix.)
la source
$_=1;say;#-9
près pareil , mais je ne savais pas comment en obtenir 10.Perl, 46 octets, 10 chiffres, coffre-fort
Le problème
Les problèmes plus courts ont tendance à être résolus rapidement, alors j'ai pensé en essayer un plus long. Les plus longs ont aussi tendance à se fissurée si les gens laissent assez d'écart pour se faufiler quelque chose comme méchant
say
ouexit
, donc toutes les lacunes ici sont courtes. Les caractères cachés sont représentés en utilisant_
.Ma solution
Pour imprimer jusqu'à 2, 3, etc. jusqu'à 9, continuez à modifier le numéro attribué à
$b{0}
la deuxième ligne (c'est$b{0}=2
-à- dire$b{0}=3
, etc.). Le programme pour 9 ressemble à ceci:Ensuite, pour produire 10, commentez la première ligne en y ajoutant un
#
caractère.Explication
La première chose à noter est que la solution ne se joue pas vraiment, à part la suppression des espaces: si nous l'établissons avec des espaces plus lisibles, nous obtenons ceci:
Normalement, lorsque vous accédez aux arguments d'un sous-programme dans Perl, vous le faites en les copiant hors de
@_
. Il y a une bonne raison à cela:@_
alias les arguments du sous-programme donné (ainsi, par exemple,(sub { $_[0] = 3 })->($x)
sera assigné à$x
), quelque chose qui n'est normalement pas souhaitable.Bien que cela
@_
puisse sembler magique, il utilise en fait simplement une fonctionnalité standard des internes de Perl (qui est facilement disponible auprès de XS mais@_
n’apparaît que dans quelques cas étranges en Perl pur, tel que lui-même): un tableau ne stocke pas directement ses éléments , mais plutôt par référence. Ainsi, lorsque nous appelonsb
dans la deuxième ligne ci-dessous, Perl génère un tableau (l'appelant@_
) dont le premier élément est une référence au même stockage que celui$b{0}
utilisé. (Les valeurs de hachage sont également stockées par référence; $ _ [0] et $ b {0} font référence au même stockage à ce stade.) Parce@_
que rien de spécial ne se fait du point de vue des internes, nous pouvons prendre une référence comme avec tout autre tableau, il survit au sous-programme défini dans.Les variables Perl font également référence au stockage de données par référence. Il y a longtemps, les gens utilisaient le code comme
*x = *y;
définir$x
un alias$y
(en leur faisant référence à la même chose), de même@x
qu'un alias@y
,%x
un alias%y
, etc. Cela brise plutôt l'invariant selon lequel les variables portant des noms similaires ne doivent pas nécessairement agir de la même manière, si bien que Perl moderne fournit une alternative; l'affectation d'une référence à un typeglob remplace uniquement la variable qui correspond au type de la référence (de même*x = \%y
, alias%x
pointerait sur le même stockage que,%y
tout en laissant, par exemple,$x
seul). Cette syntaxe ne se soucie pas de savoir si le stockage auquel vous appelez un alias a un nom, donc quand nous assignons la valeur de retour deb
(qui est une référence de tableau qui maintient le tableau précédemment appelé@_
vivant)*b
, ce qui se produit@b
est modifié pour se transformer en alias la liste d'arguments à l'appel deb
(tout en laissant%b
inchangé). Cela signifie, notamment, que$b[0]
et$b{0}
maintenant pointent vers le même stockage, et l' affectation à l' un sera donc changer l'autre. Tout est désormais parfaitement simple.La documentation Perl ne parle pas vraiment de ce genre de détail, donc je ne suis pas surpris que quiconque ait eu le crack; La nature du fait
@_
de ne pas être tout à fait comme les autres tableaux n'est pas vraiment mise en avant, et la plupart des styles de codage visent à minimiser les effets que cela a plutôt que de les amplifier.la source
q
ets
ety
etm
( la plupart du temps à essayer de les amener à se terminer après la$b[0]
cession), mais rien ne fonctionne pour moi (encore).sub b{\@_}
cimenté dans mon esprit et, bien que j'aie expérimenté,*b
je ne pouvais pas l'obtenir! Merci pour l'explication. Je l’aurais peut-être passé sous silence dans votre explication, mais pourquoi ne fait-ilsub b{\@_}*b=b$b[0]
pas de même?\@_
) à*b
, mais vous devez mentionner l'élément de hachage vous explicitement. Avec*b=b$b[0]
, vous vous contentez simplement d'aliaser le nouveau$b[0]
(après avoir changé les@b
points où ) avec celui$b[0]
qui existait au début du programme, ce qui est inutile.JavaScript, 30 octets, 10 chiffres, fissuré
Cela ne devrait pas être trop difficile, mais j'espère que c'est assez difficile à relever. :) Les personnages non révélés sont marqués avec
_
.la source
Perl, 14 octets, 10 chiffres, fissuré
Fonctionne de 1 à 10.
_
sont des caractères cachés.Je pense que cela ne devrait pas être trop difficile à résoudre. J'ai un disque plus dur, pour 22 octets, je le posterai si celui-ci est fissuré.
Code d'origine:
Et remplacer
"!"
par une chaîne de la longueur du numéro que vous souhaitez imprimer, par exemple!
,!!
,!!!
, etc.Cependant, ais523 a trouvé un autre moyen:
la source
JavaScript, 22 octets, 10 chiffres, fissuré
Probablement assez facile à craquer.
_
être un personnage cachéla source
xc_de
c'était autre chose qu'un hareng rougeOctave, 17 octets, 10 chiffres, fissuré
Solution originale
_
est le personnage caché.la source
Gelée , 7 octets , 10 chiffres, fissuré
Pas de joker.
La fissure réalisée (pour utiliser un eval avec un argument) était, comme beaucoup semblent être dans ce fil, pas le prévu.
La fissure prévue était:
la source
10
, car j'ai eu de la chance avec celui-ci en essayant des choses qui pourraient fonctionner.10
Je pense que la manière de travailler fonctionne en évaluant le code de gelée dans la chaîne9
avec un argument de0
(la valeur par défaut de l’entrée), que vous retirez ensuite (aucun effet), puis incrémentez.10
fonctionne pour vous en évaluant le code de gelée dans la chaîne9
avec un argument de[]
- la valeur par défaut de l'entrée, mis0
en file d'attente - que vous incrémentez ensuite., Comme“1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Befunge-93, 11 octets, 10 chiffres et plus, Cracked
Cette soumission fonctionne pendant au moins 1 à 10. Les caractères non révélés sont signalés par
□
.Essayez-le en ligne
Je dois dire que j’ai été impressionné par le fait que deux personnes ont pu proposer des solutions indépendantes à cet égard, mais ce n’était pas ce à quoi je s’attendais. Bien que Martin soit arrivé le premier, je donne la "victoire" à Sp3000 car sa solution est plus portable.
C’était bien ma solution:
la source
"15:**-6-.@
donne 1, mais je ne suis pas sûr que le fait de"
placer 32 en haut (à cause d'espaces implicites) soit un artefact de l'interprète TIO ou une partie de la spécification de Befunge, car essayer quelques interprètes ne semble pas tous le faire. Votre solution envisagée dépend-elle de ce comportement?R, 21 octets, 10 chiffres fissurés
Fonctionne pour 10 numéros.
_
est un personnage caché.Solution originale:
la source
Ruby, 16 octets, 10 chiffres, fissuré par xsot
#
est n'importe quel personnage.la source
Octave, 32 octets, 10 chiffres. Fissuré
_
est un personnage caché.Vous pouvez essayer Octave en ligne ici .
Solution originale:
1:
nnz(isprime(floor(sqrt(i):pi')))
2:
nnz(isprime(floor('sqrt(i):pi')))
3:
nnz(isprime(floor('sqrt(i):pia')))
4:
nnz(isprime(floor('sqrt(i):piaa')))
...
la source
Octave, 17 octets, 10 chiffres, fissuré
Les personnages non révélés sont marqués avec
_
.Solution envisagée:
la source
Octave, 19 octets, 10 numéros, fissuré
_
est le personnage caché.Solution envisagée:
la source
sca
. Venant de vous, j'aurais dû penser aux fonctions de la matrice :-)05AB1E , 5 octets, 10 chiffres, fissuré!
Pas très dur, mais amusant :)
_
est un personnage aléatoire. Utilise le codage CP-1252 . Essayez-le en ligne!la source
05AB1E , 6 octets, 10 nombres, fissuré
Essayez 2, cette fois sans la chaîne à trois caractères: p.
_
est un personnage aléatoire. Utilise le codage CP-1252 . Essayez-le en ligne!la source
JavaScript, 22 octets, 10 chiffres, fissuré
_
est le personnage caché.Astuce sur la solution envisagée
Le caractère à modifier pour générer tous les nombres est toujours le même.
la source
JavaScript 21 octets, 10 numéros fissurés
Les personnages non révélés sont marqués avec
_
Fissuré
Ma version:
la source
Python 3, 19 octets, 10 nombres, fissuré
Les personnages non révélés sont marqués avec
?
. Testé en Python 3.5.2.la source
Python 3, 16 octets, 10 chiffres, fissuré
Les personnages non révélés sont marqués avec
?
. C'est probablement un peu facile puisqu'il n'y a que cinq points d'interrogation, mais j'espère que ce sera amusant.la source
C #, 90 octets, 10 nombres, fissuré
Honnêtement, je ne sais pas à quel point c'est difficile à résoudre.
Edit: Oups, erreur de transcription. Un
_
trop peu aprèsusing
.Maintenant craqué par Hedi , qui a trouvé la solution voulue (à moins du nom de la classe).
la source
JavaScript 33 octets, 10 numéros craqués x2
Oups je poste posté ma ligne pour générer 10 Qui Hedi craqué comme si c'était pour 1
Version destinée à poster pour générer 1
Les personnages non révélés sont marqués avec
_
la source
console.log(atob|"0Xc0"-0xB6|("Zp=="))
je pensePython, plus de 10 chiffres, 61 octets, fissuré!
Voici le code que j'ai posté:
Le code original était:
Fondamentalement, il génère une erreur (
'x' is not defined
), puis affiche la ligne sur laquelle l'erreur a été trouvée. Donc, continuez à ajouter des nouvelles lignes au début pour incrémenter le nombre.Je savais que ce ne serait pas difficile à résoudre - je voulais juste une façon amusante d'imprimer des nombres - mais je ne m'attendais pas à ce que Sp3000 le reçoive si vite, c'est du talent professionnel!
la source
STDOUT
et imprimer un numéro, mais je suppose que je l'ai trop réduit. Et bien.sys
certainement simplifié la05AB1E, 11 octets, fissuré!
Fonctionne de 1-10.
_
est un personnage caché.Solution envisagée:
la source
Octave, 24 octets, 9 chiffres, fissuré
_
est un personnage caché.(Inspiré par le défi de @ LuisMendo .)
la source
JavaScript, 9 octets, 10 chiffres, fissuré
_
est le personnage caché.la source
Octave, 25 octets, 9 chiffres. Fissuré
_
est un personnage caché.la source