Opiera się na grze, w którą grał mój nauczyciel matematyki w gimnazjum. Napisał na planszy 5 losowych jednocyfrowych liczb, a następnie losową dwucyfrową liczbę. Staramy się stworzyć równanie, w którym wszystkie 5 liczb jednocyfrowych daje dwucyfrową liczbę. Oto kilka przykładów rozwiązań pozwalających lepiej to wyjaśnić:
Input: Solution:
7 5 4 8 4 34 5*8-7+4/4 = 34
3 1 5 7 6 54 (7+3)*6-5-1 = 54
3 9 2 1 6 87 9*(2+1)*3+6 = 87
2 1 6 9 7 16 (9-7+6*1)*2 = 16
2 4 5 8 6 96 8*(5+6)+2*4 = 96
3 8 4 5 4 49 8*(4+4)-3*5 = 49
Wyzwaniem jest napisanie programu, który może generować takie równania dla danych wejściowych. Dane wejściowe można podać za pomocą wiersza polecenia lub monitu. 5 liczb jednocyfrowych zawsze będzie wprowadzanych jako pierwsze (w określonej kolejności), a następnie dwucyfrowa liczba. Następnie program wydrukuje znalezione równanie rozwiązania; nie musisz radzić sobie z sytuacjami, w których nie ma rozwiązania. Funkcja musi być zdolna do użycia w równaniu następujących operacji: dodawanie, odejmowanie, mnożenie i dzielenie. Jeśli chcesz zezwolić na dodatkowe podstawowe operacje, to dobrze, o ile pozostają w duchu wyzwania (negacja, potęgowanie i moduł byłyby miłymi dodatkami). Kolejność operacji jest zgodna ze standardowymi regułami matematycznymi, więc nawiasy będą potrzebne do grupowania.
Programy będą oceniane na podstawie długości kodu (w tym wymaganej spacji). Uwaga: podział musi być dokładny, nie może być zaokrąglany ani obcinany do najbliższej liczby całkowitej.