Introducción
Para los que nunca antes habían oído hablar de este juego. Estás jugando una pelota que necesita sobrevivir el mayor tiempo posible. Esto se hace moviéndose hacia la izquierda o hacia la derecha, yendo a los agujeros. Dado que el mapa se mueve hacia arriba, debes ir hacia abajo para sobrevivir más tiempo. Si busca imágenes, probablemente sepa a qué juego me refiero.
La tarea
Dado un número entero positivo n , genera un mapa de bola descendente de n capas. Entre las capas, hay 4 líneas nuevas. El ancho de la capa está formado por 25 caracteres de subrayado, con un agujero de longitud 5. Eso significa que el ancho total es igual a 30. Esto se desplaza aleatoriamente después de cada capa. Un ejemplo de una capa válida es:
_______________ __________
El agujero también puede estar en los bordes, como si la capa fuera como un cilindro:
_________________________
Tenga en cuenta que hay 2 espacios iniciales y 3 espacios finales. Hacer un solo agujero de ancho 5.
Casos de prueba
Para n = 4, esta es una salida válida:
_______________ __________
______ ___________________
_______________________ __
_________________________
Nota: los agujeros deben estar distribuidos uniformemente . Se permiten nuevas líneas finales y / o iniciales.
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
Respuestas:
Pyth, 19 bytes
Pruébalo aquí!
Explicación
fuente
Rubí,
747159Gracias a Alex A. por recordarme que ser básicamente una línea significa que puedo usar la lambda stabby
fuente
puts
agrega una nueva línea al final (mientras que Rubyprint
no), por lo que se ha actualizado a las5
nuevas líneas.times
función para ahorrarme 3 bytes en elfor
ciclo: D->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}}
Pruébelo aquí(->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}})[input]
o simplemente especificar que necesita asignarlo para llamarlo. Esto es bastante común en el sitio.Julia, 72 bytes
Esta es una función anónima que acepta un número entero y devuelve una cadena. Para llamarlo, asígnelo a una variable.
Construimos una cadena de 25 guiones bajos seguidos de 5 espacios, luego los dividimos en una matriz de caracteres. Lo desplazamos circularmente un número aleatorio de veces (entre 1 y 30), lo unimos nuevamente en una cadena y agregamos 5 líneas nuevas. Este proceso se repite. n veces, donde n es la entrada. La matriz resultante se une y se devuelve.
Pruébalo aquí
fuente
PowerShell 65 bytes
Ejecute un bucle para n iteraciones. Obtenga un número aleatorio y haga una cadena de subrayado con 5 espacios al final. Indice en la cadena como una matriz para extraer a partir de una ubicación aleatoria. La indexación negativa termina desde el final. Únase a eso nuevamente y agregue 5 nuevas líneas.
Editar: No sé por qué pensé que necesitaba el parámetro porque
-Maximum
es posicional. Gracias a TimmyD , eliminé algunos bytes y olvidé recibir información, lo que me llevó de nuevo a 65.fuente
Pyth, 19 bytes
Pruébalo aquí
Gracias a FryAmTheEggman por atrapar un error.
fuente
SpecBAS - 93 bytes
Hace una cadena de 25 guiones bajos + 5 espacios, selecciona un punto de inicio aleatorio y divide la cadena en esa posición y pega el inicio de la cadena para finalizar.
El apóstrofe fuerza una nueva línea, por lo que 1 al final de la cadena y 4 líneas vacías.
fuente
MATL , 23 bytes
Pruébalo en línea!
Explicación
fuente
Java,
177140 bytes-1 byte a Azul moviendo el i ++
-2 bytes para mí dejando espacios en blanco sin sentido en el original
-34 bytes a Azul para darse cuenta de que no necesitaba el char [] en absoluto
Porque, ya sabes, Java.
Ligeramente incólume:
Como Java no tiene una cadena 'rotar', tuve que adoptar un enfoque diferente. Generé un int aleatorio 0-29 que representa el índice de inicio del hoyo (OBO porque
>
es más corto que>=
). Cada personaje individual es entonces decidido por la lógicaEsto maneja la naturaleza de "envoltura" del conjunto.
fuente
s = ""
). Ambos están arreglados ahora.Python 3.5 -
109113 bytes (+4 para imprimir 4 líneas nuevas entre cada resultado):Forma sin golf:
Básicamente, lo que está sucediendo es que una cadena 'j', que consta de 25 guiones bajos seguidos de 5 espacios, se da como argumento para la función "g". Luego, se importa el módulo aleatorio y, tantas veces como lo especifique el usuario, se elige un número aleatorio en el rango
0 => 29
, y la cadena, "j", se desplaza a la derecha tantas veces. El resultado se imprime después de cada iteración, con 4 líneas nuevas entre cada resultado.fuente
'\r'
a'\r'*4
probablemente debería funcionar. Además, creo que puedes cambiarrange(a+1)
arange(a)
.range(a)
realmente imprime ela-1
número de líneas, por lo querange(a+1)
es la mejor manera de imprimir el número exacto de líneas que proporciona el usuario. Además, ahora imprime 4 líneas nuevas entre cada resultado.g(5)
e imprime 6 cadenas en lugar de cinco, por lo que cambiara+1
aa
probablemente solucionaría eso.Python,
119103bytesfuente
n
tiempos de fila