Які привиди відсутні?


25

У цьому виклику, враховуючи список привидів Pac-Man, ви повинні вивести, яких привидів не вистачає. Ви повинні зробити це в декількох байтах

Вхідні дані

Вхід буде складатися з рядка або списку, який буде містити ряд привидів, які можуть включати;

  • Блискучий
  • Чорнило
  • Рожевий
  • Клайд

Однак, вхід може також включати Pac-Man (з цим розділовим знаком). Отже, максимальна кількість елементів у списку становитиме п'ять у будь-якому порядку. Можна припустити, що жодних недійсних елементів у списку не буде

Вихідні дані

Вихід буде складатися з рядка або списку. Це буде включати всіх привидів, які не вводяться в будь-якому порядку. Однак якщо Pac-Man знаходиться на вході, всі привиди будуть вважатися зниклими (бо він їх їсть).

Тестові справи

input: Clyde
output: Blinky, Inky, Pinky
alternate output: Inky, Pinky, Blinky
or one of the other 4 permutations

input: Clyde, Blinky # or however you delimit it
output: Inky, Pinky
alt: Pinky, Inky

input: Pac-Man, Clyde
Output: Blinky, Inky, Pinky, Clyde
or you could output one of the other 23 permutations

input:[null]
Output: Blinky, Inky, Pinky, Clyde
or you could output one of the other 23 permutations

Це кодогольф, тому чим нижчий обсяг, тим краще.


Якщо немає привидів, чи вхід порожній рядок, чи [null]?
Zizouz212

1
це порожня рядок.
Зруйнований лимон

5
Чи вхідні та вихідні формати строго типів рядків, чи ми можемо використовувати список? Технічні характеристики кажуть, що вони рядки, але потім їх називають списками.
атласолог

6
Загальна думка полягає в тому, що слід уникати громіздких / суворих форматів введення та виведення даних . Розщеплення та з’єднання слів просто збільшує код, і він насправді нічого не додає до основної задачі.
Денніс

1
Не помиляється вихід з Pac-Man? Ви можете уточнити? Спасибі
Hastur

Відповіді:


3

Желе , 25 22 байт

Ff”-ȯ⁸“JLKqḤṢ&F⁻ı»ṣ⁶¤ḟ

Це монадійна функція. Введення / виведення у формі списків. Спробуйте в Інтернеті!

Як це працює

Ff”-ȯ⁸“JLKqḤṢ&F⁻ı»ṣ⁶¤ḟ  Monadic link. Argument: A (list of strings)

F                       Flatten A.
 f”-                    Filter it with the string "-" to detect "Pac-Man".
    ȯ⁸                  Flat logical OR with A. This yields A if there is no '-'
                        in the input, the string "-" otherwise.
                    ¤   Combine the three links to the left into a niladic chain.
      “JLKqḤṢ&F⁻ı»        Yield "Blinky Inky Pinky Clyde", using Jelly's built-in
                          English dictionary.
                  ṣ⁶      Split at spaces to yield
                          ["Blinky", "Inky", "Pinky", "Clyde"].
                     ḟ  Filter-false; removing all elements from that list that
                        appear in A or "-". This is a noop if A contains "Pac-Man".

Який словник ви використовували, у якому є "Pinky" тощо? XD
Conor O'Brien

1
За замовчуванням, який постачався з моєю ОС. Pinky означає мізинець пальця, тому він повинен бути присутнім у більшості словників. Мені довелося побудувати Blinky як B + linky . Не впевнений, що таке посилання ...
Денніс

15

Сітківка , 45 байт

A`-
$
,;BliNClyde,INPiN
N
nky,
D`\w+,
.*;|,$

Подача підводного каналу є значною. Вхід і вихід розділені комами.

Спробуйте в Інтернеті! (Перший рядок включає тестовий набір, відокремлений виведенням ліній.)

Пояснення

Я не очікував, що зможу так швидко показати останнє доповнення Retina (етапи дедуплікації), але це дуже корисно для цього виклику. :)

Етап 1: Антигреп

A`-

Етапи анти-grep відкидають усі рядки, які відповідають заданому регулярному вираженню. Зворотний вираз справедливий, -а введення - це завжди один рядок, тому це відкидає всіх привидів, якщо вхід містить Pac-Man.

Етап 2: Заміна

$
,;BliNClyde,INPiN

Це просто додає фіксовану рядок ,;BliNClyde,INPiN. Це буде список привидів на виході після деякого очищення.

Етап 3: Заміна

N
nky,

Зауважте, що ми написали три *nkyпривиди за допомогою Nна попередньому етапі (і пропустили кому після них), і тепер ми розширюємо цю стенографію, що економить пару байтів. Тепер є кома після кожного привиду, і у нас є вхідні привиди та список усіх привидів, розділених крапкою з комою.

3 етап: дедупликація

D`\w+,

Це нова частина. На етапах дедупликації знаходять усі екземпляри заданого регулярного вираження та відкидають всі відповідні підрядки, які дорівнюють попередньому зібраному підрядку. Регекс просто відповідає всім привидам, як у вході, так і в списку потенційних результатів. Якщо вхід містить привид, то той самий привид знову буде узгоджений у другому списку і буде відкинутий. В іншому випадку привид вперше узгоджується у другому списку і зберігається. Отже після цього список після крапки з комою - наш бажаний вихід. Залишилося лише трохи очищення:

5 етап: Заміна

.*;|,$

Ми просто узгоджуємо все до крапки з комою, а також комою в кінці рядка і видаляємо їх.


Що щодо справи Пак-Мана?
Значення чорнила

2
@ KevinLau-notKenny Дивіться пояснення першого етапу.
Мартін Ендер

7

Python 3, 75 байт

lambda s:[x for x in['Blinky','Inky','Pinky','Clyde']if(x in s)<1or'-'in s]

Введення - це рядок, розділений комами, а вихідним буде список.


4
if(x in s)<1Частина розумна! +1
Даніель

6

JavaScript ES6, 85 78 байт

Як анонімна функція

a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)|a.some(v=>v[6]))

Сьогодні я дізнався про це filter функцію. Весело!

15 байт збережено завдяки Нілу.

Використання:

(a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)||a.includes("Pac-Man")))(["Pac-Man"])
> ["Blinky","Inky","Pinky","Clyde"]
(a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)||a.includes("Pac-Man")))(["Pinky"])
> ["Blinky","Inky","Clyde"]
(a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)||a.includes("Pac-Man")))([])
> ["Blinky","Inky","Pinky","Clyde"]

1
Замість спеціального кожуха Pac-Manпоза фільтром, я думаю, що ви можете додати його як a.includes("Pac-Main")||!a.includes(c)у фільтр, і в цей момент у вас є лише одне використання, gі, отже, ви можете вкласти його і перетворити ваш блок у вираз, уникаючи цього returnтвердження.
Ніл

@Neil Чудова ідея. Я зміг вирізати returnі, {}і врятував тонну байтів, дякую!
chargragrass

Ви можете також зберегти один байт, замінюючи дзвінки на a.includesз a[z="includes"](першим) і a[z](другий). Крім того, я думаю, що ви можете зберегти ще один байт, скориставшись побітовим значенням OR ( |) у своїх булевих результатах замість логічного АБО ( ||).
апспіллери

2
На насправді, так як Pac-Manце найдовший можливий вхід (і недійсні входи неможливо), ми можемо перевірити існування сьомого символу для тесту на Pac-Man: c=>!a.includes(c)||a.some(v=>v[6]). Використання цього з побітним чи АБО знижує рахунок до 78.
apsillers

@apsillers О, це чудово, ніколи б не думав перевіряти довжину. Я змінився на біт або або додав, що дякую!
charredgrass

3

Ruby, 55 49 байт

Спробуйте в Інтернеті!

-6 байт від @MartinEnder

->a{%w"Blinky Inky Pinky Clyde"-(a*''=~/-/?[]:a)}

Масиви Ruby можуть зазнати віднімання, що дуже легко видаляє відповідних привидів.


Як це стосується Pac-Man?
Ніл

@Neil він приєднується до масиву разом, використовуючи a*''та regex - порівнює його з поданням -у імені Pac-Man. Якщо він присутній, він нічого не віднімає зі списку привидів, а якщо його немає, він віднімає вхідний список (тому кожен елемент у вхідному списку видаляється зі списку привидів)
Value Ink

3

Perl, 51 байт

50 байт коду + 1 для -n

for$@(Blinky,Inky,Pinky,Clyde){print$@if/-/|!/$@/}g}

Використання

perl -ne 'for$@(Blinky,Inky,Pinky,Clyde){print$@if/-/|!/$@/}' <<< 'Pac-Man, Clyde'
BlinkyInkyPinkyClyde

Я можу змінити вихід, якщо потрібно, додавши пробіл після кожного привиду, на + 3 байти, замінені print$@на print"$@ ".

-6 байт завдяки @MartinEnder !


Perl, 53 байти

51 байт код + 2 для -na

Альтернативне рішення за допомогою оператора smartmatch:

print grep/-/~~@F|!($_~~@F),Blinky,Inky,Pinky,Clyde

Використання

Потрібен список вхідних даних, розділених пробілом:

perl -nae 'print grep/-/~~@F|!($_~~@F),Blinky,Inky,Pinky,Clyde' <<< 'Clyde Pinky Inky'
Blinky
perl -nae 'print grep/-/~~@F|!($_~~@F),Blinky,Inky,Pinky,Clyde' <<< 'Clyde Pinky Inky Pac-Man'
BlinkyInkyPinkyClyde'

3

Піт - 45 38 35 байт

=GwI!:G"a")j-["inky""pinky""blinky""clyde")cG

I!:=Gw"a")j-c:" p bl clyde"d"inky "dcG

j-c:" p bl clyde"d"inky "d?:z\aZYcz

Ще 1 байт завдяки Leaky Nun!

Вхід повинен бути обмеженим простором, всі малі літери; виводить відсутніх привидів на окремих рядках, якщо у вході не знаходиться pac-man.


Ви забули "Pac-Man"
Жак Марає

@JacquesMarais Ні, це працює. The: z \ a визначає, чи є "a" на вході, і буде "a" у вході iff pac-man є у вході
KoreanwGlasses

Я натиснув посилання Pyth, і це не спрацювало, коли я ввійшов у "Pac-Man". Коли вводиться "Pac-Man", він повинен показувати всі імена, а не жодне з них.
Жак Маре

@JacquesMarais Моя помилка. Виправлено.
KoreanwGlasses

}\azтакож перевіряє, чи zмістить він лист a. На 1 байт коротше.
Якубе

3

C, 171 байт

Передайте NULL-завершений масив рядків до f(), і він буде друкувати відсутні імена.

*a[]={"Blinky","Inky","Pinky","Clyde",0},**s,**r,n;f(int**p){for(r=p;*p;)r=strcmp(*p++,"Pac-Man")?r:a+4;for(s=a;*s;++s){for(p=r,n=1;n&&*p;)n=strcmp(*s,*p++);n&&puts(*s);}}

Спробуйте це на ideone.


2

PowerShell v4 +, 107 байт

param($n)((($n+($x='Pinky','Inky','Blinky','Clyde')|group|?{$_.count-eq1}).Name),$x)['-'-in[char[]]-join$n]

Трохи незграбний порівняно з іншими, оскільки PowerShell не вистачає потрійного оператора або будь-якого mapоператора -style. Як результат, ми будуємо своє.

Приймає введення $nв явному масив рядків (наприклад, .\which-ghosts-are-missing.ps1 @('Clyde','Blinky'). Інша частина програми є один псевдо-потрійна , який складається з масиву, індекс ми в через який - або логіки [...]. Логіка просто чи -персонаж в будь-якому місці в масиві вхідних -joinед разом в єдиний рядок, а потім повторно переданий як charмасив, щоб використовувати -inоператор. Таким чином, якщо він Pac-Manє у вхідному масиві, це буде$TRUE і буде обраний другий елемент псевдотермінального масиву, інакше перший буде бути обраним.

Якщо справа Pac-Manне знаходиться в масиві, виводиться перша частина псевдотермінального масиву. Це комбінація вхідного масиву, $nоб'єднаного з масивом усіх привидів (збережених у $x). Ми труба , що новий масив в Group-Objectякому буде група , як пункти разом, а потім виберіть з допомогою Where-Object(поєднаним з допомогою |?{...}лише пунктів , де їх .countє -eqUAL до 1. Це все инкапсулируются в круглих дужках, і ми вибираємо .Nameвластивість. Тут вимога v4 приходить, як під v4, ви можете посилатися на мітку хеш-пам’яті на зразок цієї, а не використовувати щось подібне |Select Name, що економить кілька байтів.

Інакше, оскільки Pac-Manзнаходиться у вхідному масиві, нам потрібно вивести усіх привидів. На щастя, ми їх уже зберегли $x, тож вибір у цьому випадку. Так чи інакше, конвеєр тепер містить рядковий масив привидів, а висновок неявний.

Приклади

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @('Clyde')
Pinky
Inky
Blinky

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @('Pac-Man','Clyde')
Pinky
Inky
Blinky
Clyde

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @()
Pinky
Inky
Blinky
Clyde

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @('Clyde','Blinky')
Pinky
Inky

2

Python 2, 66 61 96 байт

g={"Blinky","Inky","Pinky","Clyde"};i=set(input());print",".join(g-i if not"Pac-Man"in i else g)

Вхід повинен бути списком, вихід - рядок імен, розділених символом a ,.

Версія з 61 байтом, яка не обробляє Pac-Man:

print",".join({"Blinky","Inky","Pinky","Clyde"}-set(input()))

8
У цьому записі Pac-Man не обробляється.
Руйнуючий лимон

Вам не потрібно set[...]. Просто використовуйте {...}набір літерал.
Денніс

Я дійсно не помітив річ Pac-Man, навіть прочитавши виклик 3 рази ... Я виправлю код.
акроліт

2

Haskell, 91 байт

import Data.List
p l=(if elem"Pac-Man"l then id else(\\l))["Blinky","Inky","Pinky","Clyde"]

Введення - це список рядків. Він вирішує, чи використовувати цей список як такий, чи робити різницю у списку, виходячи з наявності "Pac-Man".

Для додаткової забави тут немає Pac-Man:

import Data.List
(["Blinky","Inky","Pinky","Clyde"]\\)

Ця відповідь незабаром покращиться, зробив це супер пізно вночі.


2

Python 3, 77 байт

lambda i:[g for g in"Blinky Inky Pinky Clyde".split()if g not in i or"-"in i]

Ось ще одна відповідь на 89 байт, з якою я грав, але не вийшло :(

lambda i:[g for g in[s+"nky"for s in"Bli I Pi".split()]+["Clyde"]if g not in i or"-"in i]

А ось оригінал у 85 байт:

lambda i,n="Blinky Inky Pinky Clyde":([g for g in n.split()if g not in i],n)["-"in i]

Усі вони беруть один рядок імен, розділених пробілами / комами.


2

05AB1E, 47 44 байт

•1g!Z~÷kÅ]°%Ï0›K/•35B0¡™svy'-åi,q}}v¹ykÌiy)˜

Пояснення

•1g!Z~÷kÅ]°%Ï0›K/•35B0¡™                      # push list of the 4 ghosts
                        svy'-åi,q}}           # if Pac-Man is in input, quit and output list of all 4 ghosts
                                  v¹ykÌiy)˜   # otherwise, generate the list of ghosts missing from input

Спробуйте в Інтернеті


2

Python 2, 151 байт

Оскільки вже є відповіді Python, використовуючи набори та рядки, я вирішив обмежитися роботою зі списками, які виявилися досить довгими та неконкурентоспроможними. Однак, оскільки прийнятий підхід відрізняється від загальноприйнятого, ось такий:

o=['Blinky','Clyde','Inky','Pinky']
p=lambda x:[l for l in reduce(lambda z,x:z+[y+[x]for y in z],o,[[]])if sorted(l+x)==o][0]if'Pac-Man'not in x else o

де очікуваний вхід - це список рядків.

Підхід полягає у використанні всіх можливих комбінацій (без урахування порядку) 0,1,2,3 та 4 елементів. Це робиться шляхом

reduce(lambda z,x:z+[y+[x]for y in z],o,[[]])

який повертається

[[], ['Clyde'], ['Pinky'], ['Clyde', 'Pinky'], ['Inky'], ['Clyde', 'Inky'],
['Pinky', 'Inky'], ['Clyde', 'Pinky', 'Inky'], ['Blinky'], ['Clyde', 'Blinky'],
['Pinky', 'Blinky'], ['Clyde', 'Pinky', 'Blinky'], ['Inky', 'Blinky'],
['Clyde', 'Inky', 'Blinky'], ['Pinky', 'Inky', 'Blinky'], 
['Clyde', 'Pinky', 'Inky', 'Blinky']]

і знайдіть той, який, крім списку вхідних даних, приводить до повного списку привидів.

Потім перевіряється, чи рядок 'Pac-Man'є частиною вхідних даних, і, якщо вона є, повертається весь список привидів. Якщо ні, то повертаються лише ті, які не є частиною вводу.

Зауважте, що список, що містить усі імена привидів ( o), сортується за алфавітом і те саме стосується списку, побудованого як ( sorted(l+x)). Це пов'язано з тим, що в Python ['a','b']==['b','a']оцінюється як, Falseтоді ['a','b']==['a','b']як оцінюється як True.

3 байти можна зберегти, якщо дозволено повертати відповідь у списку списків (видаливши [0]в кінці першого розуміння списку). Але оскільки я не впевнений, що це дійсний результат, я рахую їх.


2

Об'єкт Паскаль, 204 200 байт

Дві петлі, використовуючи двійковий код, щоб знайти, які привиди + Pacman є. Бере аргументи з командного рядка. Дякуємо @manatwork за збереження ще кількох байтів!

var a:array[1..4]of string=('Blinky','Inky','Pinky','Clyde');i,s:Byte;begin for i:=1to ParamCount do s:=1<<Pos(ParamStr(i)[4],'nykd-')or s;for i:=1to 4do if(1<<i and s=0)or(s>31)then WriteLn(a[i])end.

Безголівки:

var
  a: array[1..4] of string = ('Blinky', 'Inky', 'Pinky', 'Clyde');
  i, s: byte;
begin
  for i:=1 to ParamCount do
    s := 1 << pos(ParamStr(i)[4], 'nykd-') or s; // fill bits by shifting, check for unique 4th char of names, '-' in 'pac-man', could also use the 3rd char
  for i:=1 to 4 do
    if (1 << i and s=0) or (s>31) then    // check if bits are on
      writeln(a[i]);
end.

Стара версія з використанням набору, 227 209 байт

Дві петлі, використовуючи набір, щоб знайти, які привиди + Pacman є. Бере аргументи з командного рядка.

var a:array[1..4]of string=('Blinky','Inky','Pinky','Clyde');i:byte;s:set of 1..5;begin for i:=1to ParamCount do s:=s+[pos(ParamStr(i)[4],'nykd-')];for i:=1to 4do if not(i in s)or(5in s)then writeln(a[i]);end.

Безголівки:

var
  a: array[1..4] of string = ('Blinky', 'Inky', 'Pinky', 'Clyde');
  i: byte;
  s: set of 1..5;
begin
  for i:=1 to ParamCount do
    s := s + [pos(ParamStr(i)[4], 'nykd-')]; // fill set with indxs
  for i:=1 to 4 do
    if not(i in s) or (5 in s) then    // check indx not in set or pac-man is
      writeln(a[i]);
end.

Приємно. Деякі способи її скорочення: integerbyte; видаліть декларацію gта використайте її значення безпосередньо, ParamCount5(наскільки я розумію завдання, у будь-якому разі не буде жодних дублюваних чи недійсних елементів введення). Принаймні, у FreePascal числові літерали можуть торкатися ключових слів, як-от i:=1to 5doабо 5in s. Подивіться, чи підтримує це і ви.
манатура

Я думаю, що використання бітів замість того, setбуло б корисно: pastebin.com/r2nB5wY3
manatwork

@manatwork Вау, кожен раз, коли я дізнаюся щось нове .. Я використовую ваші пропозиції, за винятком випадків ParamCount, тому що поведінка не визначена для чисел, більших за фактичні параметри введення (принаймні, нічого в цьому немає в документах), хоча це працює.
hdrz

1

Програма PHP, 84 байти

<?print_r(array_diff([Blinky,Inky,Pinky,Clyde],in_array('Pac-Man',$argv)?[]:$argv));
  • бере аргументи з командного рядка, друкує результат у вигляді масиву.
  • ім'я файлу не повинно бути жодним із привидів або "Pac-Man"!
  • коротка розбивка: видаліть (якщо 'Pac-Man' в аргументах: нічого, інакше всі аргументи) від усіх привидів; друкувати результат рекурсивно

приклади:

>php -d error_reporting=0 ghosts.php Clyde
Array
(
    [0] => Blinky
    [1] => Inky
    [2] => Pinky
)
>php -d error_reporting=0 ghosts.php Clyde Blinky
Array
(
    [0] => Inky
    [1] => Pinky
)
>php -d error_reporting=0 ghosts.php Pac-Man Clyde
Array
(
    [0] => Blinky
    [1] => Inky
    [2] => Pinky
    [3] => Clyde
)

Функція PHP, 90 байт

function p($a){return array_diff([Blinky,Inky,Pinky,Clyde],in_array('Pac-Man',$a)?[]:$a);}

бере і повертає масив, використовуйте порожній масив для порожнього введення, жодного іншого фальшивого значення!

подальші думки

  • замінити in_array(...)з , strstr(join($argv),'-')щоб виявити -замість Pac-Man(-2)
  • використовувати ereg('-',join($argv))замість цього (ще -2)
  • програма може втратити ще 6 байт у PHP <5,4 з register_globalsвключеним
  • щоб програма надрукувала список, розділений комами: замініть <?print_r(на <?=join(',',(+2). Ви можете додати ;echo""до дзвінка про перерву лінії

1

jq, 69 символів

("Blinky Inky Pinky Clyde"/" ")as $a|if inside($a)then$a-. else$a end

Вхід - JSON, вихід - JSON, умовний синтаксис - біль.

Проба зразка:

bash-4.3$ jq '("Blinky Inky Pinky Clyde"/" ")as $a|if inside($a)then$a-. else$a end' <<< '["Clyde"]'
[
  "Blinky",
  "Inky",
  "Pinky"
]

bash-4.3$ jq '("Blinky Inky Pinky Clyde"/" ")as $a|if inside($a)then$a-. else$a end' <<< '["Pac-Man","Clyde"]'
[
  "Blinky",
  "Inky",
  "Pinky",
  "Clyde"
]

On-line тест:


1

TSQL (sqlserver 2016), 114 байт

Гольф:

DECLARE @ VARCHAR(99) = 'Blinky,Inky,Pinky,Clyde'

SELECT*FROM STRING_SPLIT('Blinky,Inky,Pinky,Clyde',',')EXCEPT SELECT*FROM STRING_SPLIT(@,','WHERE @ NOT LIKE'%-%'

Безголівки:

DECLARE @ VARCHAR(99) = 'Blinky,Inky,Pinky,Clyde'

SELECT * FROM STRING_SPLIT('Blinky,Inky,Pinky,Clyde',',')
EXCEPT
SELECT * FROM STRING_SPLIT(@,',')
WHERE @ NOT LIKE'%-%'

Скрипка


1

Мова Lotus Notes @Formula, 85 84 75 74 символів

-1 символу, перевернувши завдання @If

-9 Змінено @Contains (i; "-") на @Like (i; "% -%") і видалено @Trim (не потрібно, якщо відображається з використанням пробілу як сеператор)

-1, видаливши новий рядок

Створіть форму з двох полів: i (Текст, Редагована, Багатозначна) та o (Текст, Обчислені, Багатозначні). Введіть таку формулу в o:

l:="Inky":"Pinky":"Blinky":"Clyde";@If(@Like(i;"%-%");l;@Replace(l;i;""))

Від клієнта Notes створіть новий документ за допомогою форми, введіть ім'я (и) у поле i та натисніть F9, щоб оновити документ. Відповідь відображається в полі o.

Це використовує той факт, що @Like та @Replace можна використовувати як на рядку, так і в списку рядків.


1

C # 135 байт 126 байт

string[] g{"Blinky","Inky","Pinky","Clyde"};Console.WriteLine(String.Join(",",i.Contains("Pac-Man")?g:g.Except(i).ToArray()));

(де i - рядок, що містить вхід)

Переглянувши інші приклади, я бачу, що C # - це досить багатослівна мова :)


1
Ви можете отримати 126 байт, видаливши пробіли та новий рядок.
акроліт

1

Пайк, 45 39 38 37 32 байт

.d𖭺𐎪膎㧫l4dc].^D`\-R{!*

Спробуйте тут!

.d𖭺𐎪膎㧫l4dc - dictionary_lookup('blinky inky pinky clyde').title().split()
].^ - xor(^, input)
D`\-R{!* - ^*("-" not in input)

1

Пакетна, 141 байт

@set g= Blinky Inky Pinky Clyde
@for %%a in (%*)do @if %%a==Pac-Man goto l
@for %%a in (%*)do call set g=%%g: %%a=%%
@l
@echo(%g:~1,-1%

(Відніміть 6 байтів, :~1,-1якщо допустима пробільна та кінцева пробіли.) Потрібен Pac-Man у заголовку, але привиди нечутливі до регістру.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.