Entrada:
- Un entero , que se garantiza que es .
- Un número entero , que es uno de .
Salida:
Una carretera de tamaño , que estará en dirección noroeste si ; una dirección norte si ; o una dirección noreste si . El camino siempre tendrá tres espacios de ancho (o cinco en general si incluimos los bordes exteriores). Además, habrá una línea de separación de carreteras en la sección inferior, y luego se alternará mientras va hacia arriba.
Algunos ejemplos:
Entrada:
Salida:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Entrada: Salida:
\ \
\ \ \
\ \
\ \ \
Reglas de desafío:
- Cualquier cantidad de espacios iniciales / finales y / o nuevas líneas son aceptables, siempre que imprima la carretera requerida en algún lugar de la pantalla.
- En lugar de las opciones , también puede usar las opciones o lugar. Además, puede elegir cuál de las tres opciones se asigna a cuál de las tres direcciones. (Asegúrese de mencionar las opciones que ha utilizado si difiere de la para , respectivamente, que se utiliza en esta descripción desafío!)
[north-west, north, north-east]
- Cualquier formato de salida razonable es aceptable. Por supuesto, lo más común es imprimirlo en STDOUT, pero devolverlo como una cadena o una lista de caracteres 2D también está bien.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Los dos ejemplos anteriores y:
Entrada:
Salida:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Respuestas:
Lienzo ,
2322 bytesPruébalo aquí!
Utiliza las entradas de dirección 0, 1 y 2.
Explicación:
fuente
Python 2 ,
79787372 bytesPruébalo en línea!
Toma
[1,0,-1]
para[north-west, north, north-east]
-1 byte, gracias a Neil
fuente
i%2*c or' '
guarda un byte.Python 2 , 66 bytes
Pruébalo en línea!
Usos
d=-1
para NE,d=0
para N yd=1
para NW. Aprovecha que se permiten espacios principales. La regla de que el segmento inferior de la carretera tiene un separador dificultaba la correcta paridad; se logra cortando(s*n)[n:]
la segunda mitad de las2n
alternancias entre el espacio y el personaje del camino.fuente
1. Python 3.5,
122120 bytesLa secuencia de comandos toma dos parámetros: n, d.
d: 0, 1, 2 -> \ | / /
tio.run
salida:
Explicación
editar: -2 bytes gracias a Kevin Cruijssen
fuente
n-1-i
puede sern+~i
( consejo relevante ) yj%2==0
puede serj%2<1
. Si aún no los ha visto, los consejos para jugar golf en Python y los consejos para jugar golf en <todos los idiomas> pueden ser interesantes de leer.n+~i
, pero parece útil. También gracias por resaltar el código.j%2*" "or c
guarda otro par de bytes.PowerShell ,
8882807471 bytes-8 bytes gracias a Mazzy
-6 bytes gracias a AdmBorkBork y Mazzy
-3 bytes gracias a AdmBorkBork
Pruébalo en línea!
Utiliza [0,1,2] para NW, NE, N. Se usa
d
como índice de lista dos veces para obtener primero el método de espaciado (se elimina de la lista cuando se usa 2 que devuelve 0) y luego qué carácter usar al dibujar las líneas. Agrega una lista a la cadena de espacios (que de forma innata tiene espacios entre los miembros cuando se adjunta como tal) que construye el camino. También intercambia entre un carril abierto o un guión según el módulo matemático.fuente
C (gcc) ,
10090 bytesPruébalo en línea!
Versión bien escrita
fuente
Carbón ,
332923 bytesPruébalo en línea! El enlace es a la versión detallada del código. Ahora que todos los errores subyacentes de Charcoal parecen corregidos, puedo anunciar el código óptimo. Explicación:
Gire la dirección del cursor en sentido antihorario según la primera entrada, de modo que 1 se convierta en noreste, 2 norte y 3 noroeste.
Ingrese la longitud del camino.
Imprima la mitad del largo del camino y luego estírelo dando el separador del camino.
Imprime los lados del camino.
@KevinCruijssen posteriormente envió una versión más difícil de esta pregunta que fue eliminada desde entonces, pero los usuarios con suficiente representante pueden verla aquí: El camino (difícil) al código El truco de estiramiento que utilicé en esta respuesta no es aplicable a esa pregunta, así que en su lugar escribió el siguiente programa de
4545 bytes:Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Pase por los lados y separador.
Salta al inicio del lado.
Haga una matriz que contenga ay
1
un espacio, pero elimine el espacio nuevamente si estamos dibujando los lados en lugar del separador.Pase sobre cada sección del camino.
Gire la dirección del cursor en consecuencia.
Pase sobre uno menos que la longitud de la sección del camino ...
... e imprime elementos alternos de la matriz. La alternancia se logra indexando cíclicamente en la matriz con la coordenada Y del cursor.
Imprima la última fila de esta sección de carretera, pero sin mover el cursor ...
... para que el cursor pueda moverse hacia arriba listo para la siguiente sección.
Gire la dirección del cursor hacia atrás, listo para la siguiente sección.
fuente
Kotlin ,
9692 bytesAcepta [0, 1, 2] en lugar de [-1, 0, 1]
Funciona de manera similar a las soluciones en otros idiomas, pero desafortunadamente Kotlin realmente no brilla en este.
val c=“\\|/“;
recupera el carácter para usar en la construcción de carreteras aprovechando el hecho de que Kotlin trata las cadenas como una matriz de caracteres (como debería, mirándote Java)Pruébalo en línea!
fuente
4
con mi ejemplo de4
para ver la diferencia que quiero decir. No conozco a Kotlin tan bien, pero creo que puedes resolverlo (y jugar 4 bytes al mismo tiempo) cambiando[(it+1)%2]
a[it%2]
. :) Aparte de eso, es una buena respuesta, así que +1 de mi parte.Código TSQL,
171117 bytesMe di cuenta de que esto podría escribirse mucho más corto como código.
Consulta TSQL, 137 bytes
USE master no es necesario, si su base de datos ya es master. Sin embargo, algunos usuarios tienen una base de datos predeterminada diferente.
El guión al probarlo es ligeramente diferente. Tuve que reemplazar el espacio ascii-32 con ascii-160, los espacios no se mostraban.
Pruébalo
Hice algunos ajustes y me di cuenta de que podía reemplazar
con
fuente
order by 1/0
es que no causa un error de división por cero?JavaScript (ES8),
90 8785 bytes(direction)(length)
Pruébalo en línea!
JavaScript (ES6), 90 bytes
Este dibuja el carácter de salida por carácter con un poco más de matemáticas en lugar del
.padStart()
método.(direction)(length)
Pruébalo en línea!
fuente
Jalea ,
3130 bytesUn enlace diádico que acepta la longitud a la izquierda y la dirección negada * a la derecha que produce una matriz 2D de caracteres.
* *
[north-west, north, north-east]=[1, 0, -1]
Pruébalo en línea! (el pie de página llama al Enlace, se une con los caracteres de nueva línea e imprime el resultado)
¿Cómo?
fuente
Python 2, 127 bytes
Pruébalo en línea!
Primeras dos líneas tomadas de @TFeld.
fuente
D,N=input()
(y usar Python 2 en lugar de 3) para arreglar esto. O podría cambiarlo a una función lambda tomando estos dos parámetros." ".join(..)
.format
i%2*c or' '
guarda algunos bytes más, aunque noté que el separador es incorrecto para carreteras de longitud impar.Python 2 , 93 bytes
Pruébalo en línea!
fuente
+' %s '+
a,'%s',
'%s'%
completo.J , 64 bytes
Pruébalo en línea!
Intentaré jugarlo más tarde
fuente
C # (Visual C # interactivo Compilador) ,
12910710393 bytes-1 para el noreste, 1 para el noroeste, 0 para el norte
Pruébalo en línea!
fuente
Rojo , 157 bytes
Pruébalo en línea!
fuente
Japt, 53 bytes
Pruébalo en línea!
fuente
Swift 4.2 ,
112108 bytes-4 bytes gracias al Sriotchilism O'Zaic
[0,1,2] en lugar de [-1,0,1].
Pruébalo en línea!
Explicación
Determina el letrero de la calle a usar. (Apuesto a que esto se puede acortar de alguna manera)
Itera a lo largo de la calle.
Agrega los espacios en frente de la calle.
Agrega el signo del medio a cualquier otra línea.
Mi primera ☝️, estoy contento con los consejos de optimización. Aprendí principalmente de ese hilo: consejos para jugar al golf en Swift .
fuente
in
y" "
en su código aunque lo haya eliminado en sus ejemplos.\(c)
en ambos casos). Guardaría bytes simplemente concatenando elc
a la cadena. Pruébalo en línea!Perl 6 , 66 bytes
Pruébalo en línea!
Devuelve una lista de líneas.
Explicación
fuente
Rubí , 90 bytes.
Pruébalo en línea!
ACTUALIZACIÓN: Gracias, Kevin, por señalar que en mi presentación original faltaban espacios entre los bordes de la carretera y los marcadores (es decir, carreteras de 3 anchos en lugar de 5 anchos). Dicho esto, podría haber una solución más corta para eso que
c+' '+...+' '+c
.Información direccional:
-1, 0, 1
mapas a{ north-west, north, north-east }
Argumentos: esto lee argumentos de línea de comandos como
4 -1
(un camino de cuatro filas, inclinado hacia el noroeste).Nota adicional: Esto se probó localmente con Ruby v2.6.1, y parece que Try It Online usa Ruby v2.5.3. No tengo ninguna razón para pensar que no funcionaría con todas las demás versiones de Ruby.
fuente
|||
o|<sp>|
, pero debería ser|<sp>|<sp>|
o|<sp><sp><sp>|
(donde<sp>
hay un espacio). No conozco a Ruby, pero parece que puedes resolverlo cambiandoc+[' ',c][i%2]+c
ac+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 bytes
Pruébalo en línea!
Toma
d
como uno de0
,1
o2
.fuente
Japt
-R
, 40 bytesPruébalo en línea!
Explicación:
fuente
Stax , 23 bytes
Ejecutar y depurarlo
La entrada es dos enteros separados por un espacio.
La primera es
d
. -1 especifica noreste. 0 para el norte. 1 para el noroeste. El segundo parámetro esn
. Estos dos valores se analizarán implícitamente desde la entrada y se colocarán en la pila de entrada con lan
parte superior. Ademásd
será accesible desde el registro de staxx
ya que es el primer valor analizado implícitamente.Por ejemplo, ingrese "1 7"
Ejecute este
fuente
perl -M5.010 -Mfeature = firmas, 97 bytes
fuente