Wprowadzenie
Rozważ następujący przykład:
CODE
+ GOLF
——————
GREAT
Jest to równanie, w którym każda litera reprezentuje cyfrę dziesiętną, a słowa reprezentują liczby naturalne (podobne litery reprezentują podobne cyfry, a różne litery reprezentują różne cyfry). Zadaniem jest dopasowanie każdej litery do jej wartości cyfrowej, aby równanie było prawidłowe. Jednym z rozwiązań powyższego równania jest:
9265
+ 1278
——————
10543
Twoje zadanie
Twoim zadaniem jest napisanie programu lub funkcji, która może rozwiązać takie równania, jak pokazano powyżej.
Wejście
Dane wejściowe to ciąg znaków w następującym formacie:
[A-Z]+\+[A-Z]+=[A-Z]+
Przykład:
CODE+GOLF=GREAT
AA+BB=CC
Spacje są pomijane i będą używane tylko litery pomiędzy dużymi literami A i Z (bez specjalnych lub małych liter).
Ciąg ten można odczytać ze standardowego wejścia, z pliku lub jako parametr funkcji.
Wynik
Dostępne są następujące dwie opcje formatu wyjściowego:
- oryginalne równanie z podstawionymi cyframi
- lista liter i ich wartości
Jeśli istnieje wiele rozwiązań, należy zwrócić dowolne (ale tylko jedno) z nich. Jeśli nie ma rozwiązań, program powinien zwrócić pusty ciąg lub wartość null. Dane wyjściowe można zwrócić jako ciąg znaków, można zapisać na standardowym wyjściu lub w pliku.
Przykład:
9265+1278=10543
A=1 B=2 C=3
(możesz użyć dowolnego ogranicznika)
Zasady
- Aby ułatwić sprawę, liczby zaczynają się od 0, ale możesz traktować liczby z wiodącym 0 jako nieprawidłowe rozwiązania, to zależy od Ciebie
- Podobne litery reprezentują podobne cyfry, a różne litery reprezentują różne cyfry
- Możesz użyć dowolnego języka i standardowej biblioteki wybranego języka (bez zewnętrznych bibliotek)
- Nie możesz połączyć się z żadnymi zasobami w Internecie (dlaczego miałbyś tak robić?)
- To jest zadanie w golfa kodu, wygrywa najkrótszy kod. Kolejne białe znaki są liczone jako pojedynczy znak. (Tak więc każdy program napisany w białej spacji automatycznie wygrywa)
Mam dość hackerskie rozwiązanie, używając 179 znaków. Jeśli coś nie jest jasne, zapytaj mnie w komentarzach.
If there are no solutions, the program should return an empty string or null.
Nieskończone pętle nadal nic nie dają ... czy mogę?