Mélanger un jeu de cartes est difficile pour les enfants, ils doivent donc trouver des moyens d'obtenir un jeu raisonnablement bien mélangé aussi simplement que possible.
Une façon de le faire qui donne des résultats raisonnablement bons est la suivante:
- Sortez la carte du dessus et insérez-la au hasard dans le jeu
- Retirez la carte du bas et insérez-la à un endroit aléatoire dans le jeu.
- Continuez jusqu'à ce que vous pensiez que c'est assez bon.
Notez que vous ne devez jamais insérer une carte en haut ou en bas, elle doit être placée quelque part dans le jeu.
Au lieu de cartes brassage, nous allons lecture aléatoire des caractères alphanumériques: 0-9
, A-J
, a-j
, q-z
et Q-Z
.
Commencez avec la chaîne ci-dessous et mélangez les caractères comme décrit ci-dessus. Vous pouvez choisir si vous souhaitez continuer à mélanger indéfiniment ou mélanger les cartes à 100 tours (100 cartes du haut et 100 cartes du bas).
0123456789abcdefghijqrstuvwxyzABCDEFGHIJQRSTUVWXYZ
Le défi consiste à afficher les caractères mélangés. Chaque "mélange" (retirer et insérer la carte) prendra entre 0,25 et 0,35 seconde.
Le gif ci-dessous montre un exemple de sortie:
Il s'agit de code-golf, donc le code le plus court en octets l'emporte.
« Pourquoi ne pas vous au a-t
lieu de a-j
, q-z
? » Parce que cela illustrera des combinaisons de cartes, pas seulement des personnages. Et oui, il y a 5 combinaisons.
Remarque: j'ai décidé de ne plus utiliser la coche sur code-golf -challenges. Meta posts pertinents ici et ici .
0-9
,A-J
,a-j
,q-z
etQ-Z
, selon la question.Réponses:
JavaScript (ES6),
192188185 octetsEdit: 4 octets enregistrés grâce à @ L.Serné. Sauvegardé 3 octets grâce à @Arnauld.
la source
e^=1
à l'intérieur des parenthèses vides de l'Math.random
appel. Vous pouvez également remplacer textContent par innerHTML, car vous ne transmettez aucun caractère spécial. Vous pouvez également définire
0 à l'intérieur de l'toLowerCase
appel.e
. Vous pouvez simplement utilisers
. (Parce que('some_string'^1) === 1
)MATL,
625856 octets2 octets économisés grâce à @Luis
Cette version fonctionnera indéfiniment. Essayez la démo en ligne de MATL Online , un interpréteur en ligne expérimental qui prend en charge la sortie dynamique. Cela fonctionnera pendant 30 secondes (une limite stricte imposée par la version en ligne) s'il n'est pas tué en premier.
Explication
la source
Perl, 117 octets
Pour l'exécuter:
Explications:
-
@F=(0..9,a..j,"q"..z,A..J,Q..Z)
crée le jeu initial et le stocke@F
.-
{...;redo}
s'exécute...
pour toujours.-
splice@F,++$|+rand(@F-2),0,++$v%2?shift@F:pop@F
sinon, retirez le premier / dernier élément du jeu et insérez-le à une position aléatoire (pendant l'incrémentation$|
, de sorte que les impressions ne soient pas mises en mémoire tampon),-
print"\r",@F
imprime le jeu,-
select$,,$,,$,,.3
dort pendant 0,3 seconde (Perl nesleep
peut pas dormir moins de 1 seconde),la source
0..9
, non1..9
, et votre deck initial est également en panne :)Python 3,
199196192 192186 octets4 octets enregistrés grâce à TuukkaX et 6 octets grâce à FlipTack!
Utilise la
print
fonction de Python 3 pour supprimer la nouvelle ligne, plus courte que celle de Python 2sys.stdout.write
.Utilise une variable flip-flop pour basculer entre le déplacement des cartes du haut et du bas.
Non golfé:
la source
import random,time
plus court?C,
290285 octetsNon golfé:
la source
Swift, 288 octets
Le golf à Swift est toujours un défi, car l'un de ses arguments de vente est l'expressivité.
la source
Rubis (
138119octets)Pas aussi court que @PaulPrestidge mais au moins je le comprends .. Aussi super d'apprendre que le rubis est comme un tunnel sans fin de génial!
la source
Rubis,
111101 caractèresBoucles infiniment.
la source
Noodel , non compétitif 41 octets
Essayez-le :)
Comment ça fonctionne
la source
bash, 170 octets
ici '^' (sur la première ligne) représente
ctrl-m
: entré sur la ligne de commande en tant quectrl-v
enter
ou dans un éditeur selon le fonctionnement de votre éditeur (en supposant que votre éditeur fonctionne)la source