Вы шеф-повар, и вы любите готовить со своими специями, но недавно вы привыкли организовывать свои специи, основываясь на том, как часто вы их используете. Но у вас нет времени, чтобы записывать, когда вы использовали свою специю в последний раз. Просто вы меняете местами специи и перемещаете их, и это, кажется, делает свое дело.
Но, конечно, вы повар, а это значит, что у вас есть несколько поваров с вами. Вы решаете рассказать им простые правила взаимодействия со своими специями.
Если вы недавно использовали специю, переместите ее вверх в стойку для специй
Если вы вообще не использовали никаких специй, например,
[]
пустой список движения, то список специй не затрагивается.Вы можете положить любую специю в мою подставку для специй, но если вы используете ее, обязательно переместите ее.
Список может содержать что угодно. Но потому что это специи, с которыми мы работаем. Желательно, чтобы вы использовали названия специй.
Специи должны быть уникальными. Слишком много одинаковых специй портят бульон ... или как говорится
Применяются нормальные правила игры в гольф.
Пример использования душицы снова и снова.
pepper pepper pepper pepper oregano
paprika paprika paprika oregano pepper
salt salt oregano paprika paprika
cumin oregano salt salt salt
oregano cumin cumin cumin cumin
задача
Введите список специй и список используемых специй, затем выведите окончательный список.
пример
вход
[pepper, paprika, salt, cumin, oregano], [oregano, cumin, cumin, salt, salt, salt]
Выход
[salt, pepper, paprika, cumin, oregano]
Как это выглядит
pepper pepper pepper pepper pepper pepper salt
paprika paprika paprika paprika paprika salt pepper
salt salt salt cumin salt paprika paprika
cumin oregano cumin salt cumin cumin cumin
oregano cumin oregano oregano oregano oregano oregano
вход
[pepper, paprika, salt, cumin, oregano], [salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, salt, oregano]
Выход
[salt, pepper, paprika, oregano, cumin]
Ответы:
Шелуха ,
1514 байтВходные данные - это списки строк (это также работает с другими видами списков). Попробуйте онлайн!
-1 байт благодаря H.PWiz
объяснение
Я должен повторять
x
бесконечно, так как иначе список потерял бы свой последний элемент, когда мы использовали самую верхнюю специю. Этого было бы достаточно, чтобы добавить конечный 1, но повторение занимает меньше байтов. Лучшим способом было бы вращать список, а не отбрасывать его первый элемент, но Husk не имеет встроенного для этого.источник
Σm
этоṁ
для одного байта.Haskell , 48 байтов
foldl(?)
является анонимной функцией, которая принимает два аргумента списка и возвращает список со всеми элементами одного и того же (Eq
-comparable) типа.Использовать как
foldl(?)["pepper", "paprika", "salt", "cumin", "oregano"]["oregano", "cumin", "cumin", "salt", "salt", "salt"]
.Попробуйте онлайн!
foldl(?) s m
начинается со списка (стойки для специй)s
и объединяет его с каждым элементом (специей)m
по порядку, используя оператор?
.s?n
использует специюn
из стойки для специйs
и возвращает получившуюся корзину для специй.s
имеет хотя бы два элемента,?
проверяет, равен ли второй элемент,n
и если да, переключает первые два элемента. Если не равен,?
сохраняет первый элемент фиксированным и рекурсивно для остальных.s
имеет не более одного элемента,?
возвращает его без изменений.источник
Chef ,
875843 байта-32 байта благодаря Джонатану Аллану , удалив,
the
где я не думаю, что это будет работать.У шеф-повара нет строковых типов, поэтому ингредиенты являются натуральными числами. 0 используется, чтобы отделить начальный список от использованных ингредиентов и завершить список использованных ингредиентов. См. Ссылку TIO для примера.
Объяснение псевдокода:
Попробуйте онлайн!
источник
Did you pour the contents of the mixing bowl into the baking dish before serving?
который звучит как комментарий к кулинарной SE, а не здесь: P lol (также очень странный вопрос для кулинарии, если вы спросите меня: P)JavaScript, 61 байт
Формат ввода:
Выход:
Показать фрагмент кода
источник
Python 2 ,
727169 байтНовый ответ, в духе моей первоначальной попытки.
Попробуйте онлайн!
Другое решение:
Python 2 , 69 байт
Попробуйте онлайн!
источник
print(r)
->print r
?Python 2 , 80 байт
Попробуйте онлайн!
источник
r[i-1:i+1]
.return
наprint
может сохранить другой байт .Java 8,
878676 байтПринимает два ввода как
ArrayList<String>
и изменяет первый список вместо того, чтобы возвращать новый для сохранения байтов.-10 байт благодаря @Nevay .
Объяснение:
Попробуй это здесь.
источник
a->b->b.forEach(x->{int i=a.indexOf(x);a.set(i,a.set(i>0?i-1:i,a.get(i)));});
05AB1E ,
2018 байтПопробуйте онлайн!
объяснение
источник
C #,
1251178179 байтовПопробуйте это на .NET Fiddle
забил на 36 байтов благодаря разнагул
источник
Array.IndexOf
. Но есть несколько способов сделать ответ короче: 1. Используйтеforeach
-loop вместоfor
-loop. 2. Еслиc
этоList<string>
вместоstring[]
вы можете напрямую использоватьc.IndexOf
. 3. Какc
изменено на месте, вам не нужно возвращать его.05AB1E , 16 байтов
Попробуйте онлайн!
источник
Mathematica, 52 байта
но это мой первый пост, поэтому, пожалуйста, будьте добры, если считать неправильно :)
И пример:
источник
CJam , 18 байт
Попробуйте онлайн!
источник