Вдохновленный уроком APL на прошлой неделе .
С учетом двухмерной карты мест в верхнем регистре и списка клиентов 1D верните карту мест и список клиентов, но измените их следующим образом (чтобы указать занятые места и клиентов, сидящих):
Для каждой уникальной буквы во входном списке пассажиров строчные буквы (или все, если их недостаточно) этой буквы на карте сидений идут слева направо, сверху вниз.
Для каждой уникальной буквы на карте мест строчные буквы (или все, если их недостаточно) этой буквы в списке пассажиров (слева направо).
- Карта ввода сиденье содержит только пробелы и прописные буквы из множества {
F
,B
,P
,E
}, и может быть:- разделены на строки переносом строк
- список строк
- матрица заглавных букв
- в любом другом сопоставимом формате
- Список клиентов входа содержит только заглавные буквы из множества {
F
,B
,P
,E
} и может быть:- строка
- список персонажей
- в любом другом сопоставимом формате
- Возвращенная карта мест должна быть идентична входной, за исключением того, что ноль или более букв были согнуты в нижний регистр
- Возвращенный список клиентов должен быть идентичен входному, за исключением того, что ноль или более букв были согнуты в нижний регистр
- Лидирующие и конечные пробелы разрешены
Примеры (укороченные издания самолетов Юнайтед)
ERJ145
Ввод карты мест:
P
E
E PP
E EE
E EE
E EE
E EE
P PP
E EE
E EE
E EE
Ввод списка пассажиров:
FFEEEEEEEEEEEEEEEE
Выходная карта:
P
e
e PP
e ee
e ee
e ee
e ee
P PP
e eE
E EE
E EE
Вывод списка пассажиров:
FFeeeeeeeeeeeeeeee
CRJ700
Ввод карты мест:
F FF
F FF
PP PP
PP PP
PP PP
EE EE
PP PP
EE EE
EE EE
EE EE
Ввод списка клиентов:
FFFFFFFFPPEEEEEEEEEEEEEEEEEEEEE
Выходная карта:
f ff
f ff
pp PP
PP PP
PP PP
ee ee
PP PP
ee ee
ee ee
ee ee
Вывод списка клиентов:
ffffffFFppeeeeeeeeeeeeeeeeEEEEE
B757
Ввод карты мест:
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
Ввод списка пассажиров:
FEEEEEEEEFEEEFEEEEEEEEFEEFFEEFEFFFEE
Выходная карта:
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
Вывод списка пассажиров:
feeeeeeeefeeefeeeeeeeefeeffeefefffee
B767
Ввод карты мест:
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
Ввод списка пассажиров:
PPFEFEEEEEEEBBEEFFPEBPEBBEEFEEEFEEEEEEFPEEEPB
Выходная карта:
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
Вывод списка пассажиров:
ppfefeeeeeeebbeeffpebpebbeefeeefeeeeeeFpeeepb
Ответы:
05AB1E ,
221615 байтСохранено 6 байтов благодаря Nit, который заметил, что карту мест можно считать строкой.
Попробуйте онлайн!
объяснение
источник
Python 2 ,
938984838278 байтПопробуйте онлайн!
Принимает ввод в виде двух строк. Печатает две строки
Сохраненный
источник
s,p=[x.replace(c,c.lower(),c in s)for x in[s,p]]
для 84 байтовl=input()
for c in l[1]:l=[x.replace(c,c.lower(),c in l[0])for x in l]
print l
C (лязг) ,
7568 байтЗанимает два
char *
(места и пассажиры), чье содержимое изменяется на месте.Попробуйте онлайн!
Я менее привык играть в гольф на C, чем на Python, но это тоже весело!
Если у кого-нибудь есть идея, как укоротить-> Спасибо @Dave за помощь в игре еще в байтах!*r+=32,*i+=32
часть, я был бы благодарен.источник
C (gcc) , 63 байта
Попробуйте онлайн!
Большое спасибо Etene за основную концепцию. Просто применил тяжелый гольф к стратегии своего ответа.
источник
index()
вместоstrchr()
C (gcc) , 64 байта
Заимствуя ответ @ etene, я удалил
if
с?:
третичным оператором и повторно указатель пассажирского как свой собственным индекс.Попробуйте онлайн!
источник
Желе , 19 байт
Попробуйте онлайн!
источник
Scala , 104 байта
Попробуйте онлайн!
Принимает 2 последовательности символов на входе и возвращает 2 последовательности символов.
Объяснение:
источник
Сетчатка , 36 байт
Попробуйте онлайн! Предполагается, что список клиентов является последней строкой ввода. Объяснение: Находит пары совпадающих заглавных символов и использует их в нижнем регистре,
$l
избегая тем самым промежуточных символов.источник
APL (Dyalog Classic) ,
2927 байтПопробуйте онлайн!
источник
Perl 5
-pF
, 48 байтПопробуйте онлайн!
Первая строка ввода - это список пассажиров. Все последующие строки являются картой мест. Выход такой же.
источник