introduzione
La mia calcolatrice si sta comportando in modo strano. A volte quando scrivo un 8
viene visualizzato a 2
. E a volte quando scrivo a 6
viene visualizzato a +
. Alcuni pulsanti sono confusi!
Qualcuno potrebbe aiutarmi a determinare quale?
Sfida:
Input: elenco di equazioni errate , con risultati corretti .
Output: i due pulsanti che vengono scambiati.
Ad esempio:
un input potrebbe essere:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Per cui gli output previsti sono: 2
e *
.
Perché? Perché TUTTE le equazioni sarebbero corrette se scambiassimo i 2 e *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Regole della sfida:
- L'input può essere in qualsiasi formato ragionevole. Può essere una singola stringa con spazio delimitato; una lista-string o -array; un elenco con equazioni e un altro elenco con i risultati corretti. La tua chiamata. Indica quale formato di input hai utilizzato!
NOTA: ciò significa anche che è consentito inserire il test case-5--15
come-5- -15
o-5 - -15
. Tuttavia, un numero risultante--
deve essere immesso senza spazi o con uno spazio tra ogni cifra. Quindi il test case9119
può essere inserito come9119
o9 1 1 9
(la ragione91 19
non è consentita perché puoi quindi essere guidato dallo spazio per la ricerca- -
). Quindi gli spazi sono (in qualche modo) opzionali e ammessi. - Anche il formato di output può essere in qualsiasi formato ragionevole. Possono essere due personaggi; una singola stringa di due caratteri; un elenco di stringhe contenente i due caratteri. La tua chiamata. Ancora una volta, per favore indica quale formato di output hai usato!
- È consentito utilizzare 14 distinti output su cui mappare
0123456789+-*/
. Quindi, se vuoi, puoi anche generare due interi distinti (di nuovo, specifica l'eventuale mappatura che hai usato). - Devi solo supportare numeri interi. Quindi non ci saranno casi di test come
1/8=0.125
o1/8=0
. - Operandi aritmetici che dovrai supportare: addition (
+
); sottrazione (-
); moltiplicazione (*
o×
o·
); divisione (/
o÷
). (NOTA: i caratteri tra parentesi vengono aggiunti solo come chiarimento.) - Dovrai supportare numeri negativi. Questo significa che
-
può essere interpretato nell'equazione sia come operando matematico sia come indicatore negativo. - Puoi assumere le equazioni errate fornite e le presunte equazioni corrette sono sempre valide (quindi non ci saranno cose come
4-/2
o9+-+8
per esempio). - Le equazioni di input errate possono contenere una divisione per 0, ma le equazioni corrette e previste non conterranno mai una divisione per 0.
- Le equazioni di input errate possono già essere corrette anche se si scambiano di nuovo i pulsanti desiderati.
- Una data equazione di input può essere irrilevante per i pulsanti da scambiare (come le equazioni
4+4=8
e9/3=3
, con i pulsanti scambiati2
e*
). - Puoi presumere che ci sarà sempre solo uno scambio possibile che può essere effettuato con i casi di test indicati.
- Entrambi i pulsanti da scambiare saranno sempre presenti in almeno una delle equazioni errate.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi test:
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 -
--
. Per esempio 1991 = 2, -/3 = 3
. (Molte lingue lo confondono con l'operatore in
91 19
se la soluzione è presente 9--9
e nessuno spazio 9119
se la soluzione 9229
richiede la conoscenza della soluzione durante la creazione dei casi di test. Se ciò fosse consentito, potrei semplicemente aggiungere uno spazio solo prima dei caratteri scambiati e la soluzione potrebbe essere immediatamente derivata dal test case.
*
e /
prima +
e binari -
?