Créez un programme cat, alias un programme qui prend une entrée et l'imprime.
... Sauf que le programme supprimera au hasard les caractères de votre saisie et l'imprimera à la place.
Chaque caractère dans l'entrée devrait généralement avoir des chances égales à supprimer avec le programme, cependant, comme il est difficile de le faire, les chances pour chaque caractère peuvent varier de 10% au maximum.
Votre programme doit prendre l'entrée, puis supprimer au hasard les caractères de l'entrée, puis imprimer à nouveau cette version. (Vous pouvez imprimer avec des retours à la ligne ou d'autres caractères au cas où votre langue doit imprimer des retours à la ligne.)
Si l'entrée était BOOOWL
, elle ne devrait pas supprimer tous les Os avec une chance égale: chaque caractère (non unique) devrait être pris en compte, donc au lieu que chaque O combiné ait une chance 1/5 (par exemple), chaque O devrait avoir un 1 / 5 chance, alors, au lieu d'avoir une chance de 1/5 BWL
, il devrait y avoir une chance de 1/5 BOWL
, BOOWL
.
L'entrée est limitée à STDIN ou à son équivalent le plus proche.
Chaque personnage doit avoir un minimum de 10% et un maximum de 30% de chances d'être supprimé.
Les cotes de chaque personnage doivent être calculées individuellement.
Vous pouvez utiliser n'importe quel composant de votre langage prenant en charge des actions aléatoires, que ce soit des fonctions ou autre chose.
La sortie doit être via STDOUT ou l'équivalent le plus proche. Si votre langue a STDOUT, ne sortez pas autrement. Si votre langue ne peut pas produire de chaînes sous forme de texte, utilisez l'équivalent le plus proche (la sortie du tableau de caractères C est OK ici).
C'est le golf de code. Le programme le plus court gagne.
BOWL OF SOUP
, tous les éléments peuventO
- ils être supprimés en une seule fois?Output must be through STDOUT, as a text. Do not output a character array.
<- J'ai un langage qui vous permet de sortir un tableau de caractères (il est aplati avant la sortie). Est-ce interdit? Qu'en est-il des langages comme C, où une chaîne est essentiellement un tableau de caractères?Réponses:
Japt
-f
, 2 octetsLe
-f
drapeau "exécute le programme sur chaque élément dans la première entrée, produisant un tableau de ceux qui retournent une valeur véridique."5ö
renvoie un nombre aléatoire compris entre 0 (inclus) et 5 (exclusif). Comme JavaScript, 0 est faux dans Japt.Essayez-le
la source
-f
, dans le titre.Python 3 , 63 octets
Essayez-le en ligne!
Python 2 ,
6765 octetsEssayez-le en ligne!
Chaque personnage a 20% de chances d'être abandonné.
Approche différente, même longueur:
Essayez-le en ligne!
la source
Create a cat program, a.k.a a program that takes an input and prints it.
Fusain , 4 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Vous pouvez utiliser n'importe quel nombre de
4
à10
pour obtenir des chances de25%
à10%
respectivement.la source
Befunge-98 (PyFunge) , 11 octets
Essayez-le en ligne!
Chaque personnage a 25% de chances d'être supprimé. Cette décision est prise aux trois
?
instructions.?
définit le compteur de programme dans l'une des quatre directions, avec une probabilité égale. Dans ce cas, vous pouvez revenir en haut et en bas à la même instruction, afin que nous puissions ignorer ces options.Il existe deux façons de sortir de la forêt dep2= Une / deux de probabilité d'émission en sortie. La possibilité de délivrer en sortie si à partir de la droite p3= 1 / 2 * 1 + 1 / 2 * p2= 3 / quatre . Par conséquent, après avoir lu un caractère, nous sautons à l'extrême droite
?
s: à droite (sortie) et à gauche (pas de sortie). Cette situation est symétrique, de sorte que si à partir du milieu?
, il y a un?
est?
pour déterminer s'il faut ou non sortir.la source
Octave , 23 octets
Génère un tableau de la même taille que l'entrée (les chaînes dans Octave sont des tableaux de caractères), vérifie chacun des nombres aléatoires s'il est supérieur à
0.2
, puis utilise l'indexation logique pour extraire les caractères aux positions correspondantes.Essayez-le en ligne!
la source
Gelée ,
95 octetsEssayez-le en ligne!
Une monade qui prend une chaîne Jelly comme argument et renvoie la chaîne Jelly traitée. Lorsqu'il est utilisé en tant que programme complet, il imprime implicitement la sortie. Chaque personnage a 20% de chances d'être supprimé.
Explication
la source
Japt , 3 octets
Chaque personnage a 1 chance sur 5 d'être supprimé. Le
5
peut être changé en n'importe quoi entre4
&9
, inclus, ouA
pour10
changer les cotes.Essayez-le
la source
Wolfram Language (Mathematica) , 24 octets
Essayez-le en ligne!
Prend une liste de caractères en entrée. Chaque personnage a une
.2
chance d'être supprimé.la source
05AB1E ,
54 octets-1 octet grâce à @Grimy .
Essayez-le en ligne ou exécutez le même programme 10 fois .
Chaque personnage a un changement de 25% d'être abandonné.
Explication:
≠
pourrait également être_
(==0
).la source
5L
peut être₄
pour -1 (change la chance de 20% à 25%, ce qui est toujours acceptable).MATL , 9 octets
Exaplanation:
Essayez-le en ligne!
la source
Pyth ,
85 octetsEssayez-le en ligne!
Version précédente, 8 octets:
Essayez-le en ligne!
la source
Q
générera une erreur si l'entrée n'est pas en python. Erreurs par exemple de[1
oua/b
.Q
,w
etz
ne fonctionnera que pour une entrée sur une seule ligne, donc la meilleure option serait probablementj.z
Cubix , 20 octets
Essayez-le en ligne!
Plus longtemps que je ne l'avais espéré, car j'ai eu un certain nombre d'opérations inutiles dont je n'arrive pas à me débarrasser. La chance de laisser tomber un personnage est de 25%. Je suppose que ça va.
Regardez-le courir
Brève explication:
A|A
cela initialise la pile, entrez tout, réfléchissez, entrez tout (juste un EOI -1);?
pop to of stack, test pour EOI (-1)._?@
s'il est négatif, refléter dans le test et terminer à l'arrêt$D
sauter le\
dans le setter de direction aléatoire.o
sortie pour ensuite revenir dans la boucle, on manque leo
chemin dans son et va directement à la boucle.la source
APL (dzaima / APL) ,
109 octets SBCSFonction de préfixe tacite anonyme. Chaque personnage a exactement 20% de chances d'être supprimé.
Essayez-le en ligne!
5¨
zéro pour chaque caractère?
plage entière aléatoire 1 à 5 pour chaque caractère4≥
Masque booléen pour les entiers inférieurs ou égaux à 4⊢⌿⍨
filtrer l'argument en utilisant ce masquela source
Rétine , 15 octets
Essayez-le en ligne! Explication:
Traitez chaque personnage individuellement.
Effectuez une substitution au hasard. La première substitution supprime le caractère, tandis que les trois autres le laissent inchangé, donnant ainsi une
25%
chance de supprimer le caractère. Cela peut être diminué si nécessaire en ajoutant des paires de nouvelles lignes supplémentaires.la source
R ,
3223 octetsEssayez-le en ligne!
Fonction prenant un vecteur de caractères en entrée et renvoyant un vecteur de caractères traité. Chaque personnage a 20% de chances d'être supprimé.
Merci à @Roland et @Giueseppe pour avoir aidé à économiser 7 octets, et @JDL pour 2 autres!
la source
function(x)x[!rbinom(x,1,0.2)]
function(x)x[rf(x,1,1)>1]
;df(1,1,1)
est de savoir0.16
qui fait l'affaire.rt(x,3)>1
(environ 20% de chance)<1
, mais merci! 2 autres sauvés.T-SQL 2012, 83 octets
Boucle à travers l'entrée de droite à gauche en supprimant 0 ou 1 caractère.
25% de chances que chaque personnage soit supprimé.
Explication:
Essayez-le en ligne
la source
STR
, je dois m'en souvenir. Je ne suis pas sûr qu'il soit juste de superposer votre (nonDECLARE
compté) dans votre code (compté); mais changer cela ne vous coûterait que 1 octet, car vous pouvez éliminer le supplémentSET
avecDECLARE @ INT=len(@i)
J , 10 octets
Essayez-le en ligne!
Semblable à la réponse APL d'Adam, bien que je l'ai écrite avant de regarder la sienne.
6.. $~ #
Prenez la longueur de l'entrée#
et formez$~
le nombre 6 dans une liste aussi longue.?@
Traitez chacun des six de cette liste comme un dé et lancez-?
le.>5
Le dé est-il inférieur à 5 (les valeurs possibles sont 0..5)? Utilisez ce résultat booléen pour créer un masque de bits.#~
Filtrez l'entrée avec ce masque.la source
Perl 5
-p
, 18 octetsEssayez-le en ligne!
Chaque personnage a 20% de chances d'être abandonné.
la source
Javascript,
464451 octets+7 octets en raison de l'exigence STDOUT ajoutée
-2 octets merci à Birjolaxew
réponse d'origine: 44 octets sans l'exigence STDOUT
la source
f=
vous fait descendre à 44 octets. Vous pouvez également entrer / sortir sous forme de tableau, ce qui devrait vous faire économiser un peu.join``
dire? Je ne le trouve pas dans les spécifications (parce que je ne sais pas vraiment ce que c'est)join("")
mdn revelent page
Scala ,
514630 octetsEssayez-le en ligne!
PS. Comme dans beaucoup d'autres solutions, la probabilité de laisser tomber l'omble est de 20%.
Mise à jour:
-5 octets en utilisant String au lieu de Option [String] dans flatMap
30 octets en utilisant un filtre
la source
scala.math.random
àmath.random
et0.2
à.2
. Belle astuce en utilisant ^ comme ça.C # (Visual C # Interactive Compiler) , 71 octets
Essayez-le en ligne!
la source
new Random().Next(5)
directement possible?new Random().Next(5)
, tout ce que vous obtiendrez sera l'entrée entière ou rien.new Random()
, la valeur de départ par défaut est Environment.TickCount, qui s'incrémente toutes les millisecondes. S'ils sont tous créés dans la même milliseconde, ils auront tous la même graine. La réponse n'utilise qu'une seule instance de Random, et lorsqu'elle est appelée, elle met à jour la valeur de départ interne - donc à chaque appel de Next (), elle crée une valeur de sortie différente. .Net Core utilise cependant un RNG singleton pour générer la graine, donc il n'a pas ce problèmeSTDIN
, mais lesrestricted to STDIN or closest equivalent
arguments de fonction peuvent être l'équivalent le plus proche, mais je ne vais pas le fairePHP ,
4342 octetsEssayez-le en ligne!
Chaque personnage a 20% de chances d'être supprimé.
la source
C (gcc) , 50 octets
Ce programme a 20% de chances de laisser tomber une lettre. Malheureusement, le générateur de nombres aléatoires n'est pas amorcé, vous obtenez donc la même séquence à chaque exécution. Fondamentalement, la seule astuce consiste à inverser le caractère d'entrée pour arrêter la boucle sur EOF.
Essayez-le en ligne!
C (gcc) ,
6459 octetsMerci à plafondcat pour les -5 octets.
Si vous voulez que le RNG soit ensemencé à chaque exécution.
Essayez-le en ligne!
la source
main()
pour les soumissions de Code Golf, vous pouvez également définir une fonction arbitraire qui fait ce qui est requis. Vous pouvez donc écriref(c){...}
.Lua ,
6968 octetsEssayez-le en ligne!
Un peu simple, mais semble être la version la plus courte: itérer sur stdin char par char (avec
io.lines
… ce nom est trompeur), puis en fonction d'une valeur aléatoire, imprimer une chaîne ou une chaîne vide (par exemple rien).la source
Java
Sans fin: 82 octets
Terminaison (TIO): 105 octets
la source
s->s.filter(c->Math.random()<.2)
est aussi.Input is restricted to STDIN or closest equivalent.
etOutput must be through STDOUT or the closest equivalent. If your language does have STDOUT, do not output in any other way.
donc non, cette réponse n'est pas valideZsh ,
5341 octets-12 , grâce à GammaFunction
41 octets: essayez-le en ligne!
Convertit l'entrée en un tableau de caractères, puis essaie d'imprimer chaque élément
c
, à moins qu'il ne soit mangé par l'((RANDOM%4))
évaluation en faux!53 octets: essayez-le en ligne!
Une itération plus simple, mais verbeuse, sur la longueur de la chaîne.
la source
\c
, je ne m'en serais pas souvenue! Il y a encore quelques optimisations à faire ...RANDOM
conversion de tableauxZsh , 50 octets
Essayez-le en ligne!
Similaire à la réponse de RobLogic, mais en suivant de plus près les exigences d'entrée, et fonctionne pour les entrées avec des barres obliques inverses.
"$(<&0)"
au lieu de"<&0"
ou$(<&0)
parce que le premier ne fonctionne pas en substitutions, et le second mange des sauts de ligne. Les-nE
indicateurs sont nécessaires pour empêcher l'analyse des barres obliques inverses en tant que séquences d'échappement et pour empêcher l'insertion de nouvelles lignes.echo -nE
la source
MathGolf , 5 octets
Essayez-le en ligne!
Explication
Chaque caractère sera répété 0 ou 1 fois, selon la valeur aléatoire. Étant donné que la valeur attendue après le déplacement de la racine carrée, il y a une probabilité de 25% que chaque caractère soit supprimé.
Alternative à 5 octets
Filtrez les caractères par un nombre aléatoire dans [0, 4]. En raison de la façon dont le filtrage fonctionne, je dois éliminer le caractère réel dans la boucle de filtrage, ce qui ajoute 1 octet.
la source
GFortran , 120 octets
Pas trop mal, si nous utilisons la
RAN()
fonction obsolète , qui est pseudo- aléatoire, c'est-à-dire que vous obtenez la même séquence à chaque fois. La bonne façon de générer des nombres aléatoires dans GFortran est avecCALL RANDOM_SEED()
etCALL RANDOM_NUMBER(R)
mais c'est beaucoup d'octets!Essayez-le en ligne!
la source
Oracle SQL, 133 octets
Il fonctionne avec l'hypothèse que les données d'entrée sont stockées dans une table t (x), par exemple
la source