Inspiré par ce mini-défi de chat.
Étant donné une chaîne en entrée (caractères imprimables ASCII uniquement), sortez la chaîne avec les lettres "pleut" vers le bas. Chaque lettre doit être un nombre aléatoire de lignes vers le bas (aléatoire entre 0
et la longueur de la chaîne, chacune ayant une probabilité non nulle), et un seul caractère par colonne. Toutes les sorties possibles doivent à nouveau avoir une probabilité non nulle de se produire.
C'est peut-être un peu déroutant, alors voici un exemple (tiré de ce CMC):
Hello World
d
H
o
llo
l
W
e
r
Notez comment le H
est un espace vers le bas, le d
zéro vers le bas et le llo
tout arrive à s'aligner. Le r
est le plus bas, 9
mais est toujours inférieur à la longueur de la corde à partir du haut. Ce n'est qu'un exemple, il existe des dizaines d'autres possibilités de saisie Hello World
.
D'autres exemples pourraient être:
test
t
e
s
t
PP&CG
& G
P
P C
- L'entrée et la sortie peuvent être fournies par n'importe quelle méthode pratique .
- L'entrée est garantie non vide (c'est-à-dire que vous ne recevrez jamais
""
en entrée). - Vous pouvez l’imprimer dans STDOUT ou le renvoyer comme résultat de la fonction.
- Un programme complet ou une fonction sont acceptables.
- N'importe quelle quantité d'espace blanc étranger est acceptable, tant que les caractères s'alignent de manière appropriée (par exemple, n'hésitez pas à remplir comme un rectangle).
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Réponses:
R , 104 octets
Essayez-le en ligne!
Entrée sous forme de chaîne; écrit à stdout.
la source
scan(,'')
et en imbriquant un tas d'appels mais honnêtement, je préfère largement l'approche par fonction, cette autre est hideuse pour un gain minimal. Cela pourrait cependant susciter quelques idées. Essayez-le en ligne!sample(l,,T)
suffit au lieu desample(l,l,T)
(-1 octet).JavaScript (ES6), 72 octets
Prend la saisie sous forme de liste de caractères. Renvoie une matrice de caractères.
Essayez-le en ligne!
la source
(0|'A') === (0|undefined)
et les lettres restantes ne seraient plus garanties d'apparaître sur la dernière ligne. (Donc, en gros, c'est comme si tout|!a[y+1]
avait été supprimé.)Math.random()
renvoie un nombre dans [0, 1), donc ne pourrait pasMath.random()<.5
devenirMath.random()>0
?math.random()
implémentation qui a un état interne et ne peut donc pas générer de sortie unique.Pyth - 9 octets
Affiche la liste des lignes.
Essayez-le en ligne .
la source
J ,
3019 octetsEssayez-le en ligne!
la source
0|:]{.~"+_1-#?#
pour 15 octets0|:]{.~"+_2-#?@##
pour 17 octets sans changer le comportement de votre réponse.Japt , 8 octets
-1 octet de @Shaggy
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 16 octets SBCS
Fonction de préfixe tacite anonyme
≢
longueur de chaîne1+
on y a ajouté≢⍴
des copies "de longueur" de cette∘?
des nombres entiers aléatoires dans la plage 1… ceux-là, puis…∘-
nier, puis ...⊢↑¨⍨
prendre que de nombreux éléments de chaque caractère, remplissage à gauche avec des espaces∘↑
mélanger la liste des chaînes dans la matrice, le remplissage avec des espaces à droite⍉
transposerEssayez-le en ligne!
la source
Japt , 8 octets
L'essayer
la source
Gelée , 10 octets
Essayez-le en ligne!
la source
0..(length - 1)
? La question spécifie entre 0 et la longueur de la chaîne. Ou est-ce que je manque quelque chose?Rubis ,
595755 octetsEssayez-le en ligne!
Entrées 1D, sorties tableau 2D de caractères.
la source
PHP , 88 octets
Essayez-le en ligne!
Ou 94 octets en utilisant des entiers aléatoires cryptographiques de PHP .
Essayez-le en ligne!
Entrée de
STDIN
, sortie àSTDOUT
. Courir comme:-1 octet (chaîne vide au lieu de l'espace) et +1 octet (erreur du côté des règles) merci à @ ASCII uniquement!
la source
<?php
qui?>
ferme. semble également que ça va si$o
la chaîne est viderand
fonction PHP , car vous pouvez avoir un texte d'entrée qui nécessite plus aléatoire que la taille de l'interne graine rand utilise, donc techniquement votre réponse nerand
n'est pas très utile, cependant toutes les versions supportées / de production de PHP (7.1+) utilisent Mersenne Twister RND (mt_rand
) en interne pour une génération de nombres aléatoires. Craignez-vous que ce ne soit pas suffisamment aléatoire pour ce défi?mt_rand
utilise également un système de nombres pseudo aléatoires en interne, et présente également des limites. En supposant que PHP est compilé avec des nombres de 64 bits (et que la graine, utilisée pourrand
oumt_rand
accepte cette plage complète) générerait des sorties uniques pour les mots jusqu'à la longueur de 13 caractères ou moins. Assez limitant si vous me demandezFusain ,
109 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Edit: 1 octet enregistré grâce à @ ASCII uniquement. Explication:
Comme le souligne ASCII uniquement, vous pouvez déplacer les lettres de façon aléatoire vers le haut plutôt que vers le bas pour le même effet (sauf qu'il peut y avoir un espace blanc supplémentaire en bas plutôt qu'en haut). L'impression d'un tableau de caractères vers le haut équivaut à l'impression d'une chaîne normalement, de sorte que le remplissage compense ensuite chaque caractère verticalement d'une quantité aléatoire.
la source
05AB1E (hérité) , 9 octets
Saisie sous forme de chaîne ou de liste de caractères (c'est bien).
Essayez-le en ligne.
Alternative de 9 octets beaucoup plus lente:
Saisissez une liste de caractères.
Essayez-le en ligne.
Les deux utilisent la version héritée de 05AB1E, car la nouvelle version nécessite une explicite
€S
avant laζ
..Explication:
la source
gD¸s∍ÝδΩ
mais c'est plus long ... et ooo ... cela ne fonctionne même pas dans le nouveau 05AB1E;).C (gcc) , 131 octets
Essayez-le en ligne!
la source
R[j=i%l]?32:s[j]));
place deR[j]?32:s[j]))j=i%l;
Julia, 69 octets
Ceci définit une fonction
f
qui accepte unString
ouVector{Char}
et retourne unMatrix{Char}
.Ungolfed:
Exemple:
Cela pourrait sûrement être mieux; mes compétences de golf sont assez rouillées.
Essayez-le en ligne!
la source
Perl 5
-F
,5049 octets-1 par @DomHastings
Essayez-le en ligne!
la source
map$_||$",@$_
!PowerShell ,
10810298 octets-4 octets grâce à mazzy
Essayez-le en ligne!
Fondamentalement, itère
1..length
deux fois la chaîne, une fois pour obtenir des emplacements de ligne aléatoires pour chaque caractère, et une deuxième fois pour construire réellement chaque ligne en utilisant ces indices. Déterminer comment le faire en un seul balayage est là où se trouvent les économies de gros octets.la source
SmileBASIC 3, 62 octets
la source
Rouge , 84 octets
Essayez-le en ligne!
la source
Python - 92 octets
la source
import random
from random import*
place.map(None,...
cela ne fonctionne pas en Python 3, vous devez donc spécifier Python 2 dans votre titre.K (oK) , 20 octets
Solution:
Essayez-le en ligne!
Explication:
la source
Python 3 ,
140131 octetsEssayez-le en ligne!
la source
Python 3, 208 octets
Crée une liste de choix aléatoires, puis crée une liste de colonnes avec un espace vide partout sauf à l'index spécifié par chaque choix aléatoire. Les colonnes sont transposées en lignes et imprimées avec des retours à la ligne entre elles.
Essayez-le en ligne!
la source