La tâche
Votre tâche consiste à créer un programme ou une fonction qui, à l'aide d'une entrée, génère le texte d'entrée avec des lettres aléatoires en majuscules, tout en conservant les majuscules des lettres déjà en majuscules.
Chaque combinaison de majuscules des minuscules devrait être possible. Par exemple, si l'entrée était abc
, il devrait y avoir une probabilité non nulle de sortie l' une des combinaisons suivantes: abc
, Abc
, aBc
, abC
, ABc
, AbC
, aBC
ou ABC
.
Contribution
Votre entrée est une chaîne, contenant un nombre quelconque de caractères ASCII imprimables, par exemple Hello World
. Les sorties pour cette entrée comprennent HeLLo WoRlD
, HElLO WOrld
etc.
Notation
C'est du code-golf, alors la réponse la plus courte dans chaque langue gagne!
Japt , 6 octets
Testez-le en ligne!
Explication
la source
Python 2 ,
66 à65 octetsEssayez-le en ligne!
la source
C,
4746 octetsMerci à @ l4m2 d'avoir économisé un octet!
Essayez-le en ligne!
Serait 42 octets, si on pouvait supposer que
{|}~
cela n'apparaît pas dans l'entrée:Essayez-le en ligne!
la source
srand(1)
au début du programme, de sorte que, lors de chaque exécution, la séquence de valeurs renvoyée parrand()
sera la même).f(char*s){for(;*s++-=(*s-'a'<26&rand())*32;);}
pour un compilateur (déf.-funsigned-char
) travail'a'
à97u
fonctionne et ne nécessite même pas le-funsigned-char
drapeau.'a'
(ce qui estsigned int
, nonunsigned char
) de*s
(ce qui estunsigned char
), il*s
est promu ausigned int
lieu deunsigned int
, les valeurs négatives sont donc possibles et la comparaison ne fonctionne pas comme prévu.Gelée , 5 octets
Un autre octroie la poussière grâce à Dylnan.
Essayez-le en ligne!
Explication
la source
ŒṘ
plus souvent pour voir comment les choses sont représentées sous le capotPerl 5 , 23 octets
22 octets code + 1 pour
-p
.Essayez-le en ligne!
la source
JavaScript (ES6), 56 octets
Si le caractère aléatoire uniforme n'est pas requis, nous pouvons économiser 6 octets en utilisant l'heure actuelle comme source du caractère aléatoire:
Cela a tendance à être majuscule ou à laisser toutes les lettres en même temps.
la source
AbC
car le temps ne changera pas si viteR , 66 octets
Essayez-le en ligne!
Une autre réponse R.
la source
for
boucle! Joli.Excel VBA,
747164 octetsL’Randomize
appel rend toujours la sortie aléatoire coûteuse en VBA :(Fonction de fenêtre immédiate VBE anonyme qui prend les entrées de la plage
[A1]
et les envoie à la fenêtre immédiate VBE. Produit uneUCase
sortie de 50% (en moyenne) d.la source
Randomize:
et en modifiantRnd
avec[RAND()>.5]
. Ou simplement l'ignorer. :)[Rand()]
appel est uniquement pseudo-aléatoire et a une longueur de période d'environ 10 ^ 13, ce qui rend fonctionnellement identique à l'unRandomize
d 'Rnd
appel, en fait , les deux utilisent le même germe (dont lesRandomize
appels ensembles à l'aide de latimer
fonction sortie).Randomize
appel et utiliser à la placeRnd>.5
Charbon de bois ,
87 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
la source
Ruby, 40 octets
Fonction lambda qui prend une chaîne. Enregistré 1 octet grâce à Arnauld. 5 octets sauvés grâce à Snack.
la source
<1
au lieu de==1
?<s>
tag, par exemple " Ruby, <s> 46 </ s> 40 octets ". Bien sûr que ce n'est pas obligatoire.APL + WIN, 37 octets
Invite à la saisie à l'écran, identifie les minuscules et les convertit de manière aléatoire en majuscules.
la source
R ,
8988 octetsdéjoué par djhurio!
Essayez-le en ligne!
Ce programme prend chaque caractère et avec une probabilité de 1/2 le convertit en majuscule ou le laisse tranquille. Il est possible de modifier cette probabilité en jouant avec différentes valeurs de
df
et0
.rt
s'inspire de la distribution t de Student, qui a la médiane 0 avec un degré de liberté quelconque (j'ai sélectionné1
car c'est le plus petit nombre possible).la source
05AB1E ,
65 octetsMerci Adnan pour -1 octet
Essayez-le en ligne!
Explication
Méthode extraite de la réponse de @ totallyhuman
la source
ε„luΩ.V
C'était ma tentative, belle!Ruby, 39 octets
->s{s.gsub(/./){[$&,$&.upcase].sample}}
Largement inspiré de la réponse de displayname . (Je ne peux pas commenter pour suggérer cette version d'un octet en moins par manque de réputation, désolé displayname )
la source
Swift 4, 86 octets
la source
Java 8, 46 octets
Ce lambda est de
IntStream
àIntStream
(flux de points de code).Essayez-le en ligne
Répartition de la capitalisation
Le fait de capitaliser une lettre était autrefois la condition la plus raisonnable
Math.random()<.5
, qui était satisfaite environ la moitié du temps. Avec la condition actuelle deMath.random()>0
(qui enregistre un octet), la capitalisation se produit pratiquement à chaque fois, ce qui rend un programme de test inutile. Mais cela répond à l'exigence de caractère aléatoire.Remerciements
la source
z
. Je pourrais le jeter avec une qualification cependant.Funky , 55 octets
Essayez-le en ligne!
Grâce aux virgules facultatives,
0s.upper
la définition de la table nécessite un octet plus court , ce qui signifie que la personnemath.random
choisira aléatoirement l'un1
ou l' autre2
, que de la fairemath.random(0,1)
dans une liste aléatoire et de ne pas avoir le0
.la source
R ,
60 59 58 57 5663 octetsEssayez-le en ligne!
Approche différente des deux autres réponses R ici et ici . Amélioré et corrigé grâce à Giuseppe!
la source
90
aiment[
, mais cela le corrige pour +7 octets, ce qui est encore plus golfique que la réponse de djhurioOuroboros , 25 octets
Essayez-le ici
La seule partie de fantaisie est le flux de contrôle,
.b*)
. Parlons du reste d'abord.Nous revenons ensuite au début de la ligne. Le contrôle du flux implique de changer l'endroit où se trouve la fin de la ligne; s'il est déplacé à gauche de l'IP, l'exécution se termine. Ainsi:
Lorsque le code de caractère est positif,
)
c'est un non-op, car la fin de la ligne est la plus à droite possible. Mais quand tous les personnages ont été lus,i
donne-1
. Ensuite, nous déplaçons la fin des caractères du code-11
vers la droite, c’est-à-dire 11 caractères vers la gauche. Il faut plusieurs itérations, mais l’IP finit par se trouver au-delà de la fin du code et le programme s’arrête.la source
MATL ,
12 à11 octetsEssayez-le en ligne!
Enregistré 1 octet grâce à @LuisMendo
la source
Brachylog , 5 octets
Essayez-le en ligne!
Explication
la source
Alice ,
1715 octetsMerci à Leo pour la sauvegarde de 2 octets.
Essayez-le en ligne!
Explication
C'est le cadre habituel pour les programmes largement linéaires fonctionnant entièrement en mode ordinal.
J'ai d'abord essayé de le faire entièrement en mode Cardinal, mais déterminer si quelque chose était une lettre simplement basée sur un code de caractère prendrait probablement plus d'octets.
la source
Wolfram Language (Mathematica) ,
524944 octetsEssayez-le en ligne!
Utilise le formulaire opérateur de
StringReplace
: en lui fournissant une règle (ou une liste de règles) mais aucune chaîne ne donne une fonction qui applique cette règle à toute chaîne que vous lui donnez en entrée.Nous pourrions faire beaucoup mieux (
RandomChoice@{#,Capitalize@#}&/@#&
c'est-à-dire 34 octets) si nous décidions de prendre en entrée (et de produire en sortie) une liste de caractères, ce qui est parfois considéré comme acceptable par Mathematica, car il s'agit du seul type de chaîne existant dans d'autres langues. Mais ce n'est pas amusant.-5 octets grâce à M. Stern
la source
Capitalize
Random
vous pourriez économiser est désapprouvée quatre autres octets en mettant en place votre propreRandomChoice
:StringReplace[c_/;Random[]<.5:>Capitalize@c]
,Random
au travail à un moment donné, mais j'avais oublié le résultat,/;
alors j'essayais de faire uneIf
déclaration. Merci!Pyth,
1076 octets3 octets sauvés grâce aux ovs et 1 grâce à Steven H.
Essayez-le en ligne
Explication
la source
r1d
=rd1
, vous permettant de saisir implicitement le golf d’un autre octet.PHP,
6353 octetsGéré pour réduire le code avec 10 octets de (partiellement) suivant la suggestion de Titus.
la source
$a
. Essayezwhile(~$a=$argn[$i++])
au lieu deforeach
(run as pipe).PowerShell ,
5756 octetsEssayez-le en ligne!
-1 octet grâce au briantist
Prend l'entrée en tant que chaîne, convertit explicitement le
$args
tableau en chaîne, lechar
convertit en tant que -array, puis insère les caractères dans une boucle. A chaque itération, nous produisons le caractère tel$_
quel ou le convertissons en majuscules"$_".ToUpper()
(c'est la("$_"|% *per)
corbeille). C'est choisi en obtenant unRandom
entier et en le prenant mod2
.Ces caractères sont laissés sur le pipeline, puis
-join
redirigés ensemble dans une chaîne unique, elle-même laissée sur le pipeline et la sortie est implicite.la source
"$_".ToUpper()
à("$_"|% *per)
: - /Julia , 35 octets
Essayez-le en ligne!
Toujours assez facile à lire en tant qu'être humain. Dans Julia rand (A) renvoie un élément aléatoire de A.
la source
Rebol , 61 bytes
Tester:
la source
Gelée , 16 octets
Essayez-le en ligne!
Explication
Je ne pouvais pas faire fonctionner cela en une seule ligne. Je ne sais pas non plus pourquoi, mais
2ḶXø³L¤Ð¡
donne la liste[None,1,0,..,1]
avec0
s et1
s choisis au hasard. LeNone
est la raison de laḊ
dans le premier lien.la source