У нас не было приятных, простых задач за последнее время, так что мы здесь.
Учитывая список целых чисел, каждое из которых больше и индекс в качестве входных данных, выведите процентное содержание элемента по указанному индексу от общей суммы списка.
Вывод должен быть любым естественным представлением для числа с плавающей запятой / целых чисел на вашем языке (унарное, десятичное, церковные цифры и т. Д.) Если вы решите округлить вывод любым способом, он должен иметь как минимум 2 десятичных знака (когда это целесообразно. не нужно округлять, но также вполне приемлемо).
Индексы могут быть либо 1-индексированными, либо 0-индексированными и всегда будут находиться в пределах массива.
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
Примеры
Используя 1-индексированный и округленный до 2 дп
list, index => output
[1, 2, 3, 4, 5], 5 => 5 / 15 => 33.33
[7, 3, 19], 1 => 7 / 29 => 24.14
[1, 1, 1, 1, 1, 1, 1, 1, 1], 6 => 1 / 9 => 11.11
[20, 176, 194, 2017, 3], 1 => 20 / 2410 => 0.83
[712], 1 => 712 / 712 => 100
Или как три списка:
[[1, 2, 3, 4, 5], [7, 3, 19], [1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 176, 194, 2017, 3], [712]]
[5, 1, 6, 1, 1]
[33.33, 24.14, 11.11, 0.83, 100]
Ответы:
APL (Dyalog Unicode) , 9 байтов SBCS
Анонимная функция молчаливого инфикса. Принимает индекс в качестве левого аргумента и список в качестве правого аргумента.
Попробуйте онлайн!
100
сто×
раз⌷
индексированный элемент÷
деленное на1⊥
сумма (лит. оценка базы-1)⊢
правильный аргументисточник
C # (интерактивный компилятор Visual C #) , 22 байта
Попробуйте онлайн!
источник
Python 3 , 26 байт
Безымянная функция, принимающая целое число (индекс с 0 индексами) и список, который возвращает процент.
Попробуйте онлайн!
источник
Желе , 7 байт
Двоичная ссылка, принимающая целое число, индекс на основе одного слева и список чисел справа, который дает процент.
Попробуйте онлайн!
Как?
источник
05AB1E , 6 байтов
Полная программа, берущая индекс, затем список. Использует 0-индексацию.
Попробуйте онлайн!
Как?
источник
R 28 байт
Попробуйте онлайн!
источник
l
индексаn
, а не просто делить наn
(см.[7, 3, 19], 1
Тестовый пример )l[]
во всемn
)C (gcc) , 64 байта
0 индексированные. Единственным забавным моментом было осознание того, что
1e2
это -double
сохранение байта100.
!Попробуйте онлайн!
источник
Java (JDK) , 47 байт
Попробуйте онлайн!
источник
1e2
вместо100
? Это потому, что100
является целым числом и1e2
рассматривается как число с плавающей запятой?1e2
несет двойной тип, которыйa[i]
и сумма не имеют. Поскольку задача требует возврата чисел с плавающей запятой, я могу использовать это.(a,i)->1e2*a[i]/IntStream.of(a).sum()
. Изменить:> :( моя бедная лямбда-стрелка(a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()
длиной 54 байта. Мой текущий ответ - только 47 байтов. Кроме того,a->i->
на один байт короче(a,i)->
.Haskell ,
2018 байтовДиадический оператор (
?
) принимает индекс (0-indexed) слева и список справа, который возвращает процент.Попробуйте онлайн!
источник
J , 10 байт
Попробуйте онлайн!
0 индексированные
источник
Wolfram Language (Mathematica) , 15 байтов
Попробуйте онлайн!
Введите как
list, index
источник
##[[]]
является удивительным!JavaScript (ES6), 30 байт
Принимает ввод как
(array)(index)
, где индекс равен 0.Попробуйте онлайн!
источник
MATL , 9 байт
Попробуйте онлайн!
объяснение
Попробуйте онлайн!
источник
PHP (7.4), 35 байт
Попробуйте онлайн!
Входной индекс основан на 0.
источник
К (ок) ,
1514 байт-1 байт благодаря ngn!
Попробуйте онлайн!
0 индексированные
источник
(x@y)
->x[y]
Красный ,
3129 байт-2 байта благодаря ErikF
Попробуйте онлайн!
источник
1e2
вместо100.0
: Попробуйте онлайн! , Довольно неплохо, сколько языков может использовать этот трюк!PowerShell , 34 байта
Попробуйте онлайн!
Параметры позора так чертовски дороги в Powershell.
источник
Скретч 3.0
2423 блока /239228 байтВ качестве альтернативы в синтаксисе SB
Сохранено 11 байт благодаря @JoKing
Попробуй это с нуля
История ответов
В качестве альтернативы в синтаксисе SB
Попробуй это с нуля
Ввод в виде:
Я действительно должен прекратить делать это с собой. Но это очень весело!
источник
repeat length of m
чтобыlength of m-1
и сохранить себяdelete n
?delete n of m
что я предложил, то это будетPyth , 13 байт
Попробуйте онлайн!
В первый раз использую Pyth, так что здесь, вероятно, есть довольно большие оптимизации, но я не знаю, где они ...
0-индекс, принимает входные данные как
list, index
источник
Perl 5
-ap -MList::Util=Sum
, 19 байтПопробуйте онлайн!
Возьмите список, разделенный пробелом в первой строке, индекс (на основе 0) во второй.
источник
Japt , 8 байт
Попытайся
источник
TI-Basic , 12 байтов (12 токенов)
1-индексированных
Принимает список
Ans
и запрашивает у пользователя индексПример запуска
Объяснение:
источник
Сетчатка 0.8.2 , 102 байта
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Принимает вход как
index;list,...
. Объяснение:Преобразовать в одинарный.
Индекс в список.
Подведите список.
Умножьте желаемое значение на 10000 и разделите на сумму с округлением, прибавив сначала половину суммы.
Убедитесь, что результат содержит не менее трех цифр.
Вставьте десятичную точку во второй последней позиции.
источник
Рубин ,
252321 байтПопробуйте онлайн!
источник
Perl 6 , 21 байт
Попробуйте онлайн!
Простое решение, так как я не могу использовать параметры карри с
$b
индексированным параметром. Забавное решение, которое не должно обрабатывать два параметра, используяrotate
вместо этого функцию:Попробуйте онлайн!
Но это, к сожалению, на два байта длиннее
источник
Октава , 21 байт
Попробуйте онлайн!
источник
MathGolf ,
76 байтИндексирование на основе 0.
Попробуйте онлайн.
Объяснение:
источник
Icon , 53 байта
Попробуйте онлайн!
Единственная интересная вещь здесь - это найти сумму. Иконка была одним из первых языков, чтобы иметь генераторы.
!
генерирует все значения спискаL
, которые накапливаются вs
. Обычно нам нужно писатьevery s+:=!L
, но я использовал возврат с помощью&\z
, который проверяет, является ли несуществующаяz
переменнаяnon-null
, которой нет, и извлекает следующее значение из списка до исчерпания.источник
Фактор , 46 байтов
Попробуйте онлайн!
0 индексированные
источник
Пакет, 111 байт
Принимает ввод как индекс и список как аргументы командной строки. Примечание: работает только для значений индекса от
1
до9
из - за ограничения Batch; может быть написана версия с 0 индексами, которая сможет индексировать первые 10 элементов. Объяснение:Сдвиньте указатель к
%0
и список к%1
...%9
(или меньше). Обратите внимание, что партияshift
не влияет%*
.Получить все параметры, разделенные пробелом.
Измените пробелы на
+
s и сделайте арифметическую оценку, взяв сумму, но вычтите индекс. Затем внесите в список индекс, умножьте на 10000, добавьте половину суммы и разделите на сумму. Наконец, выполните divmod на 10 дважды, чтобы получить десятичные разряды. (%
Арифметический оператор имеет особое значение в пакетном режиме и обычно должен быть удвоен, ноcall
тогда требуется дальнейшее удвоение.)Выведите результат и десятичные разряды.
источник