Wprowadzenie
Mój kalkulator zachowuje się dziwnie. Czasami, gdy wpisuję 8, wyświetla się 2. A czasami, gdy wpisuję 6, wyświetla się +. Niektóre przyciski są pomieszane!
Czy ktoś mógłby mi pomóc ustalić, który?
Wyzwanie:
Dane wejściowe: lista niepoprawnych równań z poprawnymi wynikami.
Wyjście: dwa zamienione przyciski.
Na przykład:
dane wejściowe mogą być:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Dla których oczekiwane wyniki to: 2i *.
Czemu? Ponieważ WSZYSTKIE równania byłyby poprawne, gdybyśmy zamienili 2 i *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Zasady konkursu:
- Dane wejściowe mogą mieć dowolny rozsądny format. Może być pojedynczym ciągiem z ogranicznikiem spacji; lista ciągów lub tablica; lista z równaniami i inna lista z poprawnymi wynikami. Twoja decyzja. Proszę podać używany format wejściowy!
UWAGA: Oznacza to również, że możesz wprowadzić przypadek testowy-5--15jako-5- -15lub-5 - -15. Jednak wynikową liczbę--należy wprowadzić bez spacji lub ze spacją między każdą cyfrą. Tak więc przypadek testowy9119można wprowadzić jak9119lub9 1 1 9(powód91 19jest niedozwolony, ponieważ można następnie kierować się przestrzenią do znalezienia- -). Więc spacje są (nieco) opcjonalne i dozwolone. - Format wyjściowy może być również w dowolnym rozsądnym formacie. Mogą być dwie postacie; pojedynczy dwuznakowy ciąg; lista ciągów zawierająca dwa znaki. Twoja decyzja. Ponownie, proszę podać używany format wyjściowy!
- Możesz używać dowolnych 14 wyjściowych mapowań
0123456789+-*/. Więc możesz nawet wypisać dwie różne liczby całkowite, jeśli chcesz (ponownie, proszę podać zastosowane mapowanie, jeśli istnieje). - Musisz tylko obsługiwać liczby całkowite. Więc nie będzie żadnych przypadków testowych takich jak
1/8=0.125lub1/8=0. - Operandy arytmetyczne, które będziesz musiał obsługiwać: add (
+); odejmowanie (-); mnożenie (*lub×lub·); podział (/lub÷). (UWAGA: Znaki między nawiasami są dodawane jedynie jako wyjaśnienie). - Będziesz musiał obsługiwać liczby ujemne. Środki
-te można interpretować w równaniu jako zarówno argument matematyczny, jak i wskaźnik ujemny. - Można założyć, podane nieprawidłowe równań i rzekome poprawne równania są zawsze aktualne (więc nie będzie rzeczy, jak
4-/2i9+-+8na przykład). - Niepoprawne równania wejściowe mogą zawierać podział przez 0, ale poprawione i oczekiwane równania nigdy nie będą zawierać podziału przez 0.
- Niepoprawne równania wejściowe mogą już być poprawne, nawet jeśli zamienisz zamierzone przyciski z powrotem.
- Dany równanie wejściowy może być istotne dla przycisków do wymiany (jak
4+4=8i9/3=3równań, z zamienione przycisków2i*). - Możesz założyć, że zawsze będzie tylko jedna możliwa zamiana, którą można wykonać dla danych przypadków testowych.
- Oba przyciski zamiany będą zawsze obecne w co najmniej jednym z niepoprawnych równań.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
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 -
--. Na przykład 1991 = 2, -/3 = 3. (Wiele języków myli to z operatorem dekrementacji.)
91 19przypadku rozwiązania 9--9i brak spacji w 9119przypadku rozwiązania 9229wymaga wiedzy na temat rozwiązania podczas tworzenia przypadków testowych. Gdyby to było dozwolone, mógłbym po prostu dodać spację tylko przed zamienionymi znakami, a rozwiązanie mogłoby zostać natychmiast uzyskane z przypadku testowego.
*i /przed +i binarnym -?