Inspirado en la lección APL de la semana pasada .
Dado un mapa de asientos en 2D en mayúsculas y una lista de clientes en 1D, devuelva el mapa de asientos y la lista de clientes, pero modifique de la siguiente manera (para indicar los asientos ocupados y los clientes sentados):
Para cada letra única en la lista de pasajeros de entrada, minúscula esa cantidad (o todas, si no hay suficiente) de esa letra en el mapa de asientos, de izquierda a derecha, de arriba a abajo.
Para cada letra única en el mapa de asientos, minúscula esa cantidad (o todas, si no hay suficiente) de esa letra en la lista de pasajeros, de izquierda a derecha.
- El mapa de asientos de entrada sólo contiene espacios y letras mayúsculas del conjunto {
F
,B
,P
,E
}, y puede ser:- separados en filas por saltos de línea
- una lista de cadenas
- una matriz de caracteres en mayúscula
- en cualquier otro formato comparable
- La lista de clientes de entrada sólo contiene letras mayúsculas del conjunto {
F
,B
,P
,E
} y pueden ser:- una cuerda
- una lista de personajes
- en cualquier otro formato comparable
- El mapa de asiento devuelto debe ser idéntico al de entrada, excepto que cero o más letras se han plegado a minúsculas
- La lista de clientes devuelta debe ser idéntica a la de entrada, excepto que cero o más letras se han plegado a minúsculas
- Se permiten espacios en blanco iniciales y finales
Ejemplos (ediciones abreviadas de aviones de United)
ERJ145
Entrada del mapa del asiento:
P
E
E PP
E EE
E EE
E EE
E EE
P PP
E EE
E EE
E EE
Entrada de la lista de pasajeros:
FFEEEEEEEEEEEEEEEE
Salida del mapa del asiento:
P
e
e PP
e ee
e ee
e ee
e ee
P PP
e eE
E EE
E EE
Salida de la lista de pasajeros:
FFeeeeeeeeeeeeeeee
CRJ700
Entrada del mapa del asiento:
F FF
F FF
PP PP
PP PP
PP PP
EE EE
PP PP
EE EE
EE EE
EE EE
Entrada de lista de clientes:
FFFFFFFFPPEEEEEEEEEEEEEEEEEEEEE
Salida del mapa del asiento:
f ff
f ff
pp PP
PP PP
PP PP
ee ee
PP PP
ee ee
ee ee
ee ee
Lista de clientes de salida:
ffffffFFppeeeeeeeeeeeeeeeeEEEEE
B757
Entrada del mapa del asiento:
F F F F
F F F F
F F F F
PPP
PPP PPP
PPP PPP
PPP PPP
EEE EEE
EEE EEE
PPP PPP
EEE EEE
EEE EEE
EEE
EEE EEE
EEE EEE
EEE EEE
EEE
Entrada de la lista de pasajeros:
FEEEEEEEEFEEEFEEEEEEEEFEEFFEEFEFFFEE
Salida del mapa del asiento:
f f f f
f f f f
f f F F
PPP
PPP PPP
PPP PPP
PPP PPP
eee eee
eee eee
PPP PPP
eee eee
eee eee
eeE
EEE EEE
EEE EEE
EEE EEE
EEE
Salida de la lista de pasajeros:
feeeeeeeefeeefeeeeeeeefeeffeefefffee
B767
Entrada del mapa del asiento:
F F F
F F F
BB B B BB
BB B B BB
BB B B BB
PP BB
PP
PP PPP PP
PP PPP PP
PP PPP PP
PP PPP PP
PP EEE PP
EE EEE EE
EE EEE EE
EE EEE EE
EE EEE EE
EE EEE EE
Entrada de la lista de pasajeros:
PPFEFEEEEEEEBBEEFFPEBPEBBEEFEEEFEEEEEEFPEEEPB
Salida del mapa del asiento:
f f f
f f f
bb b b bb
BB B B BB
BB B B BB
pp BB
pp
pp PPP PP
PP PPP PP
PP PPP PP
PP PPP PP
PP eee PP
ee eee ee
ee eee ee
ee eee ee
ee EEE EE
EE EEE EE
Salida de la lista de pasajeros:
ppfefeeeeeeebbeeffpebpebbeefeeefeeeeeeFpeeepb
Respuestas:
05AB1E ,
221615 bytesAhorró 6 bytes gracias a que Nit notó que el mapa del asiento podría tomarse como una cadena.
Pruébalo en línea!
Explicación
fuente
Python 2 ,
938984838278 bytesPruébalo en línea!
Toma la entrada como dos cadenas. Imprime dos cadenas
Salvado
fuente
s,p=[x.replace(c,c.lower(),c in s)for x in[s,p]]
para 84 bytesl=input()
for c in l[1]:l=[x.replace(c,c.lower(),c in l[0])for x in l]
print l
C (clang) ,
7568 bytesToma dos
char *
(asientos y pasajeros) cuyo contenido se modifica en el lugar.Pruébalo en línea!
Estoy menos acostumbrado al golf en C que en Python, ¡pero eso también es divertido!
Si alguien tiene una idea para un truco para acortar la-> ¡Gracias a @Dave por ayudarme a jugar golf más bytes!*r+=32,*i+=32
parte, se lo agradecería.fuente
C (gcc) , 63 bytes
Pruébalo en línea!
Mucho crédito a etene por el concepto básico. Acaba de aplicar el golf pesado a la estrategia de su respuesta.
fuente
index()
lugar destrchr()
C (gcc) , 64 bytes
Tomando prestado de la respuesta de @etene, eliminé el
if
con el?:
operador terciario y reutilicé el puntero del pasajero como su propio índice.Pruébalo en línea!
fuente
Jalea , 19 bytes
Pruébalo en línea!
fuente
Scala , 104 bytes
Pruébalo en línea!
Toma 2 seq de caracteres en la entrada y devuelve 2 seq de caracteres.
Explicación:
fuente
Retina , 36 bytes
Pruébalo en línea! Asume que la lista de clientes es la última línea de la entrada. Explicación: Encuentra pares de caracteres en mayúsculas y minúsculas coincidentes
$l
, evitando los caracteres intermedios.fuente
APL (Dyalog Classic) ,
2927 bytesPruébalo en línea!
fuente
Perl 5
-pF
, 48 bytesPruébalo en línea!
La primera línea de entrada es la lista de pasajeros. Todas las líneas siguientes son el mapa de asientos. La salida es la misma.
fuente