Копилки представляет собой контейнер , используемый для сбора монет Для этой задачи использовать четыре американских монет:. Четверть, десять центов, никель и пенни .
Вызов
Ваша задача - создать электронную копилку. Напишите программу (или функцию), которая при запуске (или вызове) выводит (или возвращает) количество каждой вашей монеты, а также общее количество монет.
вход
Строка, массив и т.д ... (на ваш выбор) монет в вашу копилку (без учета регистра).
Q - Quarter(Value of 25)
D - Dime(Value of 10)
N - Nickel(Value of 5)
P - Penny(Value of 1)
Выход
Количество монет на входе и общая сумма, разделенные нецелым разделителем по вашему выбору. (Порядок, в котором вы выводите итоговые суммы монет, не имеет значения, но итоговый элемент монеты (сумма) должен быть последним элементом)
Примеры
Input -> Output
P -> 1,0,0,0,1 or 0,0,0,1,1 or 0,0,1,0,1 or 1,1
N -> 0,1,0,0,5
D -> 0,0,1,0,10
Q -> 0,0,0,1,25
QQQQ -> 0,0,0,4,100
QNDPQNDPQNDP -> 3,3,3,3,123
PPPPPPPPPP -> 10,0,0,0,10
PNNDNNQPDNPQND -> 3,6,3,2,113
правила
Стандартные лазейки не допускаются.
Это код-гольф , поэтому выигрывает самый короткий код в байтах для каждого языка!
Ответы:
Python 2 , 73 байта
-3 байта благодаря @Rod
Попробуйте онлайн!
источник
a*b for a,b in zip(C,[25,10,5,1])
на,map(int.__mul__,C,[25,10,5,1])
чтобы сохранить несколько байтовPython 2 , 63 байта
Попробуйте онлайн!
Python 2 , 63 байта
Попробуйте онлайн!
источник
APL (Dyalog Unicode) ,
2827 байтовПопробуйте онлайн!
Молчаливая функция. Принимает ввод как вектор в формате
,'<input>'
.Спасибо ngn за один байт!
Как?
источник
1⊥∘.=∘'PNDQ'
->'PNDQ'+.=¨⊂
R ,
7069 байтПопробуйте онлайн!
Принимает ввод как вектор отдельных символов. Преобразует их в
factors
иtabulate
s их, затем вычисляет значения с точечным произведением.Для удобства тестирования я добавил способ преобразования приведенных выше тестовых примеров во входные данные, ожидаемые функцией.
Это практически исключает сохранение имен монет в качестве вектора
names
, что означает, что подход, приведенный ниже, скорее всего, будет более удачным, если у нас будет больше типов монет:R ,
7170 байтПопробуйте онлайн!
источник
Желе , 19 байт
Попробуйте онлайн!
Как это работает
источник
JavaScript (ES6),
6361 байтСохранено 2 байта благодаря Shaggy
Принимает ввод как массив символов. Выходы
P,N,D,Q,total
.Вдохновленный ответом Python от ovs .
Попробуйте онлайн!
Оригинальный ответ, 73 байта
Принимает ввод как массив символов. Выходы
Q,D,N,P,total
.Попробуйте онлайн!
источник
MATL ,
2220 байтПопробуйте онлайн! Или проверьте все тестовые случаи .
Пояснение с примером
Рассмотрим ввод
'PNNDNNQPDNPQND'
в качестве примера. Содержимое стека отображается вверх ногами, то есть верхний элемент отображается ниже.источник
!'PNDQ'=Xst[l5X25]!Y*
составляет 21 байт. хотя я признаю, что я не проверял это.Japt ,
2522 байтаСохранено 3 байта благодаря @Shaggy
Проверьте это онлайн! Принимает ввод в нижнем регистре
объяснение
источник
Excel (версия на польском языке), 150 байт
Вход в А1. Формулы в клетках
B1
-F1
:что приводит к выходу из числа четвертей, пятаков, никелевые, Pennys и суммы в клетках
B1
,C1
,D1
,E1
иF1
соответственно.Английская версия (162 байта):
источник
APL + WIN,
3327 байт5 байтов сохранено благодаря Адаму
Запрашивает ввод на экран строки монеты.
источник
n,+/1 5 10 25×n←+⌿⎕∘.='PNDQ'
05AB1E ,
3026222119 байтовПопробуйте онлайн!
Dump:
Печатная продукция:
Поскольку что-то было напечатано, конечный стек игнорируется.
источник
J , 29 байт
Попробуйте онлайн!
Объяснение:
'PNDQ'=/]
создает таблицу равенства1#.
находит сумму каждой строки таблицы, таким образом, количество вхождений каждого значения1#.*
находит скалярное произведение своего левого и правого аргумента],
добавляет точечное произведение в список значенийисточник
C # (.NET Core) ,
163136 байтСпасибо @raznagul за сохранение большого количества байтов!
Попробуйте онлайн!
Старая версия:
Попробуйте онлайн!
источник
n.Count
вместоn.Length
. Поскольку это было отброшено полностью, вы можете использоватьstring
сейчас.Perl 5
-pF
, 59 байтПопробуйте онлайн!
источник
Рубин , 66 байт
Попробуйте онлайн!
Не хорошо.
источник
05AB1E , 19 байтов
Попробуйте онлайн!
объяснение
источник
Java (OpenJDK 8) , 148 байт
Попробуйте онлайн!
Ну, это всего на один байт короче, чем другие представления Java, но хей-короче короче: D
Объяснение:
источник
Gol> <> , 47 байт
Попробуйте онлайн!
Выходной формат
[P Q N D Value]
.Как это работает
источник
Perl 5
-p
, 47 байтПопробуйте онлайн!
источник
Pyth,
232726 байтСохраненный байт благодаря @RK. Выходы как [P, N, D, Q, значение].
Попробуй здесь
объяснение
источник
+Jm/Qd"PNDQ"s.b*NYJ[h05T25
C (лязг) , 112 байт
Попробуйте онлайн!
Выходной seq теперь имеет значения P, Q, D, N, общее значение.
Работает как со строчными, так и со строчными вводами.
Объяснение:
"AYJE"
или{64+1,64+25,64+10,64+5}
есть. 64 + значение-из-монеты.d=(c|c/2)&3
(используется как индекс) имеет значение1,2,3,0
дляq,d,n,p
входов соответственно, как в верхнем, так и в нижнем регистре.источник
C # (.NET Core) , 156 байт
источник
Java (OpenJDK 8) , 149 байт
Попробуйте онлайн!
источник
Сетчатка , 50 байт
Попробуйте онлайн! Выходы в порядке D, N, P, Q, всего. Объяснение:
Рассчитайте сумму, вставив
_
s, соответствующий стоимости каждой монеты.Вставьте дополнительную копию каждого символа, чтобы был хотя бы один из них для сопоставления.
Сортировка символов в порядке.
Подсчитайте количество каждого символа после первого.
источник
SmileBASIC, 70 байт
Пример:
Объяснение:
источник
C, 149 байтов
Попробуйте онлайн!
C не имеет ассоциативных массивов, поэтому я имитирую это (очень неэффективно, с точки зрения памяти!), А затем снова перебираю с помощью поискового массива, чтобы сложить монеты. Это не будет рассчитывать иностранную валюту, однако :-)
источник