Inspirowany lekcją APL z zeszłego tygodnia .
Biorąc pod uwagę wielkoformatową mapę miejsc 2D i listę klientów 1D, zwróć mapę miejsc i listę klientów, ale zmodyfikowano w następujący sposób (aby wskazać zajętych miejsc i siedzących klientów):
Dla każdej unikalnej litery na wejściowej liście pasażerów należy wpisać małe litery (lub wszystkie, jeśli nie ma ich wystarczająco dużo) na mapie miejsc, przechodząc od lewej do prawej, od góry do dołu.
Przy każdej unikalnej literze na mapie miejsc należy wpisać małe litery (lub wszystkie, jeśli nie ma ich wystarczająco dużo) na liście pasażerów, przechodząc od lewej do prawej.
- Mapa siedzenie wejściowy zawiera tylko spacje i wielkie litery ze zbioru {
F
,B
,P
,E
}, a może być:- podzielone na wiersze podziałami linii
- lista ciągów
- matryca wielkich liter
- w dowolnym innym porównywalnym formacie
- Lista klientów wejściowy zawiera tylko wielkie litery ze zbioru {
F
,B
,P
,E
} i mogą być następujące:- sznurek
- lista znaków
- w dowolnym innym porównywalnym formacie
- Mapa zwróconych miejsc musi być identyczna z mapą wejściową, z wyjątkiem tego, że zero lub więcej liter zostało złożonych na małe litery
- Lista zwróconych klientów musi być identyczna z listą wejściową, z tym wyjątkiem, że zero lub więcej liter zostało zagiętych na małe litery
- Wiodące i końcowe białe znaki są dozwolone
Przykłady (skrócone wersje samolotów United)
ERJ145
Wprowadzanie mapy miejsc:
P
E
E PP
E EE
E EE
E EE
E EE
P PP
E EE
E EE
E EE
Wprowadzanie listy pasażerów:
FFEEEEEEEEEEEEEEEE
Dane wyjściowe mapy miejsc:
P
e
e PP
e ee
e ee
e ee
e ee
P PP
e eE
E EE
E EE
Dane wyjściowe listy pasażerów:
FFeeeeeeeeeeeeeeee
CRJ700
Wprowadzanie mapy miejsc:
F FF
F FF
PP PP
PP PP
PP PP
EE EE
PP PP
EE EE
EE EE
EE EE
Wprowadzanie listy klientów:
FFFFFFFFPPEEEEEEEEEEEEEEEEEEEEE
Dane wyjściowe mapy miejsc:
f ff
f ff
pp PP
PP PP
PP PP
ee ee
PP PP
ee ee
ee ee
ee ee
Dane wyjściowe listy klientów:
ffffffFFppeeeeeeeeeeeeeeeeEEEEE
B757
Wprowadzanie mapy miejsc:
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
Wprowadzanie listy pasażerów:
FEEEEEEEEFEEEFEEEEEEEEFEEFFEEFEFFFEE
Dane wyjściowe mapy miejsc:
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
Dane wyjściowe listy pasażerów:
feeeeeeeefeeefeeeeeeeefeeffeefefffee
B767
Wprowadzanie mapy miejsc:
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
Wprowadzanie listy pasażerów:
PPFEFEEEEEEEBBEEFFPEBPEBBEEFEEEFEEEEEEFPEEEPB
Dane wyjściowe mapy miejsc:
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
Dane wyjściowe listy pasażerów:
ppfefeeeeeeebbeeffpebpebbeefeeefeeeeeeFpeeepb
Odpowiedzi:
05AB1E ,
221615 bajtówZaoszczędzono 6 bajtów dzięki temu , że Nit zauważył, że mapę miejsc można traktować jako ciąg znaków.
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 ,
938984838278 bajtówWypróbuj online!
Pobiera dane wejściowe jako dwa ciągi. Drukuje dwa ciągi
Zapisano
źródło
s,p=[x.replace(c,c.lower(),c in s)for x in[s,p]]
dla 84 bajtówl=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 bajtówZajmuje dwa
char *
miejsca (miejsca i pasażerowie), których zawartość jest modyfikowana w miejscu.Wypróbuj online!
Jestem mniej przyzwyczajony do gry w golfa w C niż w Pythonie, ale to też jest fajne!
-> Dzięki @Dave za pomoc w golfie więcej bajtów!*r+=32,*i+=32
Byłbym wdzięczny, gdyby ktoś wpadł na pomysł na sztuczkę skracającą tę część.źródło
C (gcc) , 63 bajty
Wypróbuj online!
Ogromne uznanie dla etenu za podstawową koncepcję. Właśnie zastosował ciężką grę w golfa w swojej strategii odpowiedzi.
źródło
index()
zamiaststrchr()
C (gcc) , 64 bajty
Pożyczając z odpowiedzi @ etene, usunąłem
if
z?:
trzeciorzędnym operatorem i ponownie użyłem wskaźnika pasażera jako własnego indeksu.Wypróbuj online!
źródło
Galaretka , 19 bajtów
Wypróbuj online!
źródło
Scala , 104 bajty
Wypróbuj online!
Pobiera 2 sek. Znaków na wejściu i zwraca 2 sek. Znaków.
Wyjaśnienie:
źródło
Siatkówka , 36 bajtów
Wypróbuj online! Zakłada, że lista klientów jest ostatnim wierszem danych wejściowych. Objaśnienie: Znajduje pary pasujących wielkich liter i używa małych liter,
$l
unikając w ten sposób znaków pośrednich.źródło
APL (Dyalog Classic) ,
2927 bajtówWypróbuj online!
źródło
Perl 5
-pF
, 48 bajtówWypróbuj online!
Pierwszy wiersz wprowadzania to lista pasażerów. Wszystkie kolejne linie to mapa miejsc. Dane wyjściowe są takie same.
źródło