introduction
Pour ceux qui n'ont jamais entendu parler de ce jeu auparavant. Vous jouez une balle qui doit survivre le plus longtemps possible. Cela se fait en se déplaçant vers la gauche ou la droite, en allant dans les trous. Puisque la carte se déplace vers le haut, vous devez descendre pour survivre plus longtemps. Si vous recherchez des images, vous savez probablement de quel jeu je parle.
La tâche
Étant donné un entier positif n , produire une carte de boule tombante de n couches. Entre les couches, il y a 4 nouvelles lignes. La largeur de la couche est composée de 25 caractères de soulignement, avec un trou de longueur 5. Cela signifie que la largeur totale est égale à 30. Ceci est décalé de manière aléatoire après chaque couche. Un exemple de couche valide est:
_______________ __________
Le trou peut également être sur les bords, comme si la couche était comme un cylindre:
_________________________
Notez qu'il y a 2 espaces de début et 3 espaces de fin. Faire un seul trou de largeur 5.
Cas de test
Pour n = 4, il s'agit d'une sortie valide:
_______________ __________
______ ___________________
_______________________ __
_________________________
Remarque: les trous doivent être uniformément répartis. Les sauts de ligne de fin et / ou de début sont autorisés.
C'est du code-golf , donc la soumission avec le moins d'octets gagne!
Réponses:
Pyth, 19 octets
Essayez-le ici!
Explication
la source
Rubis,
747159Merci à Alex A. de m'avoir rappelé qu'être fondamentalement une ligne signifie que je peux utiliser le stabby lambda
la source
puts
ajoute une nouvelle ligne à la fin (print
contrairement à Ruby ), elle a donc été mise à jour vers les5
nouvelles lignes.times
fonction pour me sauver 3 octets sur lafor
boucle: D->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}}
Essayez ici(->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}})[input]
ou simplement spécifier que vous devez l'attribuer pour l'appeler. C'est assez courant sur le site.Julia, 72 octets
Il s'agit d'une fonction anonyme qui accepte un entier et renvoie une chaîne. Pour l'appeler, affectez-le à une variable.
Nous construisons une chaîne de 25 traits de soulignement suivis de 5 espaces, puis répartissons cela en un tableau de caractères. Nous le déplaçons circulairement un nombre aléatoire de fois (entre 1 et 30), le rejoignons en une chaîne et clouons sur 5 nouvelles lignes. Ce processus est répété n fois, où n est l'entrée. Le tableau résultant est joint et renvoyé.
Essayez-le ici
la source
PowerShell 65 octets
Exécutez une boucle pour n itérations. Obtenez un nombre aléatoire et créez une chaîne de soulignement avec 5 espaces à la fin. Indexez la chaîne sous forme de tableau à extraire à partir d'un emplacement aléatoire. L'indexation négative se termine à la fin. Rejoignez cette sauvegarde à nouveau et ajoutez 5 nouvelles lignes.
Edit: je ne sais pas pourquoi j'ai pensé que j'avais besoin du paramètre
-Maximum
car il est positionnel. Grâce à TimmyD, j'ai rasé quelques octets et j'ai oublié d'obtenir des données, ce qui m'a ramené à 65.la source
Pyth, 19 octets
Essayez-le ici
Merci à FryAmTheEggman d'avoir attrapé un bug.
la source
SpecBAS - 93 octets
Donne une chaîne de 25 traits de soulignement + 5 espaces, choisit un point de départ aléatoire et épissure la chaîne à cette position et colle le début de la chaîne à la fin.
L'apostrophe force une nouvelle ligne, donc 1 à la fin de la chaîne et 4 lignes vides.
la source
MATL , 23 octets
Essayez-le en ligne!
Explication
la source
Java,
177140 octets-1 octet à Blue pour déplacer l'i ++
-2 octets pour moi, laissant un espace vide de sens dans l'original
-34 octets à Blue pour avoir réalisé que je n'avais pas du tout besoin du caractère []
Parce que, tu sais, Java.
Légèrement non golfé:
Comme Java n'a pas de rotation de chaîne, j'ai dû adopter une approche différente. J'ai généré un int aléatoire 0-29 qui représente l'indice de départ du trou (OBO car
>
est plus court que>=
). Chaque caractère individuel est alors décidé par la logiqueCela gère la nature "enveloppante" de l'ensemble.
la source
s = ""
). Les deux sont corrigés maintenant.Python 3,5 -
109113 octets (+4 pour imprimer 4 nouvelles lignes entre chaque résultat):Forme non golfée:
Fondamentalement, ce qui se passe, c'est qu'une chaîne «j», composée de 25 traits de soulignement suivis de 5 espaces, est donnée comme argument à la fonction «g». Ensuite, le module aléatoire est importé et, autant de fois que spécifié par l'utilisateur, un nombre aléatoire est choisi dans la plage
0 => 29
et la chaîne "j" est décalée vers la droite autant de fois. Le résultat est ensuite imprimé après chaque itération, avec 4 nouvelles lignes entre chaque résultat.la source
'\r'
pour'\r'*4
devrait probablement fonctionner. De plus, je pense que vous pouvez changerrange(a+1)
pourrange(a)
.range(a)
imprime réellement lea-1
nombre de lignes, c'est doncrange(a+1)
le meilleur moyen d'imprimer le nombre exact de lignes fournies par l'utilisateur. De plus, il imprime désormais 4 nouvelles lignes entre chaque résultat.g(5)
et il imprime 6 chaînes au lieu de cinq, donc changera+1
poura
corrigerait probablement ça.Python,
119103 octetsla source
n
temps de ligne