Для тех, кто не знал, Сигма - это греческая буква, которая широко используется в математике как знак суммирования. Учитывая строку, представляющую выражение, зависящее от которое мы будем обозначать , вычисляем сумму результатов для для каждого . Вкратце, вы должны найти такой, что:
Пример выражения:
Спекуляции
- Вам гарантировано:
- что выражение допустимо, поэтому оно не содержит ошибок и зависит от выбранного синтаксиса (например, если вы поддерживаете
2*k
, не будет2k
) - иметь только определенные значения среди ваших результатов, поэтому никакие значения, такие как
1/0
,inf
илиnan
не появятся
- что выражение допустимо, поэтому оно не содержит ошибок и зависит от выбранного синтаксиса (например, если вы поддерживаете
- Вы можете предположить, что приведенное выше выражение соответствует ограничениям языка программирования по вашему выбору, поэтому оно не приведет к переполнению или другим ошибкам, связанным с ограничением.
- Любой другой непробельный символ ASCII вместо
k
может быть выбран - Ваша программа должна поддерживать следующие операции:
- сложение (
+
,plus()
,add()
,sum()
) - вычитание (
-
,minus()
,subtract()
) - экспоненцирование (
**
,^
,pow()
или другие, должны быть определены), с поддержкой отрицательных оснований и показателей - квадратный корень в виде
sqrt(k)
,k^0.5
,k**0.5
, или как еще вы хотите - умножение и деление
- сложение (
- Представление может быть либо полной программой, либо функцией, с упоминанием ее использования.
- Любые конечные / ведущие пробелы допускаются при выводе
- Минимальная точность: 2 знака после запятой
Тестовые случаи (с k
)
+---------------+--------------+
| Input = E(k) | Output |
|---------------+--------------|
|2*k | 30 |
|---------------+--------------|
|sqrt(k) | 8.38 | (* with minimum decimal precision)
|---------------+--------------|
|k+k/2+k**2 | 77.5 |
|---------------+--------------|
|k**2 | 55 |
+---------------+--------------+
Счет будет количеством байтов (флагов источника + компилятора). Побеждает валидная подача с наименьшей оценкой, принимая во внимание, что эти лазейки строго запрещены. Вот псевдокод Python, чтобы прояснить ситуацию.
code-golf
math
number
arithmetic
Мистер Xcoder
источник
источник
plus()
вместо+
? (Те же вопросы ко всем остальным операторам тоже)plus()
,add()
,sum()
и эквиваленты допускаются. Смотрите редактирование.N N2/+N2**+
.E(x)
указали «формат» @ComradeSparklePonyОтветы:
Желе , 5 байт
Попробуйте онлайн!
Введите действительную монадическую цепочку Jelly (я добавил их в свою ссылку).
Как это устроено
источник
Mathematica,
171413 байтСпасибо Яну Миллеру за сохранение 3 байта.
Спасибо LegionMammal978 за сохранение 1 байта.
Входные данные должны быть фактическим выражением, содержащим
k
, например:источник
1,
в этом дляSum
.N@#~Sum~{k,5}&
Python 3 ,
4037 байт3 байта благодаря Арно.
Eval scope tricks \ o /
Попробуйте онлайн!
Использует
k**0.5
вместоsqrt(k)
.источник
JavaScript (ES7),
3130 байтИспользует
k**0.5
дляsqrt(k)
.Попробуйте онлайн!
источник
05AB1E ,
876 байтПопробуйте онлайн!
Ввод в постфиксной записи и использует переменную N . 05AB1E - это стековый язык, поэтому работает только постфиксная нотация.
Формат
E(N)
: запишите число, с которым вы хотите выполнить операцию, а затем напишите знак операции. Например,3+4
будет3 4+
,3*4+2*3
будет3 4* 2 3* +
. Также обратите внимание, что это используетt
вместоsqrt
, иm
вместо**
, такsqrt(N)
будетNt
.Объяснение:
источник
Октава ,
50463129 байтПопробуйте онлайн!
Экспонирование обозначается кареткой,
.^
а умножение -.*
.Это объявляет анонимную функцию, которая принимает в качестве аргумента
d
. Он устанавливаетсяk
равным диапазону,1:5
суммирует оцененное значениеd
и возвращает его.источник
Japt , 10 байт
Входная строка должна иметь переменную в верхнем регистре
K
.sqrt(K)
должен быть введен какK**0.5
.Попробуйте онлайн!
объяснение
eval
сфера не работала в мою пользу; пришлось пересмотреть счетную переменнуюX
как глобальнуюK
.источник
Ox
прямая трансляцияeval(
...Октава,
2523 байтаПопробуйте онлайн!
Экспонирование обозначается как
.^
источник
APL (Дьялог) , 9 байт
Попробуйте онлайн!
Дополнение есть
+
, вычитание есть-
, умножение есть×
, деление есть÷
возведение в степень,*
а выполнение справа налево, поэтому используйте()
для группировки выражений.Вклад в терминах
k
.объяснение
А вот решение , которое принимает поезда в качестве входных данных (например , ответ Jelly)
+/(⍎⎕)¨⍳5
.источник
Common Lisp, 55 байт
Попробуйте онлайн
другая, более длинная (58 байт) версия - становится короче, если вы делаете суммирование от 1 до 7.
еще один и более длинный метод (
6564 байта) - не определяет функцию - просто вставляет ваше выражение в цикл. Должен стать короче для больших сумм.источник
Swift,
202184 байтаПо какой-то причине это будет работать только локально :(.
Вот объяснение того, что я делаю:
Благодаря @Mr. Xcoder для экономии 15 байт!
источник
TI-Basic, 12 байтов
Позвоните
"string":prgmNAME
, гдеstring
любое допустимое выражение TI-BasicK
.источник
Ans->u:sum(u(1,5
С накоплением , 16 байтов
Попробуйте онлайн!
5~>
это диапазон от 1 до 5 включительно.2/
делает func диадическим,"
парным и!
исполняемым. Таким образом, это сопоставляет диапазон[1, 5]
с входным значением, которое затем оценивается после определения элемента диапазонаk
. Затем результаты суммируются.источник
постоянный ток ,
3124 байтаВвод должен быть представлен в обратной польской записи (также известной как постфиксная запись) и заключен в квадратные скобки (
[]
) с:K
заменаk
в качестве параметра;+
представляя сложение;-
представляет вычитание и_
сопровождается любым числом, представляющим отрицательное число;*
представляя умножение;/
представляющий отдел;^
представление возведения в степень;v
представляющий квадратный корень.Например,
-2*k+k+3*k**2+k**0.5-k/2
будет введен как[_2K*K+K2^3*+Kv+K2/-]
. Это использует должное преимущество того факта, чтоK
этоdc
команда, которая возвращает текущую точность (изначально установлена в1
). Следовательно, к концу возвращается результат с точностью до6
.Попробуйте онлайн!
источник
R 35 байт
Попробуйте онлайн!
Ссылка TIO также включает функциональное решение (38 байт).
источник
Tcl , 58 байт
Попробуйте онлайн!
Если бы это работало только с целыми числами, я мог бы играть в гольф больше!
источник