Використовуючи знайомі нам математичні символи: +, x, круглі дужки та будь-яке раціональне число, легко створити вирази, що оцінюють якесь бажане число. Наприклад: 1+(2x3)=7
, (1+2)+(3x6.5)=22.5
і так далі. Досить нудно.
У цій проблемі, ми будемо використовувати новий оператор: ±
. Використання ±
в виразі означає, що вам потрібно оцінити вираз, замінивши ±
«s» +
або -
всіма можливими способами, і повернути набір усіх можливих значень. Наприклад:
1±2±3 = {-4,0,2,6}
тому що1±2±3
може бути будь-який з1+2+3
,1+2-3
,1-2+3
і1-2-3
та їх значення6,0,2,-4
відповідно.(±2)x(2±3) = {-10,-2,2,10}
з подібних причин.
Тепер, як з'ясовується, для будь-якого безлічі різних дійсних чисел, то можна створити вираз з +
, x
, (
, )
, ±
, і дійсні числа , яке обчислюється в даному наборі.
Завдання
Ваше завдання полягає в тому, щоб написати програму або функцію на мові за вашим вибором, який приймає послідовність (список / масив / будь-який зручний формат) цілих чисел і виводить вираз (у вигляді рядка) , що складається з +
, x
, (
, )
, ±
, і раціональних чисел що оцінює набір заданих чисел.
- Зверніть увагу, що точний символ
±
не має значення; ви можете використовувати будь-який інший символ на ваш вибір, якщо він відрізняється від інших символів, які ви використовуєте. Але ви повинні згадати, якого персонажа ви використовуєте у своєму поданні. - Вхід може складатися з десяткових наближень (до розумної точності) використовуваних раціональних чисел.
- Введення та вихід можна проводити будь-яким із стандартних способів.
- Стандартні лазівки заборонені.
- Можна припустити, що дані цілі числа будуть виразними та надаватимуться у порядку зростання.
- Вихід може містити пробіли та нові рядки.
Критерій виграшу
Це код-гольф , тому найкоротший код у байтах виграє.
Приклади
Введення | Можливий вихід ------------- + ----------------------------- [1,2,3] | 2 ± 0,5 ± 0,5 [-7, -3,1,21] | (1 ± 2) х (3 ± 4)
Ідея, взята з питання, в турнірі міст, осінь 2015 року .