Ce défi était à l'origine mis en bac par Magic Octopus Urn; Je l'ai adopté et posté avec sa permission.
Ceci est le fil des flics. Le fil des voleurs est ici .
Le défi
- Première étape: Écrivez un morceau de code (fonction ou programme complet) qui vérifie la primauté .
- Deuxième étape: supprimez des morceaux de votre code en remplaçant les caractères par le symbole
█
. - Troisième étape: publiez le code expurgé sur le fil de la police.
- Quatrième étape: attendez que votre code soit craqué et essayez de casser le code des autres.
Par exemple, le code Groovy {it.isPrime()}
pourrait devenir {██.is█████()}
. (Celui-ci serait stupidement facile à casser; je sais aussi que ce .isPrime()
n'est pas une méthode Groovy.)
Notation
Vous devez inclure la note de votre programme dans sa soumission. Le score est défini comme le rapport des caractères expurgés aux caractères. Donc, si votre programme avait 20 caractères et 5 ont été caviardés, votre score serait de 0,25. Le code Groovy ci-dessus aurait un score de 0,5.
Règles
- Votre programme n'a besoin que de gérer des nombres entiers positifs. Il devrait sortir une valeur véridique si le nombre est premier et une valeur fausse sinon. Veuillez préciser dans votre réponse ce qu'elle produit.
- Votre code ne doit contenir aucun commentaire ni espace inutile.
- Aucun hachage ou obscurcissement cryptographique.
- Votre code ne doit pas être expurgé à plus de 50% (au moins la moitié des caractères doivent être affichés). Cela signifie que le score le plus élevé possible est de 0,5.
- Si votre réponse n'est pas fissurée dans une semaine, vous pouvez la marquer comme sûre et la modifier dans la fissure voulue.
Gagnant
Le gagnant sera la réponse non fissurée ayant obtenu le score le plus bas dans les deux semaines suivant sa publication. En cas d'égalité, celui qui a le plus de voix gagnera. Ce fil est toujours ouvert à plus de soumissions, mais le gagnant choisi après deux semaines sera permanent.
n >= 1
ou tous les nombres entiers?)Réponses:
Functoid , score = 14/223 ≈ 0,062780 [sûr]
Prend entrée comme argument de ligne de commande et les sorties
True
(prime) ouFalse
, essayer en ligne!Astuce (ajouté 4 jours après la publication):
Solution
Essayez-le en ligne!
Explication
En raison du caractère aléatoire qui en résulte,
?
il n'est pas possible d'aplatir le programme. Voici le programme plat avec un point d'interrogation où une expression aléatoire sera:Programme complet:
Le
{trial_division}
:{recursive_call}
, en prenant des argumentsf
(auto-référence),x
ety
(la note0
est la même queFalse
){divides}
est?(yg(KZ)(C(C(BB(BS(b(C(BBI)I))))(C(BC(b(C(BBI)I)))I))(C-)))
où?
est choisi au hasard (en fonction de la direction aléatoire) parmi:Y
S(CBO)(CBO)
S(SB(KO))(BBSBKO)
Ce sont tous équivalents les uns aux autres,
{divides}
devient ainsi le point fixe de:{recursive_call}
est une expression assez obscurcie qui ne fait quef x (y-x)
la source
8086 DOS COM, 87 octets, score 19/87 ~ = 0,2183
Fissurée par NieDzejkob
Il s'agit d'un programme COM; attend le nombre comme argument de ligne de commande, affiche Y ou N. Limite: 65535 car le processeur 16 bits (sizeof (int) serait 2). La nouvelle ligne est 0x0D 0x0A sur cette plate-forme. Oui, vous comptez 20 █ au lieu de 19 █. L'un d'eux est un vrai █ et n'a pas été remplacé. Muhahaha.
L'espace en position 10 est en fait un octet NUL. Le symbole pour NUL est le même que l'espace dans l'ancienne police VGA.
la source
╛üX
le tout début estmov si, 0x5881
.Swift 4 , score 26/170 ≈ 0,153, sûr
Essayez-le en ligne!
Fissure prévue
Non golfé
la source
brainfuck , 37/540 octets (score: 0,06851) ( fissuré par Nitrodon)
Essayez-le en ligne!
Imprime "premier" si premier, "pas premier" si composite. Fonctionne techniquement pour les entiers arbitraires mais expire sur TIO pour les nombres supérieurs à 6000
la source
Mathematica, 97 octets, score de 0,2989690722 ( fissuré )
Cordes! Regex! Primes?
Il existe une chose comme une expression rationnelle de vérification de primalité, mais ce n'est pas ce qui se passe ici.
Cela a été fissuré , mais la façon dont je le voulais était assez différente, donc je ne révélerai pas encore la solution prévue.
la source
Jelly , score 0. (142857) ( fissuré )
Essayez-le en ligne!
Republiez mon autre réponse, cette fois avec quelques octets supplémentaires révélés pour éviter les tricheurs involontaires.
la source
Octave , score: 0,15 (86 octets)
J'ai révélé plusieurs autres personnages. Je pensais que le critère gagnant était le score le plus élevé, pas le plus bas .
Essayez-le en ligne!
Bonne chance =)
la source
Python 3, 388 octets, .155, fissuré
Fissure de dernière minute. Oui, c'est le test de Miller-Rabin.
Je suppose que les tests probabilistes sont autorisés, incertitude 2 ^ -100
Eh bien, un bon indice dans la phrase précédente
Valeur renvoyée 0 comme COMPOSITE et 1 comme PROBABLEMENT PRIME
* 368> 388: correction du problème lorsque z <4
Solution:
la source
"COMPOSITE"
viole l' esprit de la règle "Votre code ne peut contenir aucun commentaire ni espace inutile."095 , score 0,20512820512 [Coffre-fort]
Imprime 1 si premier, 0 si composite
Solution:
la source
Node JavaScript, score: 0,4
Voici où cela fonctionne. Programme complet qui prend les entrées du premier argument de ligne de commande et les sorties vers stdout.
Avec un peu de chance, une solution pas si difficile pour commencer.
Utiliser cet extrait pour calculer le score.
la source
Jelly , score 0. (142857)
Essayez-le en ligne!
Prend un argument de ligne de commande.
Faux =
0
Vrai =
1
la source
JavaScript, 103 octets, score de 0,1923
x=>{if(x<4)return(!0);for(y=x>>>Math.log10(p=████;--y-1;(p=x/y%1)████if(██&&(███))break████return(███)}
Renvoie un booléen.
Fissure involontaire
la source
Javascript, score 0,1894093686354379
Bonne chance. : p
appelez f avec le nombre premier que vous souhaitez vérifier.
la source
t
.> <>, score 0,096, cracké par Jo King
Fissure prévue:
la source
v
une boucle infinie inconditionnelle?Brain-Flak, Score: 35/134 = 0,2612 ( craqué! )
(({████){██[████)█>(({}))<>}<>{}███{}((██({}))█████{}]██)({}(<>))<>{(({})){({}[()])<>}{}}{}<>([{}()]{})██[██()██(()█[()]██{}██}{}<>{})
Renvoie 1 pour prime, 0 pour composite.
C'est un langage très difficile pour relever ce défi, car le formatage est si restreint qu'il faut faire des efforts pour ne pas rendre évident le caractère manquant.
C'est un langage très difficile à résoudre pour ce défi, car il est ridiculement difficile à lire.
la source
Java 1.4+ , 24/145 (0.16551724137)
Essayez-le en ligne!
De la façon la plus étrange que j'ai vue pour amorcer un check in Java de loin lol.
la source
Japt, 19 octets, 0,315789 ... score, Safe
Je ne sais pas si j'ai obscurci plus que ce dont j'avais besoin, me coûtant un meilleur score.
View solution (Explication à venir)
la source
C, 34/76 = 0,447368, sûr
Avoir autant de blancs signifie que je serai beaucoup plus susceptible d'avoir une fissure involontaire que celle prévue.
Solution:
explication:
la source
M , score: 4/22 = .1818 ..., craqué par Dennis
Cela peut se terminer par une fissure involontaire, nous devrons voir.Ça faisait.Les solutions de Dennis sont
Essayez-le en ligne!
Je laisserai ma solution cachée pour que quelqu'un craque. Mon indice à Dennis sur sa soumission de voleur était le mot "zoo".
la source
C, 66 octets, 29 caviardés, score de 0,439
Juste une simple soumission C; Je verrai combien de temps cela prendra avant d'en poster un vraiment mauvais.
la source
Pyth , score: ~ 0. (461538) (13 octets) ( Cracké )
Essayez de le casser ici!
la source
sh + coreutils, score 19/143 ~ = 0,1328
fissuré
TIO
la source
Brain-Flak , score 29/140 = 0,207
({}██()██<>){██({}[()])██{}{}███({<({}[()])><>({})<>}{}██████{}██){(({})){({}[()])<>}{}}<>([{}()]{}<>{})<>}(<>██{}({}████)((){[()]██{}██}{})
Essayez-le en ligne!
Sorties 1 pour prime et 0 pour non-prime.
la source
Tampio (impératif), score: 24/51 = 0,5
C'est une solution évidente, j'espère que personne ici ne comprend le finnois.
la source
Tampio (impératif), score: 26/223 = 0.11659 ...
la source
Pyt , score: 0,288288 ... [Sûr]
Sorties "True" si premier, "False" sinon
J'ai oublié de mentionner qu'il s'agit d'un test probabiliste.
Solution:
Cela met en œuvre le test de primalité de Solovay-Strassen.
Essayez-le en ligne ici!
la source
Rubis, 27/73 = 0,3696863
Cela devrait être amusant.
la source
Python 3 , score: 0,386363, fissuré
Opter pour les fruits très bas au début. Je trouverai bientôt une réponse effrontée.
user71546 l'a fait "fonctionner" avec
... mais c'était involontaire. Le code d'origine était
Ni l'un ni l'autre ne fonctionne pour x <2. Oups.
la source
JavaScript (ES7), 297 octets, 103 expurgé, .347
Ma réponse Python précédente était trop simple, alors voici une mauvaise réponse;)
La logique derrière est cependant simple.
la source