Promedio de dos listas
Desafío
Dadas dos listas de enteros positivos, determine si es posible reorganizar los elementos en dos nuevas listas de modo que las nuevas listas tengan la misma media aritmética (promedio).
Entrada
La entrada se puede tomar a través de STDIN o como argumentos de función. La entrada se puede tomar como una lista, o si su idioma no admite listas (o algo similar, como matrices / diccionarios), la entrada se puede tomar como una cadena delimitada por comas o espacios. Es decir,
"1 4 8 2 5,3 1 5 2 5"
es lo mismo que:
[ [1,4,8,2,5], [3,1,5,2,5] ]
Todas las listas de entrada tendrán la misma longitud.
Salida
Si puede crear dos listas nuevas con el mismo promedio, su programa / función debería imprimir o devolver la media. Si no puede, su programa debería mostrar una cara triste :(
.
Tenga en cuenta que las listas reorganizadas con los mismos medios, si existen, no necesitan tener la misma longitud. Se puede realizar cualquier número de intercambios para crear las nuevas listas.
Ejemplos
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 -> :(
Este es el código de golf, por lo que el código más corto en bytes gana. Como siempre, las lagunas estándar no están permitidas.
fuente
Respuestas:
Pyth, 24 bytes
Pruébelo en línea: demostración
Gracias a Dennis por notar un error y jugar al golf un byte.
Explicación:
fuente
.O
)SWI-Prolog, 159 bytes
Llamado
a([1,4,8,2,5],[3,1,5,2,5]).
fuente
Julia, 101 bytes
Esto crea una función que acepta dos matrices y devuelve una cadena o un flotante en consecuencia.
Ungolfed + explicación:
fuente
R, 94 bytes
Básicamente lo mismo que Jakubes, creo. Si la media de ambas listas coincide con la media de cualquier combinación de los valores en las listas hasta la longitud combinada de la lista, pero sin incluirla, arroje la media, de lo contrario, la cara triste.
Prueba de funcionamiento
fuente
Jalea , 22 bytes
Pruébalo en línea!
Hecho con la ayuda del Sr. Xcoder en el chat
Explicación
fuente
2 6 2,6 3 5 -> 2 6,2 6 3 5 (moved 2) -> 4
. Ahora solo lo está dividiendo en dos partes de igual longitud.