Я вижу твои бидмы и поднимаю тебе бадмис
Вызов
Учитывая набор чисел с операторами между ними: «5 + 4 * 9/3 - 8», возвращать все возможные результаты выражения для каждой перестановки порядка основных операций: [/, *, +, -].
правила
- Стандартные лазейки запрещены
- I / O
- Входные данные должны быть упорядочены с помощью инфиксных операций, но, тем не менее, это проще всего (строка или массив)
- Вы не обязаны поддерживать унарные операторы (например, "-3 * 8 / +2")
- Целые числа могут быть заменены числами с плавающей точкой для языков, которые неявно анализируют тип (например, 45 ⟶ 45.0)
- Выходными данными должны быть все возможные результаты выражения, без указания формата или порядка
- Все входы действительны (например, не нужно иметь дело с "7/3 + *"). Это также означает, что вам никогда не придется делить на ноль.
- Все операторы левоассоциативны, поэтому "20/4/2" = "(20/4) / 2"
- Это Code Golf, поэтому выигрывает наименьшее количество байтов
Тестовые случаи (с объяснением)
- "2 + 3 * 4" = [14, 20]
- 2 + (3 * 4) ⟶ 2 + (12) ⟶ 14
- (2 + 3) * 4 ⟶ (5) * 4 ⟶ 20
- «18/3 * 2 - 1» = [11, 2, 6]
- ((18/3) * 2) - 1 ⟶ ((6) * 2) - 1 ⟶ (12) - 1 ⟶ 11
- (18/3) * (2 - 1) ⟶ (6) * (1) ⟶ 6
- (18 / (3 * 2)) - 1 ⟶ (18 / (6)) - 1 ⟶ (3) - 1 ⟶ 2
- 18 / (3 * (2 - 1)) ⟶ 18 / (3 * (1)) ⟶ 6
- 18 / ((3 * 2) - 1) / 18/5 ⟶ 3,6
Тестовые случаи (без объяснения причин)
- "45/8 + 19/45 * 3" = [6,891666666666667, 18,141666666666666, 0,11111111111111113, 0,01234567901234568, 0,01234567901234568, 5,765740740740741]
- "2 + 6 * 7 * 2 + 6/4" = [112 196 23 87,5]
code-golf
permutations
Фредди Р
источник
источник
2 - 3 + 4
=>[-5, 3]
2*3-6+2-9/6*8+5/2-9
дает 24 различных результата.Ответы:
JavaScript (V8) ,
118112 байтПечатает результаты.
Попробуйте онлайн!
Или посмотрите дедуплицированные результаты .
источник
C # (интерактивный компилятор Visual C #) , 285 байт
Попробуйте онлайн!
источник
JavaScript (Node.js) , 132 байта
Попробуйте онлайн!
Это позволяет дублировать выходы.
JavaScript (Node.js) ,
165161155153152137 байтПопробуйте онлайн!
Принимает строку с пробелами между операторами и числами.
источник
[3, -5]
сейчас.Perl 6 ,
92 9088 байтПопробуйте онлайн!
Берет строку с пробелом после любых операторов и возвращает набор чисел. Это в основном работает путем замены всех экземпляров
n op n
с оцененным результатом для всех перестановок операторов.Объяснение:
источник
set
, так как условие устранения дубликатов было удалено. Хороший кодPython 3 , 108 байт
Попробуйте онлайн!
Функция принимает в качестве входных данных одну строку и возвращает список возможных результатов.
Ungolfed
Попробуйте онлайн!
источник
Желе , 30 байт
Попробуйте онлайн!
Пара ссылок. Вторая ссылка является главной ссылкой и принимает в качестве аргумента список чисел с плавающей точкой / целых чисел, перемежающихся с операторами в качестве символов. Это упрощенная версия того, как Jelly принимает свои данные при запуске в виде полной программы с аргументами командной строки. Возвращаемое значение ссылки представляет собой список из списков с одним членом, каждый из которых является возможным значением для выражения.
объяснение
Вспомогательная ссылка
Принимает список значений с плавающей запятой / целых чисел, чередующихся с операторами (в виде символов) в качестве левого аргумента и с оператором в качестве символа в качестве правого аргумента; возвращает список ввода после вычисления чисел, разделенных соответствующим оператором, работая слева направо.
Главная ссылка
Принимает список чисел с плавающей точкой / целых чисел, чередующихся с операторами (в виде символов)
источник
Python 2 ,
182172 байтаПопробуйте онлайн!
Принимает ввод с целочисленными значениями, отформатированными как числа с плавающей точкой, согласно «Целые числа могут быть заменены числами с плавающей точкой для языков, которые неявно анализируют тип».
источник
Юлия 1,2 , 88 (82) байта
Принимает ленту в виде вектора чисел и инфиксных функций, оценивает каждый отдельный вызов функции и рекурсивно передает каждую результирующую ленту обратно в себя, пока не останется только одно число. К несчастью,
get(t, (), ...)
в Julia 1.0 не работает должным образом, поэтому требуется более новая версия.Шесть байтов могут быть сохранены, если в качестве вывода приемлема куча вложенных массивов:
Выход:
источник
Perl 5 (
-alp
), 89 байтTIO
или уникальные значения, 99 байт
источник