Вступ
Мій калькулятор поводиться дивно. Іноді під час введення в 8ньому відображається а 2. І іноді, коли я набираю в 6ньому, відображається a +. Деякі кнопки змішані!
Може хтось допоможе мені визначити, який?
Виклик:
Введення: Список неправильних рівнянь з правильними результатами.
Вихід: дві кнопки, які поміняються.
Наприклад:
Вхід може бути:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Для якого очікуваних результатів є: 2і *.
Чому? Тому що ВСІ рівняння були б правильними, якщо ми поміняємо місцями 2 та *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Правила виклику:
- Введення може бути в будь-якому розумному форматі. Може бути одним рядком з обмеженим пробілом; рядок-список або-масив; список з рівняннями та інший список з правильними результатами. Твій дзвінок. Будь ласка, вкажіть, який формат введення ви використовували!
ПРИМІТКА. Це також означає, що ви можете вводити тестовий випадок-5--15як-5- -15або-5 - -15. Однак число, в результаті якого--слід вводити без пробілів, або з пробілом між кожною цифрою. Тому тестовий випадок9119можна вводити як (9119або9 1 1 9причина91 19не дозволена тому, що ви можете керуватися місцем пошуку- -). Тож пробіли (дещо) необов’язкові та дозволені. - Формат виводу може бути також у будь-якому розумному форматі. Може бути два символи; єдиний двосимвольний рядок; список рядків, що містить два символи. Твій дзвінок. Ще раз, будь ласка, вкажіть, який вихідний формат ви використовували!
- Вам дозволяється використовувати будь-які різні 14 виходів, на які відображається карта
0123456789+-*/. Тож вам навіть дозволяється виводити два різних цілих числа, якщо ви хочете (ще раз, будь ласка, вкажіть карту, яку ви використовували, якщо така є). - Вам потрібно лише підтримувати цілі числа. Тож не буде жодних тестових випадків на кшталт
1/8=0.125або1/8=0. - Арифметичні операнди, які вам доведеться підтримувати: складання (
+); віднімання (-); множення (*або×або·); поділ (/або÷). (ПРИМІТКА. Символи між дужками додаються лише як уточнення.) - Вам доведеться підтримувати від’ємні числа. Це означає, що
-можна трактувати в рівнянні як математичний операнд, так і як негативний показник. - Можна припустити , задані некоректні рівняння і передбачувані правильні рівняння завжди дійсні (щоб не було речей , як
4-/2і9+-+8, наприклад). - Неправильні вхідні рівняння можуть містити ділення на 0, але виправлені та очікувані рівняння ніколи не містять ділення на 0.
- Неправильні рівняння вводу вже можуть бути правильними, навіть якщо ви поміняєте потрібні кнопки назад.
- Дане вхідне рівняння може бути нерелевантним для перемикання кнопок (як-от
4+4=8і9/3=3рівнянь, із заміненими кнопками2та*). - Ви можете припустити, що завжди буде лише одна можлива заміна, яку можна здійснити з даними тестовими кейсами.
- Обидві кнопки для заміни завжди будуть присутніми принаймні в одному з неправильних рівнянь.
Загальні правила:
- Це код-гольф , тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам коду-гольфу відштовхувати вас від публікації відповідей з не кодовими гольф-мовами. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Стандартні правила застосовуються до вашої відповіді, тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу "повернення". Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також, будь ласка, додайте пояснення, якщо це необхідно.
Тестові приклади:
Input:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Output: 2 *
Input:
4/2 = 6
3/0 = 3
0/8+2 = 4
95-5 = 90
4+2 = 2
Output: + /
Input:
7+4 = 11
5-15 = 46
212-23 = -2121
Output: 1 -
Input:
4+8/2-9*1 = -5
99/3-13 = 20
1+2+3+4 = 10
4-3-2-1 = -6
Output: 2 4
Input:
18/18 = 1
98-8 = 90
55*88 = 4840
-5--15 = 10
Ouput: 5 8
Input:
9119 = 18
5-3 = 513
8*-9 = 152
13116/3 = -1
Output: 1 -
--. Наприклад 1991 = 2, -/3 = 3. (Багато мов плутають це з оператором декременту.)
91 19якщо рішення є, 9--9а простору немає, 9119якщо рішення 9229вимагає знань про рішення під час створення тестових випадків. Якби це було дозволено, я міг би просто додати пробіл лише перед заміненими символами, і рішення можна було негайно отримати з тестового випадку.
*і /до того +і довічного -?