Vous savez, ils ressemblent à ceci:
Le but est de dessiner une illustration de battements de musique comme suit:
= = =
= = = = =
== = == = == = ====
== ==== == === = = =======
======== == ==== = ========= =
=================================
Les règles sont les suivantes:
- La largeur de l'illustration est de 33 symboles, mais si vous en avez besoin, tous les espaces de fin dépassant cette largeur sont autorisés.
- Chaque colonne est composée de signes égaux (
=
). - Chaque colonne a une hauteur aléatoire (la hauteur de la colonne suivante ne devrait en aucun cas dépendre de la hauteur de la colonne précédente), variant de 1 à 6. C'est aussi bien si c'est au moins possible d'obtenir une entrée sans stricte probabilité mathématique (c'est-à-dire que certaines entrées peuvent apparaître plus rarement que d'autres).
- Une colonne ne peut pas flotter au-dessus du fond et comporter des lacunes.
- Étant donné que chaque colonne a la hauteur minimale de 1, la dernière ligne ne peut pas non plus avoir de lacunes - elle se compose toujours de 33 signes égaux.
- Puisqu'il est possible de ne pas avoir de colonnes d'une hauteur de 6 (tout est aléatoire après tout): dans ce cas, vous n'avez pas besoin d'avoir une ligne supérieure faite d'espaces. S'applique à tous les cas marginaux de cette nature: si tout à coup votre code ne fournit aucune colonne avec une hauteur supérieure à 1, vous n'avez pas besoin d'avoir des lignes supplémentaires faites d'espaces au-dessus de la ligne du bas.
- Vous ne prenez aucune entrée .
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
)Math.random()
est directement calculable à partir de son appel précédent si les paramètres du générateur congruentiel linéaire sont connus, ce qui signifie que vous devrez modifier la plupart des fonctionnalités aléatoires intégrées afin de répondre à ces critères. Je suggère que ce soit mieux libellé.Réponses:
Pyth , 13 octets
Et j'ai déjoué Jelly .
Essayez-le en ligne!
la source
Dyalog APL , 14 octets
Explication
33⍴6
33 répétitions de 6?
entier aléatoire dans la plage [1, n ] pour chacun des 33 6s'='⍴¨⍨
symbole d'égalité répété chacun de ces nombre de fois↑
convertir la liste des listes en table de lignes⍉
transposer des lignes en colonnes, des colonnes en lignes⊖
retourner la tête en basExemple d'exécutions
L'entrée est en retrait de six espaces:
la source
Gelée, 14 octets
Essayez-le ici.
la source
6ṗ33X
marche aussi.JavaScript (ES6), 116 octets
Découvrez-le dans l'extrait animé ci-dessous:
la source
C, 87 octets
Appelez le
f();
. Cette réponse repose sur le fait que six appels consécutifstime(0)
renvoient le même résultat (en secondes). Ceci est pratiquement toujours vrai, mais mérite probablement d'être mentionné.la source
x
ety
pour éviter de les déclarer commeint
. Puisqu'il n'y a pas d'entrée, est-ce autorisé? Si oui, c'est une bonne idée!f();
Thats nice! Je ne savais pas que C pouvait faire ça.Cheddar,
6865 octets (non concurrent)O_O Cheddar fait vraiment du bien! Utilise
sprintf
etturn
pour faire une grande partie du travail.vfuse
est un fusible vertical signifiant qu'il rejoint le tableau mais verticalement. C'est très golfique mais aussi assez rapide. La version est la version préliminaire 1.0.0-beta.10 , qui le défi.Explication
Quelques exemples d'exécutions:
la source
05AB1E , 22 octets
Pas de jointure automatique, pas de remplissage automatique lors de la transposition, l'osabie est voué à l'échec. Code:
Utilise l' encodage CP-1252 . Essayez-le en ligne! .
la source
Python 2, 95 octets
la source
Python 3, 115 octets
Python n'a même jamais eu de chance ...
Comment ça marche
Essayez-le sur Ideone
la source
MATL,
20191817 octets1 octet enregistré grâce à @Luis
Essayez-le en ligne
la source
SpecaBAS - 76 octets
Imprime un signe égal aux coordonnées d'écran appropriées.
avec une tache de couleur et une
GOTO
boucle ça devientla source
K4, 18 octets
Essentiellement un portage de la solution APL (sans surprise).
la source
C #,
200117 octetsJe passe à l' algorithme @Lynn et économise 83 octets!
C # lambda sans entrée et où sortie est une chaîne. Essayez-le en ligne .
Code:
la source
Haskell, 164 octets
Étant un langage purement fonctionnel, Haskell était condamné dès le départ. Je l'ai quand même fait et il s'avère que les frais généraux nécessaires ne sont pas si importants.
Usage:
Explication:
pouvoir utiliser
newStdGen
etrandoms
pouvoir utiliser
transpose
définit une fonction qui imprime un espace si son premier argument est plus grand que le second et
=
sinon. Il est appelé avecmap (f m) [0..5]
un numéro donném
et la liste[0,1,2,3,4,5]
. (Voir ci-dessous)Crée un nouveau générateur de nombres aléatoires standard
prend 33 entiers aléatoires.
Calcule
m = n % 6
et mappe(f m)
à la liste[0,1,2,3,4,5]
, ce qui donne l'un des"======", " =====", ..., " ="
. Ces lignes sont mappées à la liste des 33 entiers aléatoires résultant en une table. (Un tableau dans Haskell est une liste de listes)bascule les colonnes et les lignes du tableau
imprime chaque ligne du tableau
la source
CJam, 19 octets
Essayez-le en ligne!
Explication
la source
Mathematica, 78 octets
Fonction anonyme. Ne prend aucune entrée et renvoie une chaîne en sortie. Le caractère Unicode est U + F3C7, représentant
\[Transpose]
.la source
R, 102 octets
Explication
m=rep(" ",33)
init un vecteur vide pour la boucle à venirn=ifelse(m=="=",m,sample(c(" ","="),33,T,c(6-i,i)))
S'il y a un=
dans la rangée ci-dessus, assurez-vous que l'endroit ci-dessous a également un=
; sinon choisissez au hasard. Les choix aléatoires sont pondérés pour s'assurer que a) la rangée du bas est tout=
et b) vous obtenez une forme soignée pour le tout.cat(n,"\n",sep="")
affiche cette ligne sur la console avec une nouvelle ligne à la fin et aucun espace entre les éléments!la source
PHP,
959289 octetsAssez content avec celui-ci en fait. Pendant un certain temps, j'ai eu une version qui, en théorie, pourrait générer n'importe quelle entrée, mais en pratique, ne générerait que des blocs solides de = mais c'est à la fois plus court et également distribué!
Génère 7 notifications de quelque chose d'indéfini chaque fois que vous l'exécutez, mais ça va.
edit: eh bien je viens d'apprendre que join est un alias d'implode, donc c'est bien.
la source
J, 18 octets
Des trucs très simples. Avec un correctif de miles!
la source
>:?33#6
pour obtenir des entiers aléatoires dans la plage [1, 6]. En outre, une copie de rang 0 serait plus courte à utiliser'='#~"0
. Il en résulte,|.|:'='#~"0>:?33#6
mais malheureusement, les économies de 2 octets finissent par être atténuées par l'inclusion de l'opérateur d'incrémentation.Perl, 64 octets
Usage
Perl, 68 octets
Version alternative qui s'appuie sur les codes d'échappement ANSI pour déplacer le curseur, en baissant d'abord 6 lignes, puis en écrivant la ligne d'origine (tous les
=
s), en remontant d'une ligne et en imprimant la chaîne remplacée (s/=/rand>.4?$&:$"/ge
) à plusieurs reprises jusqu'à ce qu'elle ne fasse plus de substitutions. Cela peut finir par écrire plus de six lignes, mais il est finalement remplacé par une ligne vide.Remarque: les
\x1b
s sont en fait le Esccaractère ASCII .la source
Rubis,
102998483 octetsNouvelle approche et beaucoup plus courte, où je commence avec une chaîne pleine de nouvelles lignes.
Ancienne version...
... a donné une sortie avec une nouvelle ligne leader. Ma première soumission dans Ruby, utilisant une approche similaire à celle de @ Barbarossa, mais en boucle unique.
Ce que j'ai aimé dans Ruby en travaillant sur ce programme:
.times
bouclerand()
ce qui est assez courtJe n'ai pas aimé (principalement en termes de golf):
obligatoirepas si obligatoire en$
pour les variables globales.times
bouclequi peut être remplacé par un bloc unifilairedo
etend
mots clés0
n'est pas fauxla source
JavaScript, 179 octets
Je travaille toujours un peu sur le golf. J'aime ça car c'est simple.
Usage:
la source
.map(n=>{return Math.floor(Math.random() * 6)+1})
par.map(n=>Math.floor(Math.random()*6)+1)
. Lambda sont des grands :)if (n<=m+1){r[m]+="="}else
peut êtreif(n<=m+1)r[m]+="=" else
Forth, 190 octets
J'ai dû créer mon propre PRNG , un xor-shift pris d' ici . Le mot
f
est le mot que vous appelleriez plusieurs fois pour voir la sortie.Essayez-le en ligne - Notez que l'heure système est l'une des deux valeurs basées sur le serveur (ou quelque chose) qui exécute le code. En dehors de cela, ils ne changent pas dans l'IDE en ligne pour une raison quelconque. Vous ne verrez donc que deux sorties possibles. Vous pouvez définir manuellement la valeur de départ en modifiant
utime
un entier.Non golfé
Non golfé en ligne
la source
JavaScript, 165 octets
Les nouvelles lignes ne sont pas nécessaires mais elles permettent de voir plus facilement ce qui se passe. Ce n'est pas la solution la plus optimale, mais cela a du sens pour moi au moins.
la source