Inspiriert von der APL-Lektion der letzten Woche .
Wenn Sie eine 2D-Sitzkarte in Großbuchstaben und eine 1D-Kundenliste haben, geben Sie die Sitzkarte und die Kundenliste zurück, die jedoch wie folgt geändert wurden (um belegte Sitze und sitzende Kunden anzugeben):
Schreiben Sie für jeden eindeutigen Buchstaben in der eingegebenen Passagierliste so viele (oder alle, falls nicht genug) Buchstaben in der Sitzübersicht von links nach rechts und von oben nach unten in Kleinbuchstaben.
Geben Sie für jeden eindeutigen Buchstaben in der Sitzübersicht in Kleinbuchstaben an, dass viele (oder alle, falls nicht genug vorhanden) Buchstaben in der Passagierliste von links nach rechts aufgeführt sind.
- Der Eingangssitzplan enthält nur Leerzeichen und Großbuchstaben aus der Menge {
F
,B
,P
,E
}, und sein kann:- durch Zeilenumbrüche in Zeilen getrennt
- eine Liste von Zeichenfolgen
- eine Matrix aus Großbuchstaben
- in jedem anderen vergleichbaren Format
- Die Eingangskundenliste enthält nur Großbuchstaben aus der Menge {
F
,B
,P
,E
} und sein kann:- ein Faden
- eine Liste von Zeichen
- in jedem anderen vergleichbaren Format
- Die Karte des zurückgegebenen Sitzplatzes muss mit der eingegebenen identisch sein, mit der Ausnahme, dass keine oder mehrere Buchstaben in Kleinbuchstaben gefaltet wurden
- Die zurückgegebene Kundenliste muss mit der eingegebenen identisch sein, mit der Ausnahme, dass keine oder mehrere Buchstaben in Kleinbuchstaben gefaltet wurden
- Führende und nachfolgende Leerzeichen sind zulässig
Beispiele (gekürzte Ausgaben von Uniteds Flugzeugen)
ERJ145
Sitzplaneingabe:
P
E
E PP
E EE
E EE
E EE
E EE
P PP
E EE
E EE
E EE
Passagierlisten-Eingabe:
FFEEEEEEEEEEEEEEEE
Sitzplanausgabe:
P
e
e PP
e ee
e ee
e ee
e ee
P PP
e eE
E EE
E EE
Passagierlistenausgabe:
FFeeeeeeeeeeeeeeee
CRJ700
Sitzplaneingabe:
F FF
F FF
PP PP
PP PP
PP PP
EE EE
PP PP
EE EE
EE EE
EE EE
Eingabe der Kundenliste:
FFFFFFFFPPEEEEEEEEEEEEEEEEEEEEE
Sitzplanausgabe:
f ff
f ff
pp PP
PP PP
PP PP
ee ee
PP PP
ee ee
ee ee
ee ee
Kundenlistenausgabe:
ffffffFFppeeeeeeeeeeeeeeeeEEEEE
B757
Sitzplaneingabe:
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
Passagierlisten-Eingabe:
FEEEEEEEEFEEEFEEEEEEEEFEEFFEEFEFFFEE
Sitzplanausgabe:
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
Passagierlistenausgabe:
feeeeeeeefeeefeeeeeeeefeeffeefefffee
B767
Sitzplaneingabe:
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
Passagierlisten-Eingabe:
PPFEFEEEEEEEBBEEFFPEBPEBBEEFEEEFEEEEEEFPEEEPB
Sitzplanausgabe:
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
Passagierlistenausgabe:
ppfefeeeeeeebbeeffpebpebbeefeeefeeeeeeFpeeepb
Antworten:
05AB1E ,
221615 Bytes6 Bytes gespart, da Nit bemerkt hat, dass die Sitzübersicht als Zeichenfolge verwendet werden kann.
Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
938984838278 BytesProbieren Sie es online!
Nimmt die Eingabe als zwei Zeichenfolgen. Druckt zwei Zeichenfolgen
Gerettet
quelle
s,p=[x.replace(c,c.lower(),c in s)for x in[s,p]]
für 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 (Klirren) ,
7568 BytesNimmt zwei
char *
(Sitze & Passagiere), deren Inhalt an Ort und Stelle geändert wird.Probieren Sie es online!
Ich bin das Golfen in C weniger gewohnt als in Python, aber das macht auch Spaß!
Wenn jemand eine Idee für einen Trick hat, um den-> Danke an @Dave für die Hilfe beim Golfspielen!*r+=32,*i+=32
Teil zu verkürzen, wäre ich dankbar.quelle
C (gcc) 63 Bytes
Probieren Sie es online!
Etene viel Dank für das Grundkonzept. Wendete gerade starkes Golfen auf die Strategie seiner Antwort an.
quelle
index()
stattdessen vorstrchr()
C (gcc) , 64 Bytes
In Anlehnung an die Antwort von @ etene entfernte ich den Wert
if
mit dem?:
tertiären Operator und verwendete den Passagierzeiger erneut als eigenen Index.Probieren Sie es online!
quelle
Jelly , 19 Bytes
Probieren Sie es online!
quelle
Scala , 104 Bytes
Probieren Sie es online!
Nimmt 2 Sek. Zeichen in die Eingabe und gibt 2 Sek. Zeichen zurück.
Erläuterung:
quelle
Netzhaut , 36 Bytes
Probieren Sie es online! Angenommen, die Kundenliste ist die letzte Zeile der Eingabe. Erläuterung: Sucht Paare übereinstimmender Großbuchstaben und setzt sie in Kleinbuchstaben, wobei
$l
die Zwischenbuchstaben vermieden werden.quelle
APL (Dyalog Classic) ,
2927 BytesProbieren Sie es online!
quelle
Perl 5
-pF
, 48 BytesProbieren Sie es online!
Erste Eingabezeile ist die Passagierliste. Alle nachfolgenden Zeilen sind der Sitzplan. Die Ausgabe ist die gleiche.
quelle