Поскольку приближаются первые выходные октября, давайте проведем собственный Октоберфест!
Задний план
Вы и некоторые другие программисты были наняты местными парнями из колбасы в Мюнхене, Германия. Колбасные ребята обеспечивают Октоберфест всеми колбасами, в которых нуждается гигантский Фольксфест. Вам удается услышать, как ваш начальник разговаривает с другими сотрудниками о том, почему вы и другие были наняты без какого-либо предыдущего опыта, связанного с колбасой. Вы понимаете, что были наняты для ваших безупречных навыков программирования - и ваш босс, очевидно, хочет, чтобы вы кодировали анализатор колбасы.
В этом году ребята из колбасы решили увеличить ассортимент колбас на Октоберфесте - но они понятия не имеют, сколько они импортировали.
Вызов
Вы должны помочь своему боссу выяснить, сколько колбас определенного вида они действительно импортировали. Вам нужно будет запрограммировать анализатор колбас, который выводит вид и количество каждой колбасы, которую парни импортировали. Ваш босс купил для этого случая специальный дисковод, который, при наличии колбасы, доставляет его по трубопроводу stdin
.
вход
Количество колбасок stdin
, каждая колбаса разделена одним пробелом. Колбасы выдаются в следующем формате:
Принскорв (П)
¤
| |
| |
| |
¤
Салчичон (С)
l
| |
| |
| |
| |
l
Landjäger (L)
\ /
| |
| |
| |
| |
/ \
Кабанос (К)
.
|
|
|
|
|
.
Котечино Модена (C)
___
| |
| |
| |
|___|
Rød pølse (R)
^
| |
| |
| |
| |
v
Выход
Появления данной колбасы вместе с идентификатором того, какая колбаса это, отделены пробелом. Идентификатор - это первая буква в названии колбасы. Порядок не важен.
Выходные данные должны быть записаны stdout
, допускаются завершающие переводы строки и пробелы.
Примеры
вход
^ ^ ^ ^ .
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
v v v v |
.
Выход
4R 1K
вход
\ / ___ l ¤ ¤
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | |___| | | ¤ ¤
/ \ l
Выход
1L 1C 1S 2P
вход
l ¤ l
| | | | | |
| | | | | |
| | | | | |
| | ¤ | |
l l
Выход
2S 1P
Программисту с самой короткой программой в байтах платят парни из колбасы (выигрывает)!
Колбаса мелочи
Prinskorv
Prinskorv, что непосредственно переводится как «принц-колбаса», представляет собой небольшую шведскую колбасу, которая часто продается в виде ссылок. Обычно жарят на сковороде и подают с щедрой порцией горчицы.
Salchichón
Salchichón - это испанская летняя колбаса, которую часто готовят из свинины, хотя в некоторых рецептах используется другое мясо, включая быка, телятину или лошадь. Мясо и жир нарезать тонкими кусочками, приправить солью, перцем, мускатным орехом, орегано и чесноком, а затем вставить в толстый натуральный свиной кишечник.
Landjäger
Landjäger - полусухая колбаса, традиционно производимая в Южной Германии, Австрии, Швейцарии и Эльзасе. Он популярен в качестве закуски во время таких мероприятий, как походы. Он также имеет свою историю как солдатская еда, потому что он хранится без охлаждения и состоит из порций одного приема пищи.
Кабанос
Кабанос - это польская длинная тонкая сухая колбаса из свинины или кошерной индейки. Они имеют дымный вкус и могут быть мягкими или очень сухими по текстуре в зависимости от свежести. Кабаносы часто приправляют только перцем. В отличие от других видов мяса, эти колбасы, как правило, едят в одиночку в качестве закуски и, за исключением кошерных блюд, часто подают с сыром.
Cotechino Modena
Cotechino Modena или Cotechino di Modena - это свежая колбаса, приготовленная из свинины, жира и кожуры свинины, родом из Модены, Италия, где она имеет статус ЗГУ. Котечино часто подают с чечевицей или бобами каннеллини с соусом вместе с картофельным пюре, особенно в новогодние праздники.
Rød Pølse
Rød pølse (красная колбаса) - разновидность ярко-красной, вареной свиной колбасы, очень распространенная в Дании. Поскольку стойки для хот-догов широко распространены в Дании, некоторые люди считают роде пёльзера одним из национальных блюд.
Вся колбасная информация беззастенчиво скопирована из Википедии
Ответы:
Pyth, 30 байт
Попробуйте онлайн: демонстрация или тестовый набор
Объяснение:
Как и все остальные участники, я смотрю только на первую строку ввода. Допустим, первая строка ввода
\ / ___ l ¤ ¤ ____
.Сначала я делю пробелы, что дает мне список
Теперь мы хотим покататься на
'/'
s и''
s и отсортировать оставшуюся вещь.Теперь я могу запустить кодирование длины.
Как выясняется, порядок (ascii-значение) этих символов или строки
'___'
может быть красиво сопоставлен с числами[0, 1, 2, 3, 4, 5]
.И это может быть использовано для сопоставления их непосредственно с буквами
SKLCRP
.источник
Pyth,
36343230 байтСохраненный еще другие 2 байта благодаря ... Угадай , кто? : D
Игнорирует все входные данные, за исключением первой строки, удаляет все
/
s и пробелы, переводит их в целевые идентификаторы, сортирует их, использует кодировку длины строки и печатает результат.Живая демоверсия.
32-байтовая версия
Живая демоверсия.
Сохранено еще 2 байта благодаря @Jakube!
34-байтовая версия
Живая демоверсия.
Сохранено 2 байта благодаря @Jakube!
36-байтовая версия
Живая демоверсия.
источник
hM-czd\\
так же , как-hMfTczd\\
¤
два байта.Javascript (ES6), 105
Это довольно просто, но в любом случае вот объяснение:
источник
a=>(h=-1,[for(g of'¤l/._^')if(f=(a.split(g).length-1)/'222261'[++h])f+'PSLKCR'[h]].join` `)
Если бы я только мог упростить объявлениеh
...CJam,
383533 байтаПроверьте это здесь.
объяснение
Первая строка каждого типа колбас уникальна, и, поскольку колбасы выровнены сверху, достаточно подсчитать соответствующие символы в этой первой строке. Два типа требуют особого отношения:
\
и/
. Мы хотим избавиться от одного из них, затем мы можем считать другого, как все остальные персонажи.C
сразу.Теперь для фактического кода:
источник
Mathematica 116
Некоторые байты, вероятно, могут сбриться, но ничего не подойдет для языков игры в гольф.
ImportString[#,"Table"][[1]]
возвращает список разделенных пробелами строк, появляющихся в верхней строке ввода. Строка может включать любой из элементов в списке{"¤","l","/","___",".","^"}
, включая повторы. Каждый элемент связан с уникальным типом колбасы.Tally
считает количество раз, когда каждая такая строка появляется./.{"¤"->"P","l"->"S",...
заменяет¤
наP
,l
сS
и так далее.Reverse
помещает каждый счет перед элементом, с которым он связан.Два
Row
s форматируют вывод.источник
МАТЛАБ, 113
Предполагая, что завершающие пробелы разрешены(да, они есть), вот анонимная функция MATLAB:И объяснение:
Похоже, работает правильно. По-прежнему имеет место в конце, но теперь обрабатывает все колбасы правильно.
источник
Perl,
8477 байтКто-то может, вероятно, немного побриться от этого ...
84 байта
77 байт
Сломать:
Возьмите первую строку STDIN, транслитерируйте значения в буквенные коды, удалите лишний мусор.
d
Модификатор не должен быть действительно необходимо, но я столкнулся странные вопросы , юникодных на¤
характер без него.Используйте символьную ссылку для создания и / или увеличения переменной для каждого найденного символа.
Разделите переменную C на 3 из-за тройного подчеркивания
Прокручивайте алфавит и печатайте однобуквенные заглавные переменные вместе с буквой, если они имеют значение больше нуля
Результат теста: http://ideone.com/alpUlI
Редактировать : Прервать 7 байтов, передав транслитерацию анонимно возвращаемое значение непосредственно в
split
.источник
Perl, 172 байта
Можно сказать, еще больше можно нарезать эту колбасу, но вот стартер на десять.
Неуправляемая версия
Результаты теста
источник
Python 3, 120 байт
Я почти уверен, что вы можете сократить это, но еще не было решения Python, так что здесь мы идем:
объяснение
Это довольно просто, некоторые могут даже сказать удобочитаемым, но в любом случае вот краткое объяснение:
Первая строка ввода читается, так как каждая колбаса может быть определена только из первой строки.
Теперь
a={z:x.count(y)for y,z in zip('¤l/.^_','PSLKRC')}
есть словарь, который отображает идентификатор каждого типа колбасы (z
) на счетчик каждого типа колбасы (x.count(y)
гдеy
символ, определяющий колбасу).Затем мы делим количество сосисок Cotechino Modena (C) на 3 из-за тройного подчеркивания.
Наконец , мы распечатать результат:
print(' '.join(str(a[x])+x for x in a if a[x]))
. Это создает количество выходных данных для каждой колбасы по одному, но только если эта колбаса была замечена хотя бы один раз (a[x]
не ноль => Истина). Каждая строка подсчета соединяется пробелом и распечатывается.источник