Widzę wasze BOŻE NARODZENIA i przynoszę wam BADMIS
Wyzwanie
Biorąc pod uwagę zestaw liczb z operatorami między nimi: „5 + 4 * 9/3 - 8”, zwracaj wszystkie możliwe wyniki wyrażenia dla każdej permutacji rzędu podstawowych operacji: [/, *, +, -].
Zasady
- Standardowe luki zabronione
- I / O
- Dane wejściowe należy porządkować za pomocą operacji na poprawki, ale jest to najłatwiejsze (ciąg lub tablica)
- Nie musisz obsługiwać jednoargumentowych operatorów (np. „-3 * 8 / +2”)
- Liczby całkowite można zastąpić liczbami zmiennoprzecinkowymi dla języków, które domyślnie analizują typ (np. 45 ⟶ 45,0)
- Dane wyjściowe muszą zawierać wszystkie możliwe wyniki wyrażenia, bez określonego formatu lub kolejności
- Wszystkie dane wejściowe są prawidłowe (np. Nie trzeba zajmować się „7/3 + *”). Oznacza to również, że nigdy nie będziesz musiał dzielić przez zero.
- Wszyscy operatorzy są lewostronni, więc „20/4/2” = „(20/4) / 2”
- To jest Code Golf, więc najmniej wygranych bajtów
Przypadki testowe (z wyjaśnieniem)
- „2 + 3 * 4” = [14, 20]
- 2 + (3 * 4) ⟶ 2 + (12) ⟶ 14
- (2 + 3) * 4 ⟶ (5) * 4 ⟶ 20
- „18/3 * 2–1” = [11, 2, 6]
- ((18/3) * 2) - 1 ⟶ ((6) * 2) - 1 ⟶ (12) - 1 ⟶ 11
- (18/3) * (2-1) ⟶ (6) * (1) ⟶ 6
- (18 / (3 * 2)) - 1 ⟶ (18 / (6)) - 1 ⟶ (3) - 1 ⟶ 2
- 18 / (3 * (2-1)) ⟶ 18 / (3 * (1)) ⟶ 6
- 18 / ((3 * 2) - 1) ⟶ 18/5 ⟶ 3.6
Przypadki testowe (bez wyjaśnienia)
- „45/8 + 19/45 * 3” = [6.891666666666667, 18.141666666666666, 0,11111111111111113, 0,01234567901234568, 0,01234567901234568, 5,765740740740741]
- „2 + 6 * 7 * 2 + 6/4” = [112 196 23 87,5]
code-golf
permutations
Freddie R.
źródło
źródło
2 - 3 + 4
=>[-5, 3]
2*3-6+2-9/6*8+5/2-9
daje 24 wyraźne wyniki.Odpowiedzi:
JavaScript (V8) ,
118112 bajtówDrukuje wyniki.
Wypróbuj online!
Lub zobacz deduplikowane wyniki .
źródło
C # (interaktywny kompilator Visual C #) , 285 bajtów
Wypróbuj online!
źródło
JavaScript (Node.js) , 132 bajty
Wypróbuj online!
Pozwala to na zduplikowane wyjścia.
JavaScript (Node.js) ,
165161155153152137 bajtówWypróbuj online!
Pobiera ciąg znaków ze spacjami między operatorami a liczbami.
źródło
[3, -5]
teraz.Perl 6 ,
92 9088 bajtówWypróbuj online!
Pobiera ciąg ze spacją po dowolnym operatorze i zwraca zestaw liczb. Działa to głównie poprzez zastąpienie wszystkich wystąpień
n op n
ewaluowanym wynikiem wszystkich permutacji operatorów.Wyjaśnienie:
źródło
set
, ponieważ warunek wyeliminowania duplikatów został usunięty. Niezły kod.Python 3 , 108 bajtów
Wypróbuj online!
Funkcja przyjmuje pojedynczy ciąg znaków jako dane wejściowe i zwraca listę możliwych wyników.
Nie golfił
Wypróbuj online!
źródło
Galaretka , 30 bajtów
Wypróbuj online!
Para linków. Drugi jest głównym łączem i przyjmuje jako argument galaretową listę liczb zmiennoprzecinkowych / liczb całkowitych przeplatanych operatorami jako znakami. Jest to spłaszczona wersja sposobu, w jaki Jelly pobiera dane wejściowe po uruchomieniu jako pełny program z argumentami wiersza poleceń. Zwracana wartość łącza to lista list pojedynczych elementów członkowskich, z których każda jest możliwą wartością wyrażenia.
Wyjaśnienie
Link pomocnika
Pobiera listę liczb zmiennoprzecinkowych / całkowitych na przemian z operatorami (jako znakami) jako lewym argumentem i operatorem jako znakiem jako prawym argumentem; zwraca listę danych wejściowych po ocenie liczb oddzielonych przez odpowiedniego operatora, pracując od lewej do prawej.
Główny link
Pobiera listę liczb zmiennoprzecinkowych / całkowitych na przemian z operatorami (jako znaki)
źródło
Python 2 ,
182172 bajtyWypróbuj online!
Pobiera dane wejściowe z liczbami całkowitymi sformatowanymi jako zmiennoprzecinkowe, zgodnie z „Liczbami całkowitymi można zastąpić zmiennoprzecinkowymi dla języków, które domyślnie analizują typ”.
źródło
Julia 1.2 , 88 (82) bajtów
Pobiera taśmę w postaci wektora liczb i funkcji infiksowych, ocenia każde pojedyncze wywołanie funkcji i rekurencyjnie przekazuje każdą wynikową taśmę z powrotem do siebie, dopóki nie zostanie tylko jeden numer. Niestety,
get(t, (), ...)
nie działa poprawnie w Julii 1.0, więc potrzebna jest nowsza wersja.Można zapisać sześć bajtów, jeśli zbiór zagnieżdżonych tablic jest dopuszczalny jako wynik:
Wydajność:
źródło
Perl 5 (
-alp
), 89 bajtówTIO
lub wartości unikalne, 99 bajtów
źródło