Korzystając z naszych znanych symboli matematycznych: +, x, nawias i dowolna liczba wymierna, łatwo jest utworzyć wyrażenia, które zostaną ocenione na określoną liczbę. Na przykład 1+(2x3)=7, (1+2)+(3x6.5)=22.5i tak dalej. Nudno.
W tym wyzwaniem, użyjemy nowego operatora: ±. Zastosowanie ±w wyrażeniu oznacza, że trzeba ocenić ekspresję poprzez zastąpienie ±„s przez +lub -na wszystkie możliwe sposoby i powrót zbiór wszystkich możliwych wartości. Na przykład:
1±2±3 = {-4,0,2,6}ponieważ1±2±3może być dowolny1+2+3,1+2-3,1-2+3i1-2-3, a ich wartości są6,0,2,-4odpowiednio.(±2)x(2±3) = {-10,-2,2,10}z podobnych powodów.
Teraz, jak się okazuje, biorąc pod uwagę każdy zestaw różnych liczb rzeczywistych, to jest możliwe, aby utworzyć wyrażenie z +, x, (, ), ±, i liczbami rzeczywistymi, że ma wartość danego zestawu.
Zadanie
Twoim zadaniem jest napisanie programu lub funkcji w dowolnym języku, który zabierze sekwencję (lista / tablica / dowolny wygodny format) z liczb całkowitych i wyprowadza wyrażenie (jako ciąg) składający się z +, x, (, ), ±, i liczb wymiernych który ocenia na zbiór podanych liczb.
- Pamiętaj, że dokładny znak
±nie ma znaczenia; możesz użyć dowolnej innej postaci, o ile można ją odróżnić od innych używanych postaci. Musisz jednak wspomnieć, jakiej postaci używasz w swoim zgłoszeniu. - Dane wejściowe mogą składać się z przybliżeń dziesiętnych (do rozsądnej dokładności) użytych liczb wymiernych.
- Dane wejściowe i wyjściowe można pobierać na dowolny ze standardowych sposobów.
- Standardowe luki są zabronione.
- Możesz założyć, że podane liczby całkowite będą różne i podane w porządku rosnącym.
- Dane wyjściowe mogą zawierać spacje i znaki nowej linii.
Zwycięskie kryterium
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Przykłady
Wejście | Możliwe wyjście ------------- + ----------------------------- [1,2,3] | 2 ± 0,5 ± 0,5 [-7, -3,1,21] | (1 ± 2) x (3 ± 4)
Pomysł zaczerpnięty z pytania z Turnieju Miast, jesień 2015 .