Вступ
У дитинстві настає момент, коли ти думаєш, що ти освоїв додавання та множення, тоді хтось приходить і повідомляє, що
a * b + c = (a * b) + c! = a * (b + c),
і що це був не такий простий чи лінійний процес, як вас вчили раніше. Ви дізнаєтесь, що існує щось, що називається порядок операцій . Це дуже важливий спосіб збереження певного рівня узгодженості та виразів, не маючи дужок, що перешкоджають усьому.
Родова сюжетна лінія
Одного разу ти прокинешся під звуком паніки на вулицях. Екстремістська група під назвою " 2560 " (скорочення до "Організація проти порядку операцій", з дурним шестигранним поворотом) використовувала свої злі методи, щоб взяти під контроль всю ядерну зброю у світі. Вони тримають всю планету в заручниках, і вони мають простий попит: скасувати прийнятий порядок операцій або стикатися з викоріненням (дужки повинні підтримувати свій пріоритет). Нова система називається PSADME (дужки, віднімання / додавання, ділення / множення, експоненти), а вирази оцінюють справа наліво:
a - b - c = a - (b - c) = a + c - b
Минають дні, і перехід триває. Поки математики та фізики зайняті переписуванням своїх рівнянь, перед вченими-комп’ютерами стоїть завдання змінити моду, в якому математичні вирази інтерпретуються комп'ютерами. Ви належите до таємної повстанської програмуванні групи , яка ставить перед собою за мету заподіяти стільки борошна для нових глобальних повелителів - і, випадково, ви випадково обрана 2560 і поставлена завданням зробити програму розрахунку тесту.
Ваша місія
Для простоти всі надані числа будуть цілими числами, а обчислення дадуть цілі результати.
Правила та оцінка
- Програма повинна приймати введення довжиною до 128 символів - якщо ваша мова / платформа має меншу максимальну довжину введення, це прийнятна привід.
- Стандартні лазівки заборонені.
- Виграшний код буде обраний 18 листопада (4 тижні з цієї дати).
- Не соромтеся розміщувати код, який би не вважався гідним для гольфу. Це про веселощі. Якщо у вас є цікавий спосіб зробити це, але ви не можете його розіграти самостійно (або за характером вашого методу), ви можете все-таки опублікувати його.
Як завжди, виграючий код - це найменша кількість байтів, які мають деякі бонусні цінності:
- -5 для уникнення будь-якого використання символів у наданому виразі: + , - , ( , ) , ^ , * , /
- -5 для проведення обчислень потрібно 5 хвилин (але не більше 10 хвилин) для обчислення на стандартному комп'ютері, без того, щоб метод був очевидним (використовуючи годинник або непотрібні петлі); Мета полягає в тому, щоб переконати нових господарів у тому, що ви не намагаєтесь зірвати їх обчислення приреченості.
- - (5 + N) для прямого образливого повідомлення (довжиною N, не враховуючи провідної / кінцевої пробілів) про членів 2560, які слід писати просто перед вашим кодом, з деяким смішним поясненням того, чому це потрібно там. Якщо його видалити, код не повинен функціонувати правильно. Так, безкоштовні бали за розважальну цінність.
Приклади та пояснення
[program] 2 - 2 - 2
2
2 - (2 - 2) = 2
[program] (2 + 2 * 3 + 3) / 3 + 3
4
(4 * 6) / (3 + 3) = 4
[program] 3 + 2 + 1 ^ 3
216
(3 + 2 + 1) ^ 3 = 216
[program] -5^2
25
(-5) ^ 2 = 25
[program] 32 / 8 * 3 - 1
2
32 / (8 * (3 - 1)) = 32/16 = 2
P(SA)(DM)E.
1 - 3 + 4 = 1 - 7? Праворуч ліворуч би це запропонувало, але це висуває додавання перед відніманням, всупереч PSADME, ні?