En algunas naciones hay recomendaciones o leyes sobre cómo formar corredores de emergencia en las calles que tienen múltiples carriles por dirección. (A continuación, solo consideramos los carriles que van en la dirección en la que estamos viajando). Estas son las reglas que se aplican en Alemania:
- Si solo hay un carril, todos deben conducir a la derecha de manera que los vehículos de rescate puedan pasar a la izquierda.
- Si hay dos o más carriles, los autos en el carril más a la izquierda deben conducir hacia la izquierda, y todos los demás deben moverse hacia la derecha.
Desafío
Dado el número N>0
de carriles regulares, muestre el diseño de los carriles cuando se forme un corredor de emergencia utilizando una cadena de N+1
caracteres ASCII. Puede utilizar dos caracteres, desde el código ASCII 33
hasta 126
uno, para denotar el corredor de emergencia y otro para denotar los automóviles. Se permiten espacios finales o iniciales, saltos de línea, etc.
Ejemplos
Aquí lo estamos utilizando E
para el corredor de emergencia y C
para los automóviles.
N Output
1 EC
2 CEC
3 CECC
4 CECCC
5 CECCCC
6 CECCCCC
etc
C
yE
, ¡pero hay tantos enfoques agradables posibles para este desafío! Usar operaciones matemáticas paraC=1
/E=2
oC=2
/E=3
como lo hace la respuesta principal; usandoC=0
/E=1
con10^(n-1)
; usandoC=0
/E=.
por formato decimal0.0
; utilizandoC=1
/E=-
mediante la utilización-1
; etc. etc. Tantas posibilidades únicas para un desafío que parecía tan preciso al principio. Lástima que solo puedo hacer +1 una vez. ;)Respuestas:
Python 2,
2926 bytesEjemplo:
fuente
10**n*97/30-1/n*9
guarda otro byte, dandof(5) == 323333
etc.Python 3,
3533 bytesEditar: soltando
f=
para guardar 2 bytes, gracias al recordatorio de @dylnan .Pruébalo en línea!
Para visualizarlo:
Salida:
¡Prueba 🚔 en línea!
Python 3, 40 bytes
Una solución sencilla:
Pruébalo en línea!
fuente
lambda N:
C (gcc) , 32 bytes
Pruébalo en línea!
Usos
0
y.
personajes:fuente
Japt,
54 bytesUsos
q
para automóviles y+
para el corredor.Intentalo
Gracias a Oliver, que jugó 4 bytes al mismo tiempo que yo.
Explicación
¡Una solución corta pero una explicación engañosa!
Lo más sencillo primero: el
ç
método, cuando se aplica a un número entero, repite su argumento de cadena ese número de veces. Eli
método toma 2 argumentos (s
&n
) e insertas
en el índicen
de la cadena a la que se aplica.La expansión de los 2 accesos directos unicode utilizados nos da
çq i+1
, que, cuando se transpila a JSU.ç("q").i("+",1)
, se convierte enU
la entrada. Entonces estamos repitiendoq
U
tiempos y luego insertando un+
en el índice 1.El truco final es que, gracias al ajuste del índice de Japt, cuándo
U=1
,i
insertará el+
índice at0
, sea cual sea el valor para el que lo alimenten
.fuente
ç0 iQ1
para 6 bytes, pero sería mejor si lo usaras.ç¬iÅ
por 4 bytes;) Nunca he abusado tanto de Japt.Ä
lugar deÅ
:)R, 50 bytes
-11 gracias a Giuseppe!
Salidas 1 para pasillo de emergencia y 2 para carriles normales
Mi intento, 61 bytes
Nada lujoso para ver aquí, pero vamos a poner a R en el marcador =)
Uso:
fuente
Haskell ,
383432 bytesPruébalo en línea!
fuente
Python 2,
302928 bytesImprimir en
3
lugar deC
y en.
lugar deE
.Explicación:
Pruébalo en línea.
Python 2,
3332312928 bytesImprime en
1
lugar deC
y en-
lugar deE
.-2 bytes gracias a @ovs .
-1 byte gracias a @xnor .
Explicación:
Pruébalo en línea.
fuente
10/3
falla a los 17 añosn=16
si su entero integrado es de 64 bits es suficiente, o en este cason=16
cuando el valor decimal puede ' Mantener más de 15 dígitos decimales por defecto es suficiente. (Lo mismo se aplica a muchas de las otras respuestas que usan idiomas con tamaños de números arbitrarios, como Java, C # .NET, etc.)Pyth,
1098 bytesUsos
0
para denotar el corredor de emergencia y"
.Pruébalo aquí
Explicación
fuente
brainfuck , 42 bytes
Pruébalo en línea!
Toma la entrada como código char y las salidas como
V
carriles normales yW
como el carril despejado. (Para probar fácilmente, recomiendo reemplazar el,
con una serie de+
s)Cómo funciona:
fuente
Octava (MATLAB *),
31 30 28 2722 bytesPruébalo en línea!
El programa funciona de la siguiente manera:
El truco utilizado aquí es XNORar la matriz de semillas
0:n
con una comprobación de si la entrada es mayor que 1. El resultado es quen>1
la semilla se convierte en una matriz lógica[0 1 (0 ...)]
mientras quen==1
la semilla se invierte[1 0]
, logrando la inversión necesaria.El resto es simplemente convertir la semilla en una cadena con suficientes autos anexados.
(*) El enlace TIO incluye en los comentarios de pie de página una solución alternativa para el mismo número de bytes que funciona en MATLAB y en Octave, pero da como resultado una secuencia de '0' y '1' en lugar de 'E' y ' C'. Para completar, la alternativa es:
Se guardó 1 byte usando en
n==1~=0:1
lugar de0:1~=(n<2)
.~=
tiene prioridad sobre<
, de ahí los corchetes originales, pero parece que~=
y==
son manejados por orden de aparición mediante la comparación con 1 podemos ahorrar un byte.Se guardaron 2 bytes al cambiar dónde se realiza la negación de
2:n
. Esto ahorra un par de paréntesis. También tenemos que cambiar el~=
para==
tener en cuenta el hecho de que se negará más adelante.Se guardó 1 byte usando
<
nuevamente. Resulta que<
tiene la misma precedencia que==
después de todo. Colocar el<
cálculo antes del==
asegura el orden correcto de ejecución.Ahorró 5 bytes al no crear dos matrices separadas. En cambio, confiando en el hecho de que la comparación XNOR convertirá un solo rango en lógicos de todos modos.
fuente
Jalea ,
119 bytesPruébalo en línea!
Programa completo
Usos en
0
lugar deC
.fuente
C (gcc), 39 bytes
Pruébalo en línea!
Pidió prestado y adaptó el truco printf de la respuesta de ErikF .
fuente
Python 3, 32 bytes
Pruébalo en línea!
Utiliza una expresión de cadena f para formatear
'E'
o'CE'
rellenar a la derecha con'C'
lo que tiene ancho den+1
.fuente
Brain-Flak ,
10066 bytesPruébalo en línea!
Usos
"
como el carril de emergencia y!
como los carriles normales.fuente
C #, 34 bytes
Pruébalo en línea!
fuente
05AB1E , 7 bytes
Pruébalo en línea!
0 es C y 1 es E.
Explicación
fuente
$<×TìsiR
fue como estaba pensando.1I
se puede jugar al golf$
.APL (Dyalog Unicode) ,
21 1716 bytesPruébalo en línea!
Gracias a Erik por guardar 4 bytes y Adám por un byte adicional.
¿Cómo?
fuente
(⍵>1)
no necesita estar entre paréntesis. Y usted puede ahorrar 4 bytes con una función tácita:(⊢×1<⊢)⌽'E',⍴∘'C'
.(-≠∘1)⌽'E',⍴∘'C'
o=∘1⌽¯1⌽'E',⍴∘'C'
.'CE'[1(≠=∘⍳+)⎕]
Haskell ,
353332 bytes2 bytes guardados gracias a Angs, 1 byte guardado gracias a Lynn
Pruébalo en línea!
Haskell ,
323029 bytesEsto está indexado a cero por lo que no cumple con el desafío
Pruébalo en línea!
Haskell , 30 bytes
Esto no funciona porque la salida debe ser una cadena
Pruébalo en línea!
Aquí usamos números en lugar de cadenas,
2
para el corredor de emergencia,1
para los automóviles. Podemos agregar1
a al final multiplicando por 10 y sumando1
. Esto es más barato porque no tenemos que pagar por todos los bytes de concatenación y literales de cadena.Sería más barato usarlo en
0
lugar de hacerlo,1
pero necesitamos ceros iniciales, que terminan recortándose.fuente
((blah)!!)
puede llegar(!!)$blah
a guardar un byte en sus dos primeras respuestas.Python 3 ,
3029 bytesPruébalo en línea!
OK, ya hay muchas respuestas de Python, pero creo que este es el primer byter sub-30 entre los que todavía usan caracteres "E" y "C" en lugar de números.
fuente
JavaScript (Node.js) , 28 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) , 16 bytes
Pruébalo en línea!
fuente
Stax , 7 bytes
Ejecutar y depurarlo
Esto usa los caracteres "0" y "1". Esto funciona porque cuando gira una matriz de tamaño 1, no cambia.
Desempaquetado, sin golf y comentado, se ve así.
Ejecute este
fuente
JavaScript (Node.js) , 19 bytes
Pruébalo en línea!
fuente
Perl 5
-p
,272019 bytesPruébalo en línea!
Se guardó un byte al usarlo
1
para los automóviles yE
para el corredor de emergencia.fuente
Jalea , 6 bytes
Muestra carriles de automóviles como 0 , el carril de emergencia como 1 .
Pruébalo en línea!
Cómo funciona
fuente
De espacio en blanco ,
141104103 bytesSe agregaron letras
S
(espacio),T
(tabulación) yN
(nueva línea) solo como resaltado.[..._some_action]
agregado solo como explicación.Imprime en
1
lugar deC
y en-
lugar deE
.-1 byte gracias a @JoKing al sugerir el uso de
1
y en-1
lugar de0
y1
.Explicación en pseudocódigo:
Ejecuciones de ejemplo:
Entrada:
1
Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Se detiene con error: Salida no definida.
Entrada:
4
Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Se detiene con error: Salida no definida.
fuente
-
al abusar de la impresión-1
?push_0
;print_as_integer
;push_1
;print_as_integer
apush_-1
;print_as_integer
, pero a cambio los dospush_0
;print_as_integer
son reemplazados porpush_45
;print_as_character
, dóndepush_0
=SSSN
, ypush_45
=SSSTSTTSTN
. Y tambiénpush_45
se debe agregar un adicional , porque para la entradan=1
ahora imprimo el duplicado0
que ya tenía en la pila, por lo que no tuve que presionar0
nuevamente porque0
ya estaba en la pila.-
como reemplazar1
y1
reemplazar0
. Entonces evitaría tener que presionar 45, y por lo que puedo decir, esto ahorraría en imprimir un número en la primera mitad del condicional, pero aumentaría ligeramente los costos al presionar 1 en lugar de 0. Verifique mi respuesta Gol> <> para quiero decir un ejemplo de la salidaprint_-1
lugar de imprimir0
y1
, peroprint_-1
se necesita un adicional fuera del ciclo. EDITAR: pude reducirlo a 103 bytes cambiandosubtract_1
;if_0_jump_to_ONE
;push_-1
;print_integer
asubtract_2
;if_negative_jump_to_ONE
;print_integer
, porque -1 ya está en la pila entonces. Así que gracias por -1 byte. :)AutoHotkey 32 bytes
Reemplaza la letra "C" con "EC" a menos que la cantidad de C> 1, luego envía "CEC" y sale de la aplicación.
C => EC
CC => CEC luego sale del programa. Cualquier C adicional se ingresará después de que el programa salga.
fuente
APL + WIN,
2016 bytes4 bytes guardados gracias a Adám
Solicitudes de entero n:
1 para pasillo de emergencia o para automóviles.
fuente
(-2≠⍴n)⌽n←1⎕/⍕10
J , 11 bytes
Pruébalo en línea!
Basado en el comentario de ngn .
🚘 y 🚔:
1&<,~/@A.'🚔',~'🚘'$~,&4
fuente
MathGolf ,
76 bytesPruébalo en línea.
Salida
1
porE
y0
paraC
.Explicación:
fuente