- 20, Oct 2024
- #1
Я вижу твои БИДМАСЫ и поднимаю тебе БАДМИС
Испытание
Учитывая набор чисел с операторами между ними: «5 + 4 * 9/3 - 8», возвращайте все возможные результаты выражения для каждой перестановки порядка основных операций: [/, *, +, -].
Правила
- Стандартные лазейки запрещены
- ввод/вывод
- Ввод должен быть упорядочен с помощью инфиксных операций, но это проще всего (строка или массив).
- От вас не требуется поддержка унарных операторов (например, «-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]
#код-гольф #перестановки