Edit: Il y aura un bonus de -20 pour le masquage aléatoire
Bonjour chers dénonciateurs et porteurs de connaissances secrètes.
Je suis due à un entretien par mail et je - bien sûr - ne peux pas dire des noms spécifiques en entier. Mais comme je veux le divulguer d'une manière plutôt pas si évidente, j'ai besoin de votre aide.
Je fournirai ces noms sous forme de
"evil_company_that_makes_me_shiver"
mais je ne veux sûrement pas l'expliquer complètement. Votre tâche pour m'aider et aider le monde entier est de fournir un programme agréable qui transforme ce qui précède en
"ev**************************"
ou
"**il************************"
ou même
"****_c**********************"
Je pense que vous avez compris. Mais il y a un défaut: je veux divulguer le nom au total, donc je dois transmettre le nombre d'occurrences et le mot lui-même au script et il divulguera les lettres petit à petit. Un exemple pourrait être
~$ ./whistle NSA 3
> "N**"
> "**A"
> "*S*"
ou
~$ ./whistle nuclear 3
> "nu*****"
> "***lea*"
> "**c***r"
ou
~$ ./whistle nuclear 2
> "nuc****"
> "***lear"
J'espère que vous pourrez m'aider et comme nous savons que la taille compte, le code le plus court l'emporte. Aidez à rendre ce monde meilleur!
Réponses:
GolfScript, 26 caractères
Puisqu'aucun moyen spécifique de divulgation n'a été spécifié, j'ai décidé d'aller le plus court:
Vous pouvez tester ce code en ligne .
Exemple:
Code commenté:
la source
PHP - 80 octets
Exemple d'utilisation:
la source
Python (
157149139138-20 = 118):Python au fromage (
5535):Vous ne m'avez pas dit la distribution requise;)
Python uniforme (
129123122 122):Production:
donne
la source
g=lambda a,b:[a]+["*"*len(a)]*(b-1)
. : Pdisclose the letters bit by bit
peut aussi signifierfirst, disclose the first bit (that just happens to be the entire thing), repeat until the b is met
. Cela peut également se produire pour la première réponse, alors revendiquez simplement que vous l'avez utilisée, et il est tout à fait heureux de produire ce résultat. (Je viens de réaliser que vous pouvez également l'écrire sous la forme["*"*len(a)]*(b-1)+[a]
, afin de commencer par divulguer des bits qui contiennent juste 0 octet d'informations réelles, et sur la dernière ligne, vous divulguez un autre bit.) Cependant, je me rends compte que cela s'étire au maximum.Bash, 80 octets
En action:
la source
C #, 226
Cela peut être réduit si vous remplacez les éléments aléatoires par une distribution plus simple (module de réflexion), mais le caractère aléatoire est ce qui m'a intéressé. =)
Quoi qu'il en soit, en mettant tout sur une seule ligne, je reçois 226 caractères. En code lisible, cela ressemble à ceci:
Exemple de sortie:
la source
i
vous pourriez probablement vous retrouver avec***/test
.Perl, 24
Nécessite le
-p
commutateur, qui représente deux des octets. Lit à partir de STDIN.Comment ça fonctionne
En raison du
-p
commutateur, Perl lit le premier lie d'entrée et stocke son contenu dans$_
.La commande
$_ x=<>;
duplique la première ligne d'entrée le nombre de fois<>
spécifié par la deuxième ligne d'entrée ( ).La commande
s/(.|\n)./\1*/g;
consomme deux caractères et remplace le second (qui ne peut pas être une nouvelle ligne) par un astérisque. Il le fait jusqu'à ce qu'il ait consommé l'intégralité du contenu de$_
.Étant donné que les retours à la ligne comptent comme le premier caractère, cela masquera tous les caractères pairs sur la première ligne et tous les caractères impairs sur les lignes restantes.
En raison du
-p
commutateur, Perl imprime le contenu de$_
.Exemple d'entrée
Exemple de sortie
la source
could
vous laisse passer :-)Since newlines count as the first character, this will obfuscate all even characters on the first line and all odd characters on the remaining lines.
On dirait que ça échouera pourcodegolf\n1
Java - 490
Ouais, pas vraiment joué au golf ou quoi que ce soit. Eh bien, le voici:
Dans un format agréable et lisible:
Exemple d'utilisation (lors de l'exécution à partir de la classe compilée)
la source
import java.util.*
aussi,ArrayList<String> = new ArrayList<>();
ça marchera. Vous pouvez également supprimer de nombreux espaces. Et la plupart du temps, vous pouvez utiliser à laList
place deArrayList
.Python 3-187 (-20 = 167)
Il m'a fallu un certain temps pour écrire, pourrait probablement être plus joué au golf.
Exemple d'utilisation:
En fonction - 161 (-20 = 141)
la source
sys.argv
dans l'affectation et initialisez enx
tant quex=['']*int(b[2])
(avecb[2]
remplacé par ce que vous nommez la variable que vous utilisez dans le décompression).C # 184
Non-golfé
Échantillon:
la source
Perl 6 (77 octets)
Cela peut être considéré comme de la triche, mais cela résout le problème (il n'imprime pas entièrement la chaîne).
Et l'exemple de sortie.
la source
JavaScript - 170
Rapide, se casse si vous fournissez un nom et demandez plus de pièces que de personnages, mais fonctionne jusqu'à ce point et jusqu'à 1. Je pourrais jouer au golf plus je suppose, donc peut réviser ou prendre des conseils, car c'est un peu le bordel.
Edit: Golfé plus loin (à partir de 187) avec suppression des supports (@Synthetica) et remplacement de Math.floor de @toothbrush. Un changement de boucle comme suggéré entraîne des erreurs dans la sortie.
la source
function s(d,a){o="";b=d.length;x=Math.floor(b/a);y=b-x*a;for(c=1;c<=a;c++)r="*",o+=Array((c-1)*x+1).join(r)+d.substr(c*x-x,c==a?x+y:x)+Array(c<a?b-c*x+1:0).join(r)+"\n";return o};
close-compiler.appspot.com/home était capable de raser 8 caractères;)breaks if you supply a name and ask for more pieces than characters
x=b/e|0
au lieu dex=Math.floor(b/e)
. En outre,for(c=1;c<=e;c++)
peut être raccourci àfor(c=1;c++<=e;)
.R, (120-20) = 100 octets (2 solutions différentes de même longueur)
En plus de la concision, R dispose à coup sûr du meilleur générateur de nombres aléatoires! :) Voici la 1ère solution de longueur 120:
Si la fonction est nommée f , la sortie ressemble à:
Et voici la 2ème solution, toujours avec un masquage aléatoire, et encore 120 octets de long:
la source
Scala (1) 177 octets
Après que la solution dans RI en ait également trouvé une à Scala, la voici:
Scala (2) 129 octets
Après une courte recherche, j'ai trouvé la méthode zipWithIndex . Merveilleux :)
Voici la solution:
la source
Javascript - 166
Utilisation de regex.
Échantillon
la source
k [50-20 = 30 caractères]
Explication
Exemple
Production
la source
JavaScript - 139-20 = 119
Utilisation et exemple de sortie:
Comme le masquage est aléatoire, la sortie peut également ressembler à ceci:
la source
Julia 56-20 = 36 (fonctionne souvent)
En essayant de choisir une solution aléatoire plus courte, j'ai décidé de sacrifier le fonctionnement garanti pour une solution plus courte. Ce n'est vraiment pas une très bonne solution.
la source
F # -
818075Ceci est assez similaire à d'autres qui ont été proposés:
Échantillon:
En tant qu'application complète et autonome, il contient
160155156 caractères:la source