Einführung
Mein Rechner verhält sich komisch. Manchmal, wenn ich einen 8
eingebe, wird ein angezeigt 2
. Und manchmal, wenn ich a 6
eingebe, zeigt es a an +
. Einige Tasten sind vertauscht!
Könnte mir jemand helfen, welche zu bestimmen?
Herausforderung:
Eingabe: Liste der falschen Gleichungen mit korrekten Ergebnissen.
Ausgabe: Die beiden Tasten, die getauscht werden.
Zum Beispiel:
Eine Eingabe könnte sein:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Für welche sind die erwarteten Ergebnisse: 2
und *
.
Warum? Weil ALLE Gleichungen korrekt wären, wenn wir die 2er und *er vertauschen würden:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Herausforderungsregeln:
- Die Eingabe kann in jedem vernünftigen Format erfolgen. Kann eine einzelne Zeichenfolge mit Leerzeichen sein. eine String-Liste oder -Anordnung; eine Liste mit Gleichungen und eine andere Liste mit den richtigen Ergebnissen. Ihr Anruf. Bitte geben Sie an, welches Eingabeformat Sie verwendet haben!
HINWEIS: Dies bedeutet auch, dass Sie den Testfall-5--15
als-5- -15
oder eingeben dürfen-5 - -15
. Eine Zahl, die zu führt,--
sollte jedoch entweder ohne Leerzeichen oder mit einem Leerzeichen zwischen jeder Ziffer eingegeben werden. So kann der Testfall9119
wie9119
oder eingegeben werden9 1 1 9
(Grund91 19
nicht erlaubt ist, weil Sie sich dann durch den Ort zum Finden leiten lassen können- -
). Leerzeichen sind also (etwas) optional und erlaubt. - Das Ausgabeformat kann ebenfalls in jedem vernünftigen Format vorliegen. Kann aus zwei Zeichen bestehen. eine einzelne zweistellige Zeichenfolge; eine String-Liste mit den beiden Zeichen. Ihr Anruf. Bitte geben Sie noch einmal an, welches Ausgabeformat Sie verwendet haben!
- Sie können 14 verschiedene Ausgänge verwenden, denen Sie zugeordnet sind
0123456789+-*/
. Sie können also sogar zwei verschiedene Ganzzahlen ausgeben, wenn Sie dies möchten (geben Sie gegebenenfalls erneut das verwendete Mapping an). - Sie müssen nur ganze Zahlen unterstützen. Es wird also keine Testfälle wie
1/8=0.125
oder geben1/8=0
. - Arithmetische Operanden, die Sie unterstützen müssen: addition (
+
); Subtraktion (-
); Multiplikation (*
oder×
oder·
); Abteilung (/
oder÷
). (HINWEIS: Zeichen in Klammern werden nur zur Verdeutlichung hinzugefügt.) - Sie müssen negative Zahlen unterstützen. Dieses Mittel
-
kann in der Gleichung sowohl als mathematischer Operand als auch als negativer Indikator interpretiert werden. - Sie können annehmen, dass die angegebenen falschen Gleichungen und die angenommenen korrekten Gleichungen immer gültig sind (es wird also keine Dinge wie
4-/2
oder geben9+-+8
). - Die falschen Eingangsgleichungen können eine Division durch 0 enthalten, aber die korrigierten und erwarteten Gleichungen enthalten niemals eine Division durch 0.
- Die falschen Eingabe-Gleichungen können bereits richtig sein, auch wenn Sie die beabsichtigten Schaltflächen zurücktauschen.
- Eine gegebene Eingang Gleichung kann für die Tasten zu tauschen (wie das irrelevant sein
4+4=8
und9/3=3
Gleichungen, mit den Tasten ausgelagert2
und*
). - Sie können davon ausgehen, dass für die angegebenen Testfälle immer nur ein Swap möglich ist.
- Beide zu tauschenden Schaltflächen sind immer in mindestens einer der falschen Gleichungen vorhanden.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
Testfälle:
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 -
--
. Zum Beispiel 1991 = 2, -/3 = 3
. (In vielen Sprachen wird dies mit dem Dekrementierungsoperator verwechselt.)
91 19
wenn die Lösung vorhanden ist, 9--9
und kein Leerzeichen in, 9119
wenn die Lösung vorhanden ist 9229
, Kenntnisse über die Lösung beim Erstellen der Testfälle erfordert. Wenn dies erlaubt wäre, könnte ich einfach nur ein Leerzeichen vor den ausgetauschten Zeichen einfügen und die Lösung könnte sofort aus dem Testfall abgeleitet werden.
*
und /
vor +
und binär -
?