Ceci est le fil des flics. Le fil des voleurs est ici .
Votre défi est d'écrire un programme ou une fonction qui, avec une certaine entrée, imprime la chaîne exacte Hello, World!
et une nouvelle ligne. La majuscule, l'espacement et la ponctuation doivent être exacts.
L'entrée peut être prise via une entrée standard, un fichier ou des arguments de ligne de commande / fonction. La sortie peut être donnée via une valeur de retour, une écriture dans un fichier ou une sortie standard.
Votre programme doit imprimer Hello, World!
pour au moins une entrée. Lorsque votre programme reçoit la mauvaise entrée (c'est-à-dire l'entrée qui ne le fait pas imprimer Hello, World!
), il peut faire tout ce que vous voulez - planter, imprimer des bêtises aléatoires, appeler Chuck Norris, etc.
Vous ne pouvez pas utiliser un algorithme de hachage ou toute méthode similaire pour masquer l'entrée requise.
Les soumissions sont préférables pour être exécutables et fissurables sur TIO . Les soumissions non exécutables ou fissurables sur TIO sont autorisées, mais veuillez inclure des instructions pour les télécharger / les exécuter.
Après une semaine, ce défi sera fermé aux futures soumissions de flics. Le gagnant est le code le plus court qui n'est pas fissuré après une semaine de publication ("c'est" le code, pas ce défi). Le gagnant sera accepté après deux semaines.
Après qu'une semaine s'est écoulée depuis la publication, veuillez marquer votre réponse comme sûre et montrer l'entrée (en a > ! spoiler quote
). Si un voleur déchiffre votre soumission (avant la fin de la semaine), veuillez la marquer comme fissurée et montrer l'entrée d'arrêt (dans un> ! spoiler quote
).
Vous recherchez des soumissions non fissurées?
fetch("https://api.stackexchange.com/2.2/questions/137742/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
sha3
tombe dans cette catégorie, mais sinon où tracez-vous la ligne? Je veux dire quemod 1e3
c'est aussi une fonction de hachage, et j'irais même jusqu'à dire que bon nombre des soumissions vont être des fonctions de hachage, car ce défi le demande essentiellement.Réponses:
Python 3,
191186 octets (SAFE!)Identique à ma réponse précédente, mais sans la déclaration noob eval, de sorte que quelqu'un doit réellement résoudre le problème que j'ai créé.
exécutez-le maintenant avec les paramètres corrects, tels que
python3 hw.py 1 2 3
Edit : il manquait une virgule à la version précédente dans "Hello, World!", Et j'ai également réalisé qu'il y avait un ennemi inutile, qui a maintenant disparu.
Edit 2 : Juste pour le plaisir, voici une version Pyth presque identique (47 octets) du même code:
L'entrée est tirée
stdin
et se présente sous la forme d'une liste d'arguments, tels que[1,2,3]
Je ne vois aucun intérêt à publier une réponse distincte, car si vous craquez la version Pthyon3, vous craquez également la version Pyth, même sans connaître Pyth.
Répondre:
Explication du code:
Arriver à la solution, en python:
la source
literal_eval()
least
module peut être utilisé pour évaluer les expressions en toute sécurité, afin que leprint(
problème d'injection de code ne fonctionne pas. Ce n'est probablement pas pertinent ici, mais je pensais juste le mentionner.Hello, World!
? N'a pas encore craqué, mais il semble qu'il manque une virgule (seulement 12 itérations dans la boucle de jointure)TeX - 38 octets fissurés (ish)
Cela vaut le coup, car je ne peux pas imaginer que quiconque sur un site sur l'écriture de courts morceaux de code connaisse TeX:
Pour l'exécuter, vous devez vous procurer une forme de TeX qui autorise le mode interactif. Enregistrez-le dans un fichier et exécutez TeX (ou pdfTeX, XeTeX, etc.) dessus.
Edit: je considère actuellement ce semi-cracké. La solution envisagée utilise l'entrée de stdin, mais l'entrée TeXnically de la façon dont le programme est appelé est valide. J'ajouterai des réponses TeX plus sournoises si quelqu'un obtient la méthode prévue.
Voici la solution envisagée:
Cela peut être sournois, mais devrait toujours être dans les règles du jeu.
la source
tex \ Hello, world!\bye
(23 octets)?texnically
Oh mince.> <> , 538 octets, fissuré par rexroni
Essayez-le en ligne , ou vous voudrez peut-être utiliser la plaine de jeux pour poissons .
Les trois premières lignes sont lues dans une chaîne de STDIN et utilisent ses mods de codes 26 comme coordonnées pour mettre les caractères "
>/v>v\v</>
" dans le labyrinthe ci-dessous. La solution envisagée est une chaîne de 20 caractères composée uniquement des lettres A – Z (bien que vous puissiez bien sûr utiliser tout ce que vous voulez).Solution:
la source
Octave, 59 octets, fissuré
Cela fonctionne dans Octave 4.2.0. Je ne peux pas garantir la compatibilité avec toutes les versions.
Remarque: cela n'imprime aucun espace de fin ni nouvelle ligne. Voici à quoi ça ressemble:
Il dit essentiellement: "Imprimez la chaîne d'entrée, sauf si l'entrée est" Hello, World! ", Auquel cas elle ne doit rien imprimer (ou le caractère nul).
la source
%c
moyens chaîne ou omble chevalier ... Peut-être vous cache quelque chose? De plus,*~
cela me rend un peu méfiant ...\n
. Je pensais que le texte de la question disait " saut de ligne facultatif ".CJam , 7 octets ( fissuré )
Essayez-le en ligne!
Entrée prévue:
la source
MATL , 6 octets. Fissuré
Essayez-le en ligne!
la source
['Hello,' 1 'World!']
. Why cheating? :-( The doc/help forD
says Most input characters below 32 are replaced by spaceExplode, 23 bytes, Cracked
More coming, this is just the beginning >:)
Try it online!
Explorer Explanation
There are four explorers in this program. I'm not entirely sure that wait (
>
) is working correctly.Read user input (
?
), write and extend the tape (@
) down (_
).For 4 ticks (
4
), modify the tape (&
) downwards (_
), jumping by 5 (5
), by subtracting (-
) 19 (j
).For 16 ticks (
f
), modify the tape (&
) upwards (^
) in a wave (~
), alternating no affect, +13, no affect, and -13 (c
).For 6 ticks (
6
), modify the tape (&
) in both directions (|
), decreasing (\
) by 4 (4
) each time, and jumping by 7 (7
). Decreasing means that it subtracts 4 the first time, 8 the second time, etc.la source
JavaScript (ES6),
173169163150151148143 bytes (Cracked)Let's have something totally different... and totally evil.
Usage:
f(something) // returns 'Hello, World!'
Try it online!
la source
C# (.NET Core),
130152 bytes, CRACKED+22 bytes, I forgot about trailing newline... Program works the same as before, the newline is added to any output.
Try it online!
Byte count also includes
For a start I went for something not too crazy. It can has multiple answers.
The "official" crack:
la source
tcc, 89 bytes, cracked by Dennis
This is particularly evil due to tcc's dynamic resolution. Lots of functions are predeclared and trying to overwrite them simply doesn't work.
la source
puts
and I thought that outputs.)mprotect
is being a butt.Bash, 62 bytes, (cracked by ArchDelacy)
No alphanumerics or forward slashes. You should have fun with this one.
Try it online!
la source
brainfuck, 7 bytes cracked
Try it online!
Good luck. (doesn't work with every BF interpreter
la source
JavaScript (ES6), 102 bytes (Cracked)
The previous version has a massive cheese. Let's try this again...
Try it online!
Author solution:
Usage:
la source
Cubically, 159 bytes (Cracked)
This will be pretty easy to those who are comfortable with Cubically. Try it online!
la source
6502 machine code (C64),
5153 bytes (Cracked)Online demo
Usage:
SYS49152,[x],[n]
, wherex
is a 16bit unsigned integer andn
is an 8bit unsigned integer.Invoked with wrong values, a crash is very likely.
For cracking, you might want to run it in a local installation of vice, so here's a BASIC loader to paste into the emulator (
RUN
it to place the program at$C000
):Update: Added two bytes for the load address to make this an executable C64
PRG
file in response to the discussion on metala source
b7eb
callsaefd
, but only after callingad8a
(parse number as float (!)(wtf)(MS)) andb7f7
(convert that float to 16bit unsigned int) -- so I have to first callaefd
myself for consuming the first comma.Python 2, 63 bytes, cracked
Just to get the ball rolling...
Try it online!
la source
Pyth, 18 bytes (Cracked)
This is extremely easy, and anyone that knows Pyth would crack it in the blink of an eye, but still... Note that you must put the String between quotes.
Try it online!
la source
JavaScript (Browser only), 95 bytes (Cracked)
Not too hard. Has multiple solutions.
la source
Jelly, 11 bytes (cracked)
Try it online!
Intended input:
la source
05AB1E, 20 bytes (Cracked)
Shouldn't be too hard though:
Uses the 05AB1E encoding. Try it online!
la source
Ly, 12 bytes (Cracked)
Try it online!
I don't expect this to last very long, but oh well.It didn't last very long.la source
Python3, 192 bytes Cracked I guess
The text it reads is the first program argument:
python3 hw.py '[1,2,3]'
Don't be lame and try to put a
print("Hello World!")
statement as the argument... it prints an error afterwards anyways (at least on the command line), so I don't think that should count. (Edit: somebody did exactly that)la source
Jelly,
2021 bytes (Cracked)+1 byte - "...and a trailing newline"
Try it online!
There are, in fact, infinite solutions.
la source
⁸
which is for some reason missing from the TIO link, so I hope I didn't confuse myself.Lua 5.1, 44 bytes (Cracked)
Note that Lua 5.1 is a different language than Lua 5.2 or Lua 5.3. "Try it online" doesn't have Lua 5.1. You can check your Lua version by running
print(_VERSION)
. (There should be a solution in any implementation that uses PUC-Rio's Lua 5.1 core.)As a test harness, you can use something like this:
Test harness on repl.it
la source
C (GCC on TIO), 84 bytes golfed (Cracked)
Here's an ungolfed version that works too:
la source
JavaScript (ES6), 92 bytes (Cracked)
This simple string copy function seems to be really resisting you to copy any strings resembling
Hello, World!
...Try it online!
la source
Röda, 71 bytes (Cracked)
Try it online!
Usage:
push(/* input */) | f()
(where f is a variable that holds the function above).la source
JavaScript (ES6),
135119 bytes, (Cracked)Try it online!
la source
Ruby, 88 bytes, Cracked by w0lf
Try it online!
la source
JavaScript (ES6) 107 Bytes [Thanks Евгений Новиков] (Cracked)
Call on the
i
function using a string.The
console.log...
is for testing purposes.Try It Online!
la source
var
, (2)()
from one arrow-function argument, (3) replacereturn
toeval("")
(4) delete;
at the end. 110 bytes solution: pastebin.com/qwdm7fT7 Good luck