Якщо ви прочитали книгу " Контакт " Карла Сагана, цей виклик може здатися вам знайомим.
Дано вхід набору математичних рівнянь, що складається з числа, невідомого оператора, іншого числа та результату, вивести, які оператори представляють додавання, віднімання, множення чи ділення.
Кожне вхідне рівняння завжди буде складатися з
- невід'ємне ціле число
- одна з букв
A,B,CабоD - інше невід'ємне ціле число
- персонаж
= - остаточне невід'ємне ціле число
об'єднані разом. Наприклад, можливий вхід є 1A2=3, з якого можна вивести, що Aявляє собою додавання. Кожне з цілих чисел задовольнить 0 ≤ x ≤ 1,000.
Однак це не завжди так просто. Можливо, існує неоднозначність між:
5A0=5: додавання / віднімання1A1=1: множення / ділення0A5=0: множення / ділення2A2=4: додавання / множення4A2=2: віднімання / ділення0A0=0: додавання / віднімання / множення
і так далі. Завдання полягає в тому, щоб використовувати цю здатність звужувати вибір у поєднанні з процесом усунення, щоб зрозуміти, який оператор представляє кожна літера. (Завжди буде щонайменше одне вхідне рівняння, і завжди можна буде однозначно, однозначно зіставити кожну букву, що використовується у введенні, з одним оператором.)
Наприклад, скажімо, вхідними є такі рівняння:
0A0=0: це звужує A до додавання, віднімання чи множення (не можна ділити на 0).10B0=10: B має бути або додаванням, або відніманням.5C5=10: C очевидно додавання, яке робить віднімання B, яке робить множення A.
Тому вихід для цих вхідних рівнянь повинен співпадати Aз *, B
з -і Cз +.
Введення може бути подано як окремий рядок пробілу / пробіл, розміщений комами, або масив рядків, кожен з яких представляє одне рівняння. Вихідним сигналом може бути або один рядок ( "A*B-C+"), масив ( ["A*", "B-", "C+"]), або словник / двосхилий масив ( {"A": "*", ...}або [["A", "*"], ...]).
Ви можете припустити, що число ніколи не ділиться на інше число, на яке воно не ділиться (тож, вам не потрібно турбуватися про те, чи має поділ бути плаваючою точкою чи усіченою).
Оскільки це код-гольф , виграє найкоротший код у байтах.
Тестові приклади:
In Out
-------------------------------
0A0=0 10B0=10 5C5=10 A*B-C+
100D100=10000 D*
4A2=2 4B2=2 0A0=0 A-B/
15A0=15 4B2=2 2C2=0 A+B/C-
1A1=1 0A0=0 A*
0A0=0 2A2=4 5B0=5 2B2=4 A*B+
2A2=4 0C0=0 5B0=5 5A0=5 A+B-C*
0A1000=0 4A2=2 A/