Dado el patrón de carril de dos parámetros y la longitud del camino , imprima una representación ASCII de las marcas del carril para que el Servicio de Caminos y Tráfico pueda pintar los caminos.
Ejemplo de entrada / salida
Entrada: BTHMLRPHU
21
No me importa si toma dos parámetros o concatena el número al final de la cadena, no es ambiguo.
La entrada puede tomarse de STDIN, como argumento de función, variables de entorno, lo que tenga sentido en su idioma.
Salida:
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
! B | /\ x HOV3 ## <- | -> | ^^ x HOV3 x !
! B | \/ x HOV3 ## | | | | ^^ x HOV3 x !
! | x ## | | x x !
! | x ## | | x x !
! | | ## | | | | !
! | | ## | | | | !
! | | ## | | | | !
! B | /\ | HOV3 ## <- | -> | ^^ | HOV3 | !
! B | \/ | HOV3 ## | | | | ^^ | HOV3 | !
! | x ## | | x x !
Cada carácter denota 0,5 metros de ancho y un kilómetro de longitud.
Especificación
Marcas de carril
Por cada tramo de carretera de 10 km, las marcas se pintan en los kilómetros 2, 3, 9 y 10 (desde la "parte superior" de la salida). Las marcas se centran en el carril. Con la excepción del carril bici y la mediana, todos los carriles tienen 3 metros (6 caracteres) de ancho.
Los caracteres ASCII de diamante y flecha no están permitidos en lugar de las marcas como se indica en el resultado del ejemplo.
B
: Carril de bicicletas.B
calificación. 1.5 metros (3 caracteres) de ancho.T
: Tránsito. Marcado de diamantesH
: Carril de vehículos de alta ocupación.HOV3
calificaciónL
yR
: Carril de giro. Marca de flechaP
: Pasando el carril. Marcas de cuidadoU
: Carril sin restricciones. Sin marcas
Separadores (en orden de precedencia)
- Mediana:
##
(denotado porM
en la cadena de entrada, reemplaza cualquier otro separador, incluida la zanja) - Zanja (extrema izquierda y extrema derecha):
!
signo de exclamación - HOV carriles alternan entre
x
y|
cada 5 kilómetros - Normal:
|
Restricciones
Su función o programa debe:
- Imprimir en STDOUT (esto significa equivalentes
System.out.print
para Java,console.log
JavaScript, etc.) - Poder imprimir de 1 a 9 carriles con 0 a 10 medianas
- Ser capaz de imprimir hasta 50 km de carretera (50 líneas de salida)
- No usar ninguna laguna estándar
- El espacio en blanco
\n
al final no es aceptable con la excepción de un opcional al final de la salida
Salida más grande posible: 3700 bytes (74 caracteres * 50 líneas).
Salida más pequeña posible: 5 bytes (con entrada B
, 1)
Supuestos
- No hay medianas adyacentes (
MM
no se producirá una subcadena ) - La segunda línea de marcas podría cortarse (por ejemplo, si la longitud es de 9 o 12 km)
- Los carriles pueden no tener sentido lógicamente (cualquier orden es posible, por ejemplo, un carril de giro a la derecha a la izquierda de la carretera)
Este es el código de golf , por lo que gana el código más corto (en bytes).
Respuestas:
Rubí, 245
Imprima el carril se divide si es relevante, luego imprima el carril.
No espero ganar.
Registro de cambios
245 estrangulador stderr y matrices divididas de manera efectiva.
263 mejor manera de indexar la matriz
268 solo imprime cada línea, no calcules una versión canónica.
330 confirmación inicial
fuente
JavaScript (ES6), 316 bytes
Manifestación
Debería funcionar en Firefox y Edge al momento de escribir, Chrome / Opera requiere que se habiliten características experimentales.
fuente
05AB1E ,
175174175 bytesUn enfoque bastante malo, pero funciona y fue divertido de hacer. Sin embargo, definitivamente se puede jugar un poco más.
+1 byte como corrección de errores para dos
HH
carriles adyacentes .Pruébalo en línea.
Explicación:
Paso 1: Cree todos los carriles posibles con el tamaño 10:
Paso 2: Convierta la cadena de entrada en índices (que vamos a usar para indexar en la lista que creamos en el paso 1):
Paso 3: usamos esos índices para indexar en la lista de carriles. Y luego convertimos esa lista de carriles a la salida correcta, incluyendo extenderlos / acortarlos al tamaño de la entrada entera:
Ver este consejo 05AB1E mío (secciones Cómo comprimir cadenas que no forman parte del diccionario? Y cómo comprimir grandes números enteros? ) Para entender por qué
Ž5E
es1289
;.•o¤[‹‡•
es"tlrpbhmu"
;ŽDý
es10201
;•δ~¬]•
es1119188999
;Ž\nÿ
es19889
.fuente