Вступ
Мій калькулятор поводиться дивно. Іноді під час введення в 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
вимагає знань про рішення під час створення тестових випадків. Якби це було дозволено, я міг би просто додати пробіл лише перед заміненими символами, і рішення можна було негайно отримати з тестового випадку.
*
і /
до того +
і довічного -
?