Как вы, наверное, знаете, в последнее время всплывало множество прекрасных проблем с Джимми . В этих соревнованиях вам бросили вызов навыки акробатики нашего любимого друга. Теперь у нас есть другая задача для вас. Сегодня вы будете идентифицировать различные типы Jimmys!
объяснение
Есть три разновидности Джиммиса: карлик, акробат и бодибилдер.
This is dwarf Jimmy: o
This is acrobat Jimmy: /o\
This is bodybuilder Jimmy: /-o-\
Эти Джимми все хорошие друзья, и им нравится стоять на одной линии друг с другом. Ваша задача, учитывая сцену Джимми, вот так:
o /o\ o /-o-\/-o-\ o /o\
Выведите количество гномов, акробатов и культуристов на линии соответственно.
Соревнование
Возьмите ввод в любой разумной форме как сцену Джимми, как показано в примере выше.
Входная строка должна быть одной строкой и необязательно содержать три варианта Jimmys и необязательные пробелы.
Строка не обязательно будет содержать все разновидности Jimmy или пробелы.
Строка не будет содержать символы не в
o/\ -
.Возможна любая комбинация сортов Джимми. Это означает, что один и тот же или другой тип Джимми может быть рядом друг с другом. Вы должны учитывать это.
Начальные и конечные пробелы являются необязательными и ни в коем случае не требуются - ваша программа должна учитывать строку с или без начальных и / или конечных пробелов.
Строка должна содержать только допустимые Jimmys и пробелы. Например,
---///---
это не разрешено, потому что это недопустимая последовательность Jimmy.
Выведите три числа: количество гномов, акробатов и культуристов на сцене (в соответствующем порядке).
Это может быть вывод на консоль в виде разделенных пробелом целых чисел, или это может быть возвращаемое значение из функции в качестве некоторого типа контейнера (то есть типа массива).
Вывод в любом формате должен быть упорядочен, как указано в верхнем пуле над этим правилом.
Применяются стандартные правила и лазейки.
Контрольные примеры
/-o-\ /-o-\ o/o\ /-o-\ /-o-\ /-o-\
OUTPUT: 1 1 5
o o /o\ o o o /o\ /o\
OUTPUT: 5 3 0
/-o-\ /-o-\ /-o-\/-o-\ o /o\/o\ /-o-\o /-o-\ /o\/-o-\
OUTPUT: 2 3 7
/-o-\ o /-o-\ o/o\
OUTPUT: 2 1 2
Если вы хотите больше тестовых случаев, используйте этот инструмент, чтобы генерировать больше случайных тестовых случаев.
счет
Это код-гольф , поэтому выигрывает самая низкая оценка в байтах.
Вы можете просмотреть список лидеров этого поста, развернув виджет / фрагмент ниже. Чтобы ваше сообщение было включено в рейтинг, вам нужен заголовок ( # header text
) со следующей информацией:
Название языка (заканчивайте его запятой
,
или тире-
), а затем ...Количество байтов, как последнее число в заголовке.
Например, JavaScript (ES6), 72 bytes
допустимо, но Fortran, 143 bytes (8-bit)
недопустимо, потому что число байтов не является последним числом в заголовке (ваш ответ будет распознан как 8 байтов - не используйте это в своих интересах).
<!-- Run the snippet to see the leaderboard. Report any bugs to @xMikee1 on Github. --> <iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=188391" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
oo /o\ o o
был бы хорошoo
.Ответы:
Желе , (12?) 13 байтов
Монадическая ссылка, принимающая список символов, который выдает список целых чисел
[ dwarves, acrobats, and body-builders]
(сохранитеṚ
байт, если мы можем указать наш вывод)Попробуйте онлайн!
Как?
Все Джиммис показывают
o
; все не гномы показывают/
; все культуристы показывают два-
. Подсчитайте их, уменьшите вдвое количество-
и выполните вычитание, чтобы найти число Джимми:источник
Python 3.8 (предварительная версия) , 51 байт
Попробуйте онлайн!
источник
('o')
без коллаc
?s.count
к ,c
а затем возвращает его.Python 2 , 50 байт
Попробуйте онлайн!
-10 байт путем преобразования лямбда-выражения в полную программу благодаря @xnor (удаляет вложенную вещь с двойным лямбда и вместо нее использует присваивание)
источник
PowerShell ,
5955 байтПопробуйте онлайн!
раскатали:
источник
J ,
3625 байт-11 байт благодаря Коул!
Попробуйте онлайн!
Оригинальное решение
J , 36 байт
Попробуйте онлайн!
Объяснение:
Пример J сессии:
источник
Excel как CSV, 130 байт
Вставьте ввод в пробел перед первым
,
, сохраните как .csv, откройте в Excel. Выходы Гнома, акробаты и культуристы вB1
,B2
иB3
соответственно.Excel, 244 байта
источник
APL (Dyalog Unicode) , 20 байтов SBCS
Попробуйте онлайн!
источник
Котлин
131130129121117979688 байтПопробуйте онлайн!
Редактировать - Wew, получил его под 100! Я сомневаюсь, что могу уменьшить это больше, но только время покажет ...
Edit - говорил слишком рано, отбросил еще один байт, используя список вместо строки
Редактировать - минус 8 байт благодаря AsoLeo, предлагающему использовать функцию расширения
источник
fun String.j(b:Int=count{'-'==it}/2,a:Int=count{'/'==it})=listOf(count{'o'==it}-a,a-b,b)
88 байт.Сетчатка ,
3935 байтИзменить: -4 байта благодаря @FryAmTheEggMan
Попробуйте онлайн!
Объяснение:
Простой этап замены. Он находит все совпадения регулярного выражения
^((o)|(/o.)|(/-o-.)| )*
(что должно привести к одному совпадению - целой строке) и заменяет его числом захватов групп 2, 3 и 4. Вот это регулярное выражение с разбивкой:Мы должны начинать с
^
или конец ввода также считается совпадением. В синтаксисе замещения Retina$n
ссылается на n-ую группу захвата, а модификатор#
подсчитывает, сколько совпадений было сделано.источник
JavaScript, 55 байт
Поиск строки с использованием сопоставления с регулярным выражением
o
,o-
илиo-\
; увеличивает соответствующий счетчик в массиве, используя длину каждого совпадения для определения индекса.Попробуйте онлайн!
источник
Clojure , 78 байт
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 63 байта
Попробуйте онлайн!
55 байт, если отброшено бессмысленное требование заказа ...
источник
Python 3 ,
69666056 байт-4 байта благодаря @Maarten Fabré
Попробуйте онлайн!
источник
g=input().count
сразуR , 63 байта
Использует регулярное соответствие, чтобы найти и сосчитать Джиммиса.
Попробуйте онлайн!
источник
K (ок) , 25 байт
Попробуйте онлайн!
источник
Perl 5
-p
, 41 байтПопробуйте онлайн!
Подсчитывает, сколько раз
o
появляется без сопровождения\
или-
для поиска гномов и удаляет их из строки. Затем подсчитывает, сколько раз/o
появляется поиск акробатов и удаляет их из строки. Затем подсчитывает количествоo
оставшихся, чтобы определить культуристов. Вставляет пробелы между числами и неявно выводит результат.источник
1*
undef
) вместо0
.Рубин , 50 байтов
Попробуйте онлайн!
источник
SNOBOL4 (CSNOBOL4) , 135 байт
Попробуйте онлайн!
Удаляет
-o
,/o
иo
из строки и увеличивает каждый раз соответствующие счетчики. Листья за много рук и ног (/-\
,\
и ничего).источник
Forth (gforth) , 118 байтов
Попробуйте онлайн!
объяснение
/
,-
иo
символы-
символов, разделенное на 2/
символов минус количество строителейo
персонажей за вычетом количества акробатов и бодибилдеровКод Объяснение
источник
05AB1E , 13 байтов
Это может быть 12 байтов путем удаления,
R
если[bodybuilder, acrobat, dwarf]
бы был разрешен порядок вывода .Попробуйте онлайн или проверьте все контрольные примеры .
Незначительная равноправная альтернатива:
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
C (gcc) ,
999896 байт-1 байт благодаря возрастанию
Попробуйте онлайн!
источник