Cartel de la primera vez al acecho por mucho tiempo aquí.
Escriba un programa que tome 3 entradas: X, Y y Z.
- X = a través (columnas)
- Y = abajo (filas)
- Z = marcador de ubicación
El programa debe imprimir una cuadrícula visual X a través e Y hacia abajo. Esta cuadrícula se puede hacer de cualquier carácter, excepto "+". Cada 'ubicación' recibe un número de índice, contando desde 1 en la coordenada 1, 1 a través y luego hacia abajo hasta el final.
X e Y siempre serán al menos 3, y Z nunca será más grande que X * Y
.
Z representará la ubicación que se imprime como "+", en la ubicación, así como 1 carácter a la izquierda, derecha, arriba y abajo. Por ejemplo:
+
+++
+
Finalmente, si los caracteres + interceptarían los bordes (más arriba, más a la izquierda, más a la derecha y / o más abajo), entonces el + debería rebotar a lo largo del mismo eje y desbordar el otro lado.
Ejemplos: Entrada = 5, 5, 13
-----
--+--
-+++-
--+--
-----
Entrada = 10, 10, 10
-------+++
---------+
---------+
----------
----------
----------
----------
----------
----------
----------
Entrada = 10, 10, 21
----------
+---------
+++-------
+---------
----------
----------
----------
----------
----------
----------
Editar: ejemplo no cuadrado 16,3,32
---------------+
-------------+++
---------------+
Creo que lo he cubierto todo. No debería haber límite para la entrada, pero si su programa lo requiere, limítelo a 64 * 64.
Punto de bonificación (¿puedo hacer eso?): La entrada Z no debe ser> X * Y, pero si es más grande que Y * Z, entonces envíe el centro + al centro de la cuadrícula.
EDITAR: la entrada Z no puede ser mayor que X * Y
Edición 2 :. Hice algunos cambios en X e Y para que sea más claro
Este es el código de golf, el código más corto gana.
Respuestas:
Python 2,
172171 bytesEditar: guardado 1 bytes mediante la conversión a la función.
Anterior (más legible):
fuente
JavaScript (ES6), 165 bytes
fuente
Befunge, 175 bytes
Pruébalo en línea!
La primera línea (y una breve continuación de la segunda línea) es donde se leen los parámetros y se calculan algunas constantes: las coordenadas de la ubicación ( lx , ly ), así como las coordenadas ajustadas que explican el rebote del bordes:
La segunda y tercera líneas contienen los bucles principales sobre la altura y el ancho de la cuadrícula, la ruta de ejecución va de derecha a izquierda inicialmente antes de girar hacia la tercera línea de izquierda a derecha. Para cada coordenada en la cuadrícula ( gx , gy ) calculamos la siguiente condición:
Si esa condición es verdadera, empujamos a
"+"
a la pila, si es falso empujamos a"-"
. Para evitar ramificaciones aquí, en realidad solo estamos presionando43 + 2 * !condition
(43 es el valor ASCII de más y 45 es menos).Una vez que los bucles han terminado, el bit final de código es solo una rutina de salida estándar que imprime todo en la pila.
fuente
JavaScript (ES6), 170
Todavía golfable
Menos golf
Prueba
fuente