Votre défi consiste à écrire un programme ou une fonction qui hoquette une chaîne. Il doit prendre une chaîne en entrée (via toute méthode standard), puis procédez comme suit:
- Générez un entier aléatoire (pas nécessairement uniforme) n compris entre 1 et 10 inclus.
- Attendez n secondes.
- Imprime les n caractères initiaux / suivants de l'entrée, ou le reste de l'entrée s'il y a moins de n caractères.
- S'il reste une entrée à imprimer, revenez à l'étape 1.
Règles
- L'entrée sera toujours une chaîne non vide contenant uniquement des caractères ASCII (32-126).
- Le temps d'attente ne doit pas être exactement n secondes, mais il doit être à moins de 10% de n .
- Vous pouvez imprimer un retour à la ligne à chaque fois qu'une section de texte est imprimée.
Exemple
Un espace ici représente 1 seconde. Si l'entrée est Hiccupinator!
, une sortie peut être:
Hic cupin a tor!
Notation
Il s'agit de code-golf , donc le code le plus court en octets l'emporte .
Réponses:
Scratch, 16 blocs + 6 octets
Suppose que l'entrée est déjà définie comme une liste de caractères (
["H","e","l","l","o"," ","W","o","r","l","d"]
)la source
Pushy ,
201716 ou 13 octetsSelon ce qui est autorisé, il existe deux solutions.
16 octets:
Donner des arguments sur la ligne de commande:
$ pushy hiccup.pshy 'hiccupinator'
. Cela imprime avec des retours à la ligne après chaque «hoquet». Voici la ventilation:13 octets:
En codant la réponse ci-dessus, j'ai trouvé cette solution beaucoup plus courte:
Bien qu'il fasse une chose similaire, il imprime directement la chaîne plutôt que de construire une nouvelle chaîne, pour moins d'octets. Cela nécessite la
N
début du programme pour éviter les sauts de ligne, sinon chaque caractère se trouverait sur un saut de ligne.Cependant, en testant cela, j'ai remarqué un bug -
stdout
est mis en mémoire tampon, donc le programme attendrait toute la longueur, puis afficherait la chaîne hoquetée.J'ai corrigé cela dans le dernier commit en ajoutant un simple
.flush()
- ce n'est techniquement pas en ajoutant une nouvelle fonctionnalité à la langue, juste en corrigeant un bug, mais je comprends si vous ne tenez pas compte de cette réponse :)La ventilation ressemble à ceci:
la source
Javascript (ES6)
9189 octetséconomisé 2 octets grâce à @zeppelin
Abuse la tolérance de 10% pour le temps d'attente en attendant des
n<<10 === 1024*n
millisecondes.Puisque vous avez dit que le temps d'attente devait se situer à moins de 10% de n , j'ai décidé d'enregistrer un octet et d'attendre 999 millisecondes plutôt que 1 seconde.Je n'ai plus besoin de la bêtise de 999 millisecondes grâce à @ETHProductions
la source
1e3
;-)Python 2,
9392 octets-1 octet grâce à Flp.Tkc
Je suis sûr qu'il existe un moyen de raccourcir
random.randint
ettime.sleep
, maisfrom random,time import*
ne fonctionne pas ...la source
from random,time import*
ne fonctionne pas car Python ne sait pas à partir de quel module vous souhaitez importer des bibliothèques.while v1:n=ri(1,10);_i("time").sleep(n);p(v1[:n]);v1=v1[n:];
(Prend la saisie desimport random,time
, puisdef F(s):
retour à la ligneif s:n=random.randint(1,10);time.sleep(n);print s[:n];F(s[n:])
Perl 6 , 62 octets
Étendu
la source
Lot, 131 octets
L'utilisation
set/pn=<nul
aurait donné un effet plus agréable, sauf qu'elle réduit les espaces.la source
Pyth, 16 octets
Vous pouvez l' essayer en ligne , mais cela ne fonctionne pas bien car l'interpréteur en ligne n'affiche la sortie qu'une fois le programme terminé.
Explication
la source
MATL , 19 octets
Comment ça fonctionne
Essayez-le en ligne! Le compilateur en ligne produit progressivement les sorties avec les pauses.
la source
BaCon , 93 octets
Une solution en BASIC. La fonction RANDOM () génère un nombre compris entre 0 et n-1, nous devons donc utiliser RANDOM (11) pour obtenir un nombre compris entre 0 et 10 inclus.
Exemple de session, la première ligne est l'entrée, la seconde la sortie:
la source
n=RANDOM(10)+1
, votre ligne de code générera un nombre compris entre 0 et 10 inclus, pas entre 1Perl, 42 octets
Code de 41 octets + 1 pour
-n
.J'ai dû forcer Perl à vider la sortie car il ne montrait rien jusqu'à la fin au début, d'où le réglage
$|
. Nous utilisons$-
pour suivre le nombre de caractèresprint
car cela ne peut pas être négatif (donc je peux utiliser--$-
et ce sera faux quand il sera vide) et c'est aussifloor
s, bien que puisque j'utilise le retour desleep
pour cela maintenant, cela ne fonctionne pas n'a pas vraiment d'importance.Usage
la source
Rubis, 56 octets
Une lambda récursive. Appelez comme
f["Hello, World!"]
.la source
> <> (Poisson)
10388 octetsInterprète en ligne trouvé ici!
Première tentative à ce problème (pas joué au golf).
Il attend un certain nombre de boucles (n) car le poisson n'a pas de temporisateur accessible (Exécution en ticks).
Édition 1: Déplacement de la dernière ligne vers le haut (2 derniers caractères et réutilisation des valeurs de départ. (Économie de 15 octets).
la source
Bash, 78 octets
Comme personne n'a encore publié de solution Bash, en voici une. Simple, mais assez petit.
Golfé
Tester
la source
PHP, 81 octets
utiliser comme:
la source
C ++ 14, 202 octets
Nécessite une entrée pour être
std::string
Non golfé et utilisation:
la source
using namespace std;
devrait sauver 5 octets de tous cesstd::
sstd::
est seulement dans le code d'utilisation, dans le golf il n'y en a que 4C #, 205 octets
Je suis sûr que cela peut être détruit, je ne l'ai pas vraiment optimisé du tout tel qu'il est.
Non-golfé:
la source
PHP, 74 octets
Courez avec
php -r 'code' "string"
.la source
C, 149 octets, non testé
pour exécuter, ajouter
puis compilez et exécutez
la source
Python 3, 99 caractères
la source