Introducción
Mi calculadora se está comportando raro. A veces, cuando escribo un 8
, muestra un 2
. Y a veces cuando escribo en una 6
muestra una +
. ¡Algunos botones están mezclados!
¿Alguien podría ayudarme a determinar cuál?
Reto:
Entrada: Lista de ecuaciones incorrectas , con resultados correctos .
Salida: los dos botones que se intercambian.
Por ejemplo:
una entrada podría ser:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Para lo cual los resultados esperados son: 2
y *
.
¿Por qué? Porque TODAS las ecuaciones serían correctas si intercambiamos los 2 y *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Reglas de desafío:
- La entrada puede estar en cualquier formato razonable. Puede ser una sola cadena con espacio delimitado; una lista de cadenas o una matriz; una lista con ecuaciones y otra lista con los resultados correctos. Tu llamada. ¡Indique qué formato de entrada ha utilizado!
NOTA: Esto también significa que puede ingresar el caso de prueba-5--15
como-5- -15
o-5 - -15
. Sin embargo, un número resultante--
debe ingresarse sin espacios o con un espacio entre cada dígito. Por lo tanto, el caso de prueba9119
se puede ingresar como9119
o9 1 1 9
(la razón91 19
no está permitida es porque puede guiarse por el espacio para encontrar- -
). Entonces los espacios son (algo) opcionales y permitidos. - El formato de salida puede estar en cualquier formato razonable también. Pueden ser dos personajes; una sola cadena de dos caracteres; una lista de cadenas que contiene los dos caracteres. Tu llamada. Una vez más, indique qué formato de salida ha utilizado.
- Se le permite usar cualquier 14 salidas distintas que se asignen
0123456789+-*/
. Por lo tanto, incluso puede emitir dos enteros distintos si lo desea (nuevamente, especifique la asignación que ha utilizado, si corresponde). - Solo tienes que soportar enteros. Por lo tanto, no habrá casos de prueba como
1/8=0.125
o1/8=0
. - Operandos aritméticos que deberá admitir: suma (
+
); resta (-
); multiplicación (*
o×
o·
); división (/
o÷
). (NOTA: Los caracteres entre paréntesis solo se agregan como aclaración). - Tendrás que soportar números negativos. Este medio
-
puede interpretarse en la ecuación como un operando matemático o un indicador negativo. - Puede suponer que las ecuaciones incorrectas dadas y las supuestas ecuaciones correctas siempre son válidas (por lo que no habrá cosas como
4-/2
o9+-+8
por ejemplo). - Las ecuaciones de entrada incorrectas pueden contener una división por 0, pero las ecuaciones corregidas y esperadas nunca contendrán división por 0.
- Las ecuaciones de entrada incorrectas ya pueden ser correctas incluso si cambia los botones deseados.
- Una ecuación de entrada dada puede ser irrelevante para que los botones se intercambien (como las ecuaciones
4+4=8
y9/3=3
, con los botones intercambiados2
y*
). - Puede suponer que siempre habrá un único intercambio posible que se puede hacer con los casos de prueba dados.
- Ambos botones para intercambiar siempre estarán presentes en al menos una de las ecuaciones incorrectas.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
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
Kevin Cruijssen
fuente
fuente
--
. Por ejemplo1991 = 2, -/3 = 3
. (Muchos idiomas confunden esto con el operador de decremento)91 19
si la solución es9--9
y no hay espacio9119
si la solución es9229
requiere conocimiento sobre la solución al crear los casos de prueba. Si esto se permitiera, simplemente podría agregar un espacio solo antes de los caracteres intercambiados y la solución podría derivarse inmediatamente del caso de prueba.*
, y/
antes+
y binario-
?Respuestas:
Perl 6 ,
132113bytesGracias a Jo King por -19 bytes.
Pruébalo en línea!
La entrada es una cadena de ecuaciones separadas por comas y una cadena de resultados separados por comas (espero que esto esté bien). La salida es una cadena que contiene los dos botones intercambiados.
Maneja correctamente
--
. Producto podría falsos positivos para---
,++
,**
, o//
, pero no pudieron llegar a un caso de prueba.fuente
---
;++
;**
;//
; u otras cosas como*+
etc. El único doble no adyacente sin dígitos que tendrás que soportar es--
. Además, si entiendo su código correctamente, no lo necesitará.subst('-','- '
, ya que-5--15
se permite ingresar el caso de prueba con un espacio. No eres el primero en agregar código para agregar este espacio mediante programación, por lo que lo especificaré más claramente en la descripción del desafío.**
porque tienen un significado como expresiones Perl 6 y pueden causar falsos positivos.1992 = 1
podría ser1**2 = 1
o1//2 = 1
, por ejemplo. Estosubst
es para los casos en que la ecuación correcta contiene--
, por ejemplo, el nuevo caso de prueba que agregó.Javascript (ES7),
159158 bytesEditar: nueva versión para cumplir con las reglas actualizadas sobre
--
1 byte guardado gracias a @Shaggy
Toma información en la sintaxis de curry
(e)(r)
donde e es la matriz de ecuaciones y r es la matriz de resultados esperados. Devuelve una matriz de caracteres.Casos de prueba
Mostrar fragmento de código
Formateado y comentado
fuente
eval
ingtry / catch
: codepen.io/anon/pen/rzRrLp .1991 = 2
. La solución debe ser1--1 = 2
con9
y-
intercambiado.Python 2 ,
204,199,193,173, 165 bytesPruébalo en línea!
fuente
Oracle SQL y PL / SQL, 458 bytes
Compile la función PL / SQL (210 bytes):
Ejecute el SQL (248 bytes):
Después de haber creado una tabla
T
con los datos de prueba:Salida:
Versión previa :
Asumió una entrada de cadena como
'123 = 3'
:Misma función PL / SQL y SQL (322 bytes):
Después de haber creado una tabla
T
con los datos de prueba:Salida:
Actualización - Prueba :
Violín de SQL
Configuración del esquema de Oracle 11g R2 :
Consulta 1 :
Resultados :
Consulta 2 :
Resultados :
Consulta 3 :
Resultados :
Consulta 4 :
Resultados :
Consulta 5 :
Resultados :
Consulta 6 :
Resultados :
fuente
||REPLACE(x,'--','- -')||
, el formato de entrada / salida es flexible, por lo que puede ingresar-5--15
como-5- -15
lo desee. Además, ¿cuál sería la forma más fácil para mí de verificar que todos los casos de prueba funcionen, especialmente el último? ¿Es posible un enlace TIO de alguna manera?||REPLACE(x,'--','- -')||
usa para una ecuación correcta esperada, como el último caso de prueba que he agregado?--
comienza un comentario en SQL, por lo que los casos de prueba deben formularse para que--
nunca ocurra en la ecuación (reemplazándola por- -
) o necesita algo de codificación defensiva para militar por eso.13116/3 = -1
, debería escribirse131 16/3 = -1
para eliminar esa llamadaREPLACE
.PowerShell,
222209192 bytesPrueba de guión y explicación:
Salida:
fuente
05AB1E , 21 bytes
Ingrese como dos listas, primero las ecuaciones y segundo los resultados. Salida como una lista filtrada de pares con ambas rotaciones (es decir
[["2","*"],["*","2"]]
).Pruébelo en línea o verifique todos los casos de prueba . (NOTA: Utiliza la versión heredada de 05AB1E en el TIO, porque
.E
está deshabilitada en la versión más reciente en TIO. Por eso, se agrega un adicionalï
(conversión a entero), porque en la versión heredada de 05AB1E1.0
y las1
listas internas no eran iguales .)Explicación:
fuente