introduction
Ma calculatrice se comporte bizarrement. Parfois, lorsque je tape un, 8
il affiche un 2
. Et parfois, lorsque je tape un, 6
il affiche un +
. Certains boutons sont mélangés!
Quelqu'un pourrait-il m'aider à déterminer lequel?
Défi:
Entrée: Liste des équations incorrectes , avec des résultats corrects .
Sortie: Les deux boutons qui sont échangés.
Par exemple:
Une entrée peut être:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Pour lesquels les résultats attendus sont: 2
et *
.
Pourquoi? Parce que TOUTES les équations seraient correctes si nous échangeons les 2 et les *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Règles du défi:
- L'entrée peut être dans n'importe quel format raisonnable. Peut être une chaîne unique avec un espace délimité; une liste de chaînes ou un tableau; une liste avec des équations et une autre liste avec les résultats corrects. Ton appel. Veuillez indiquer le format d'entrée que vous avez utilisé!
REMARQUE: cela signifie également que vous êtes autorisé à saisir le scénario de test en-5--15
tant que-5- -15
ou-5 - -15
. Cependant, un nombre résultant--
doit être entré sans espaces ou avec un espace entre chaque chiffre. Ainsi, le cas de test9119
peut être entré comme9119
ou9 1 1 9
(la raison91 19
n'est pas autorisée parce que vous pouvez ensuite être guidé par l'espace de recherche- -
). Les espaces sont donc (quelque peu) facultatifs et autorisés. - Le format de sortie peut également être dans n'importe quel format raisonnable. Peut être deux caractères; une seule chaîne de deux caractères; une liste de chaînes contenant les deux caractères. Ton appel. Encore une fois, veuillez indiquer le format de sortie que vous avez utilisé!
- Vous êtes autorisé à utiliser 14 sorties distinctes qui correspondent à
0123456789+-*/
. Donc, vous êtes même autorisé à produire deux entiers distincts si vous le souhaitez (encore une fois, veuillez spécifier le mappage que vous avez utilisé, le cas échéant). - Vous n'avez qu'à prendre en charge les entiers. Il n'y aura donc pas de cas de test comme
1/8=0.125
ou1/8=0
. - Opérandes arithmétiques que vous devrez prendre en charge: addition (
+
); soustraction (-
); multiplication (*
ou×
ou·
); division (/
ou÷
). (REMARQUE: les caractères entre parenthèses ne sont ajoutés qu'à titre de clarification.) - Vous devrez prendre en charge les nombres négatifs. Cela signifie
-
peut être interprété dans l'équation à la fois comme un opérande mathématique ou un indicateur négatif. - Vous pouvez supposer que les équations incorrectes données et les équations supposées correctes sont toujours valides (il n'y aura donc pas de choses comme
4-/2
ou9+-+8
par exemple). - Les équations d'entrée incorrectes peuvent contenir une division par 0, mais les équations corrigées et attendues ne contiendront jamais de division par 0.
- Les équations d'entrée incorrectes peuvent déjà être correctes même si vous permutez les boutons voulus.
- Une équation d'entrée donnée peut être sans importance pour les boutons à échanger (comme les équations
4+4=8
et9/3=3
, avec les boutons échangés2
et*
). - Vous pouvez supposer qu'il n'y aura toujours qu'un seul échange possible qui peut être effectué avec les cas de test donnés.
- Les deux boutons à permuter seront toujours présents dans au moins une des équations incorrectes.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de 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 -
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
la source
la source
--
. Par exemple1991 = 2, -/3 = 3
. (De nombreuses langues confondent cela avec l'opérateur de décrémentation.)91 19
si la solution est9--9
et pas d'espace9119
si la solution est9229
nécessite des connaissances sur la solution lors de la création des cas de test. Si cela était autorisé, je pourrais simplement ajouter un espace uniquement avant les caractères échangés et la solution pourrait être immédiatement dérivée du scénario de test.*
et/
avant+
et binaire-
?Réponses:
Perl 6 ,
132113 octetsMerci à Jo King pour -19 octets.
Essayez-le en ligne!
L'entrée est une chaîne d'équations séparée par des virgules et une chaîne de résultats séparée par des virgules (espérons que cela est OK). La sortie est une chaîne contenant les deux boutons échangés.
Gère correctement
--
. Produit Might faux positifs pour---
,++
,**
ou//
, mais je ne pouvais pas venir avec un test.la source
---
;++
;**
;//
; ou d'autres choses comme*+
etc. Le seul double chiffre non adjacent que vous devrez prendre en charge est--
. De plus, si je comprends bien votre code, vous n'en aurez pas besoin.subst('-','- '
, car la saisie du scénario de test-5--15
avec un espace est autorisée. Vous n'êtes pas le premier à ajouter du code pour ajouter cet espace par programmation, je vais donc le spécifier plus clairement dans la description du défi.**
parce qu'elles ont une signification en tant qu'expressions Perl 6 et peuvent provoquer des faux positifs.1992 = 1
pourrait être1**2 = 1
ou1//2 = 1
, par exemple. C'estsubst
pour les cas où l'équation correcte contient--
, par exemple le nouveau cas de test que vous avez ajouté.JavaScript (ES7),
159158octetsEdit: nouvelle version pour se conformer aux règles mises à jour concernant
--
Saved 1 byte grâce à @Shaggy
Prend une entrée dans la syntaxe de curry
(e)(r)
où e est le tableau des équations et r est le tableau des résultats attendus. Renvoie un tableau de caractères.Cas de test
Afficher l'extrait de code
Formaté et commenté
la source
eval
letry / catch
: codepen.io/anon/pen/rzRrLp .1991 = 2
. La solution doit être1--1 = 2
avec9
et-
échangée.Python 2 ,
204,199,193,173, 165 octetsEssayez-le en ligne!
la source
Oracle SQL et PL / SQL, 458 octets
Compilez la fonction PL / SQL (210 octets):
Exécutez le SQL (248 octets):
Après avoir créé un tableau
T
avec les données de test:Sortie:
Version précédente :
Supposons une entrée de chaîne comme
'123 = 3'
:Même fonction PL / SQL et SQL (322 octets):
Après avoir créé un tableau
T
avec les données de test:Sortie:
Mise à jour - Test :
SQL Fiddle
Configuration du schéma Oracle 11g R2 :
Requête 1 :
Résultats :
Requête 2 :
Résultats :
Requête 3 :
Résultats :
Requête 4 :
Résultats :
Requête 5 :
Résultats :
Requête 6 :
Résultats :
la source
||REPLACE(x,'--','- -')||
, le format d'entrée / sortie est flexible, vous êtes donc autorisé à entrer-5--15
comme-5- -15
si vous le vouliez. De plus, quelle serait la façon la plus simple pour moi de vérifier que tous les cas de test fonctionnent, en particulier le dernier? Une liaison TIO est-elle possible d'une manière ou d'une autre?||REPLACE(x,'--','- -')||
utilisé pour une équation correcte attendue, comme le dernier cas de test que j'ai ajouté?--
commence un commentaire en SQL, donc soit les cas de test doivent être formulés de manière à ce que cela--
ne se produise jamais dans l'équation (en le remplaçant par- -
), soit il a besoin d'un codage défensif pour militer pour cela.13116/3 = -1
il faudrait écrire131 16/3 = -1
pour supprimer cet appel àREPLACE
.Powershell,
222209192 octetsScript de test et explication:
Sortie:
la source
05AB1E , 21 octets
Saisissez deux listes, les équations en premier et les résultats en deuxième. Sortie sous forme de liste filtrée de paires avec les deux rotations (c.
[["2","*"],["*","2"]]
-à-d.).Essayez-le en ligne ou vérifiez tous les cas de test . (REMARQUE: utilise la version héritée de 05AB1E dans le TIO, car elle
.E
est désactivée dans la version la plus récente sur TIO. Pour cette raison, une version supplémentaireï
(transtypée en entier) est ajoutée, car dans la version héritée de 05AB1E1.0
et les1
listes internes n'étaient pas égales .)Explication:
la source