Inspiré par la leçon APL de la semaine dernière .
Étant donné une carte de siège 2D majuscule et une liste de clients 1D, renvoyez la carte de siège et la liste de clients, mais modifiée comme suit (pour indiquer les sièges occupés et les clients assis):
Pour chaque lettre unique dans la liste des passagers en entrée, mettez en minuscule autant (ou tous, s'il n'y en a pas assez) de cette lettre dans la carte des sièges, en allant de gauche à droite, de haut en bas.
Pour chaque lettre unique sur la carte des sièges, mettez en minuscule autant (ou tous, s'il n'y en a pas assez) de cette lettre dans la liste des passagers, en allant de gauche à droite.
- La carte du siège d'entrée ne contient que des espaces et des lettres majuscules de l'ensemble {
F
,B
,P
,E
}, et peut - être:- séparés en lignes par des sauts de ligne
- une liste de chaînes
- une matrice de caractères majuscules
- dans tout autre format comparable
- La liste des clients d'entrée ne contient que des lettres majuscules de l'ensemble {
F
,B
,P
,E
} et peut être:- un string
- une liste de personnages
- dans tout autre format comparable
- Le plan du siège retourné doit être identique à celui entré, sauf que zéro ou plusieurs lettres ont été pliées en minuscules
- La liste de clients retournée doit être identique à celle entrée, sauf que zéro ou plusieurs lettres ont été pliées en minuscules
- Les espaces de début et de fin sont autorisés
Exemples (éditions abrégées des avions United)
ERJ145
Saisie de la carte des sièges:
P
E
E PP
E EE
E EE
E EE
E EE
P PP
E EE
E EE
E EE
Saisie de la liste des passagers:
FFEEEEEEEEEEEEEEEE
Sortie de la carte des sièges:
P
e
e PP
e ee
e ee
e ee
e ee
P PP
e eE
E EE
E EE
Sortie de la liste des passagers:
FFeeeeeeeeeeeeeeee
CRJ700
Saisie de la carte des sièges:
F FF
F FF
PP PP
PP PP
PP PP
EE EE
PP PP
EE EE
EE EE
EE EE
Saisie de la liste des clients:
FFFFFFFFPPEEEEEEEEEEEEEEEEEEEEE
Sortie de la carte des sièges:
f ff
f ff
pp PP
PP PP
PP PP
ee ee
PP PP
ee ee
ee ee
ee ee
Sortie de la liste des clients:
ffffffFFppeeeeeeeeeeeeeeeeEEEEE
B757
Saisie de la carte des sièges:
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
Saisie de la liste des passagers:
FEEEEEEEEFEEEFEEEEEEEEFEEFFEEFEFFFEE
Sortie de la carte des sièges:
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
Sortie de la liste des passagers:
feeeeeeeefeeefeeeeeeeefeeffeefefffee
B767
Saisie de la carte des sièges:
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
Saisie de la liste des passagers:
PPFEFEEEEEEEBBEEFFPEBPEBBEEFEEEFEEEEEEFPEEEPB
Sortie de la carte des sièges:
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
Sortie de la liste des passagers:
ppfefeeeeeeebbeeffpebpebbeefeeefeeeeeeFpeeepb
Réponses:
05AB1E ,
221615 octets6 octets enregistrés grâce à Nit qui a remarqué que la carte des sièges pouvait être considérée comme une chaîne.
Essayez-le en ligne!
Explication
la source
Python 2 ,
938984838278 octetsEssayez-le en ligne!
Prend l'entrée en deux chaînes. Imprime deux chaînes
Enregistré
la source
s,p=[x.replace(c,c.lower(),c in s)for x in[s,p]]
pour 84 octetsl=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 octetsPrend deux
char *
(sièges et passagers) dont le contenu est modifié sur place.Essayez-le en ligne!
Je suis moins habitué au golf en C qu'en Python, mais c'est amusant aussi!
Si quelqu'un a une idée d'une astuce pour raccourcir la-> Merci à @Dave de m'avoir aidé à jouer au golf encore plus d'octets!*r+=32,*i+=32
partie, je serais reconnaissant.la source
C (gcc) , 63 octets
Essayez-le en ligne!
Beaucoup de crédit à l'étène pour le concept de base. Je viens d'appliquer le golf lourd à la stratégie de sa réponse.
la source
index()
place destrchr()
C (gcc) , 64 octets
Empruntant à la réponse de @ etene, j'ai supprimé le
if
avec l'?:
opérateur tertiaire et réutilisé le pointeur passager comme son propre index.Essayez-le en ligne!
la source
Gelée , 19 octets
Essayez-le en ligne!
la source
Scala , 104 octets
Essayez-le en ligne!
Prend 2 séquences de caractères en entrée et retourne 2 séquences de caractères.
Explication:
la source
Rétine , 36 octets
Essayez-le en ligne! Suppose que la liste des clients est la dernière ligne de l'entrée. Explication: Recherche des paires de caractères majuscules correspondants et les minuscules en
$l
évitant ainsi les caractères intermédiaires.la source
APL (Dyalog Classic) ,
2927 octetsEssayez-le en ligne!
la source
Perl 5
-pF
, 48 octetsEssayez-le en ligne!
La première ligne d'entrée est la liste des passagers. Toutes les lignes suivantes sont la carte des sièges. La sortie est la même.
la source