Введение
Мой калькулятор ведет себя странно. Иногда, когда я набираю, 8
он отображает 2
. И иногда, когда я набираю, 6
он отображает +
. Некоторые кнопки перепутаны!
Может ли кто-нибудь помочь мне определить, какой?
Вызов:
Вход: список неправильных уравнений с правильными результатами.
Вывод: две кнопки, которые поменялись местами.
Например:
вход может быть:
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
Правила соревнований:
- Ввод может быть в любом разумном формате. Может быть одной строкой с пробелом; список строк или -array; список с уравнениями и другой список с правильными результатами. Ваш звонок. Пожалуйста, укажите, какой формат ввода вы использовали!
ПРИМЕЧАНИЕ. Это также означает, что вам разрешено вводить контрольный пример-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 -
code-golf
number
arithmetic
integer
code-golf
math
number
geometry
code-golf
grid
code-golf
math
number
sequence
primes
code-golf
sequence
kolmogorov-complexity
code-golf
string
ascii-art
alphabet
code-golf
math
sequence
integer
code-golf
number-theory
integer
natural-language
code-golf
date
code-golf
function
code-golf
ascii-art
code-golf
math
number-theory
primes
classification
code-golf
array-manipulation
decision-problem
matrix
code-golf
number
code-golf
code-golf
ascii-art
matrix
code-golf
string
code-golf
sequence
base-conversion
code-golf
code-golf
math
number-theory
combinatorics
integer-partitions
code-golf
integer
binary
base-conversion
code-golf
integer
base-conversion
palindrome
code-golf
code-golf
integer-partitions
code-golf
math
ascii-art
matrix
code-golf
number
sequence
number-theory
matrix
code-golf
interpreter
code-golf
graph-theory
code-golf
ascii-art
decision-problem
code-golf
division
code-golf
array-manipulation
primes
code-golf
string
ascii-art
code-golf
primes
counting
code-golf
matrix
unicode
code-golf
source-layout
code-golf
grammars
code-golf
string
cops-and-robbers
regular-expression
obfuscation
string
code-challenge
cops-and-robbers
regular-expression
code-golf
kolmogorov-complexity
game
card-games
code-golf
kolmogorov-complexity
code-golf
array-manipulation
matrix
code-challenge
cops-and-robbers
code-challenge
decision-problem
cops-and-robbers
code-golf
permutations
Кевин Круйссен
источник
источник
--
. Например1991 = 2, -/3 = 3
. (Многие языки путают это с оператором декремента.)91 19
случае, если решение есть,9--9
и отсутствие пробела в том9119
случае, если решение9229
требуется, требует знаний о решении при создании тестовых случаев. Если бы это было позволено, я мог бы просто добавить пробел только до того, как поменялись местами символы, и решение могло быть немедленно получено из контрольного примера.*
и/
до того+
и двоичного-
?Ответы:
Perl 6 ,
132113 байтовСпасибо Джо Кингу за -19 байт.
Попробуйте онлайн!
Ввод - это разделенная запятыми строка уравнений и разделенная запятыми строка результатов (надеюсь, это нормально). Выходные данные - это строка, содержащая две поменяемые местами кнопки.
Правильно обрабатывает
--
. Мощь продукт ложных срабатываний на---
,++
,**
, или//
, но я не мог придумать теста.источник
---
;++
;**
;//
; или другие подобные вещи, и*+
т. д. Единственная двойная нецифровка, которую вы должны поддерживать, это--
. Кроме того, если я правильно понимаю ваш код, вам это не понадобится.subst('-','- '
, поскольку ввод контрольного примера-5--15
с пробелом разрешен. Вы не первый, кто добавляет код для программного добавления этого пространства, поэтому я укажу это более четко в описании задачи.**
потому что они имеют значение как выражения Perl 6 и могут вызывать ложные срабатывания.1992 = 1
может быть1**2 = 1
или1//2 = 1
, например. Этоsubst
для случаев, когда правильное уравнение содержит--
, например, новый тестовый пример, который вы добавили.JavaScript (ES7),
159158 байтРедактировать: новая версия для соответствия обновленным правилам, касающимся
--
сохраненного 1 байта, благодаря @Shaggy
Вводит синтаксис карри,
(e)(r)
где e - массив уравнений, а r - массив ожидаемых результатов. Возвращает массив символов.Контрольные примеры
Показать фрагмент кода
Отформатировано и прокомментировано
источник
eval
ТРАЕКТОРИИtry / catch
: codepen.io/anon/pen/rzRrLp .1991 = 2
. Решение должно быть1--1 = 2
с9
и-
поменяно местами.Python 2 ,
204,199,193,173, 165 байтовПопробуйте онлайн!
источник
Oracle SQL и PL / SQL, 458 байт
Скомпилируйте функцию PL / SQL (210 байт):
Запустите SQL (248 байт):
После создания таблицы
T
с тестовыми данными:Выход:
Предыдущая версия :
Предполагается строка ввода, как
'123 = 3'
:Та же функция PL / SQL и SQL (322 байта):
После создания таблицы
T
с тестовыми данными:Выход:
Обновление - Тестирование :
SQL Fiddle
Настройка схемы Oracle 11g R2 :
Запрос 1 :
Результаты :
Запрос 2 :
Результаты :
Запрос 3 :
Результаты :
Запрос 4 :
Результаты :
Запрос 5 :
Результаты :
Запрос 6 :
Результаты :
источник
||REPLACE(x,'--','- -')||
, формат ввода / вывода является гибким, поэтому вы можете вводить,-5--15
как-5- -15
вы хотите. Кроме того, что было бы самым простым способом для меня, чтобы проверить все тестовые случаи работы, особенно последний? TIO-ссылка как-то возможна?||REPLACE(x,'--','- -')||
используется для ожидаемого правильного уравнения, как последний тестовый пример, который я добавил?--
начинает комментарий в SQL, поэтому либо необходимо сформулировать контрольные примеры, чтобы они--
никогда не встречались в уравнении (заменив его на- -
), либо для их защиты необходимо некоторое защитное кодирование.13116/3 = -1
нужно было бы написать так,131 16/3 = -1
чтобы удалить этот вызовREPLACE
.Powershell,
222209192 байтаТестовый сценарий и объяснение:
Выход:
источник
05AB1E , 21 байт
Введите в виде двух списков, во-первых, уравнения и результаты. Вывести в виде отфильтрованного списка пар с обоими поворотами (то есть
[["2","*"],["*","2"]]
).Попробуйте онлайн или проверьте все контрольные примеры . (ПРИМЕЧАНИЕ. Использует устаревшую версию 05AB1E в TIO, поскольку
.E
она отключена в более новой версии TIO. Из-за этогоï
добавляется дополнительная (приведение к целому числу), поскольку в устаревшей версии 05AB1E1.0
и1
внутри списков не были равны .)Объяснение:
источник