Średnia z dwóch list
Wyzwanie
Biorąc pod uwagę dwie listy dodatnich liczb całkowitych, określ, czy możliwe jest przestawienie elementów na dwie nowe listy, tak aby nowe listy miały tę samą średnią arytmetyczną (średnią).
Wejście
Dane wejściowe mogą być pobierane przez STDIN lub jako argumenty funkcji. Dane wejściowe można traktować jako listę lub jeśli Twój język nie obsługuje list (lub czegokolwiek podobnego, takiego jak tablice / słowniki), dane wejściowe można traktować jako ciąg znaków rozdzielany przecinkami lub spacjami. To jest,
"1 4 8 2 5,3 1 5 2 5"
jest taki sam jak:
[ [1,4,8,2,5], [3,1,5,2,5] ]
Wszystkie listy wejściowe będą tej samej długości.
Wynik
Jeśli możesz utworzyć dwie nowe listy z tą samą średnią, twój program / funkcja powinna wydrukować lub zwrócić średnią. Jeśli nie możesz, twój program powinien wywołać smutną minę :(
.
Pamiętaj, że uporządkowane listy z jednakowymi środkami, jeśli istnieją, nie muszą mieć tej samej długości. Można utworzyć dowolną liczbę zamian, aby utworzyć nowe listy.
Przykłady
1 4 8 2 5,3 1 5 2 5 -> 1 4 8 2 3,5 1 5 2 5 (swapped 3 and 5) -> 3.6
1 3 6 2,16 19 19 14 -> [[1,6,19,14],[3,2,16,19]] -> 10
2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4
90 80 20 1,40 60 28 18 -> :(
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach. Jak zawsze, standardowe luki są niedozwolone.
źródło
Odpowiedzi:
Pyth, 24 bajty
Wypróbuj online: demonstracja
Dzięki Dennisowi za zauważenie błędu i grę w jeden bajt.
Wyjaśnienie:
źródło
.O
)SWI-Prolog, 159 bajtów
Nazywany jako
a([1,4,8,2,5],[3,1,5,2,5]).
źródło
Julia, 101 bajtów
Tworzy to funkcję, która akceptuje dwie tablice i odpowiednio zwraca łańcuch lub liczbę zmiennoprzecinkową.
Niegolfowane + wyjaśnienie:
źródło
R, 94 bajtów
Zasadniczo tak samo jak Jakubes. Jeśli średnia z obu list odpowiada średniej dowolnej kombinacji wartości na listach, ale nie obejmuje łącznej długości listy, wyślij średnią w przeciwnym razie smutną twarz.
Testowe uruchomienie
źródło
Galaretka , 22 bajty
Wypróbuj online!
Zrobione z pomocą pana Xcodera na czacie
Wyjaśnienie
źródło
2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4
. Teraz dzielisz go tylko na dwie równe części.