Inspirado (con la explicación robada) esto
Antecedentes
Digamos que tiene dos listas A = [a_1, a_2, ..., a_n]y B = [b_1, b_2, ..., b_n]de enteros. Decimos que Aes potencialmente divisible por Bsi hay una permutación de Beso que hace a_idivisible por b_ipara todos i. El problema es entonces: ¿es posible reordenar (es decir, permutar) de Bmodo que a_isea divisible por b_ipara todos i? Por ejemplo, si tienes
A = [6, 12, 8]
B = [3, 4, 6]
A continuación, la respuesta sería True, como Bpueden ser reordenados B = [3, 6, 4]y entonces tendríamos que a_1 / b_1 = 2, a_2 / b_2 = 2y a_3 / b_3 = 2, todos los cuales son números enteros, por lo que Aes potencialmente divisible por B.
Como un ejemplo que debería generar False, podríamos tener:
A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]
La razón Falsees que no podemos reordenar Bya que 25 y 5 están dentro A, pero el único divisor en Bsería 5, por lo que uno quedaría fuera.
Tu tarea
Obviamente, su tarea es determinar si dos listas (dadas como entrada) son potencialmente divisibles. Puede tomar la entrada de cualquier manera aceptada, como con la salida.
Los duplicados en las listas son una posibilidad, y las únicas restricciones de tamaño en los enteros son su idioma. Todos los enteros en ambas listas serán mayores que 0, y ambas listas serán del mismo tamaño.
Como con todos los problemas de decisión, los valores de salida deben ser 2 valores distintos que representen verdadero y falso.
Este es un código de golf, ¡el código más corto gana!
Casos de prueba
Input, input => output
[6, 12, 8], [3, 4, 6] => True
[10, 5, 7], [1, 5, 100] => False
[14, 10053, 6, 9] [1,1,1,1] => True
[12] [7] => False
[0, 6, 19, 1, 3] [2, 3, 4, 5, 6] => undefined
fuente

Respuestas:
Jalea , 5 bytes
Devuelve 0 para Verdadero , 1 para Falso .
Pruébalo en línea!
Cómo funciona
fuente
Casco ,
765 bytesGuardado 2 bytes gracias a @Zgarb
Toma los argumentos en orden inverso y devuelve
1porTruey0paraFalse.Pruébalo en línea!
Explicación
fuente
VΠMz¦Pdebería funcionar para 6 bytes.Mzpuede ser‡.▼▲lugar de▲▼. Buena idea en cualquier caso!05AB1E , 7 bytes
Entrada: toma las listas B y A (orden inverso)
Salida: 1 cuando es verdadero, 0 de lo contrario
Pruébalo en línea!
Explicaciones:
fuente
MATL ,
876 bytes1 byte apagado usando una idea de la respuesta de Dennis 'Jelly
Las entradas son
B, entoncesA. La salida es0si es divisible o1si no.Pruébalo en línea!
Explicación
fuente
Mathematica, 52 bytes
gracias @ngenisis por -5 bytes
fuente
Caseses generalmente más corto:Cases[Permutations@#2,p_/;And@@IntegerQ/@(#/p)]!={}&JavaScript (ES6),
6763 bytesDevuelve un booleano.
Casos de prueba
Mostrar fragmento de código
fuente
Haskell ,
7974686261 bytesPruébalo en línea!
Guardado 1 byte gracias a @nimi
fuente
f a=any((<1).sum.zipWith rem a).permutations.R + combinat ,
696658 bytes-3 bytes gracias a Jarko Dubbeldam
otro -8 bytes gracias a Jarko
Curiosamente, R no tiene un generador incorporado para generar todas las permutaciones. Devuelve un booleano.
Además, con la segunda mejora de Jarko,
anyobliga la lista a un vector delogicalcon una advertencia.Pruébalo en línea! (violín r)
fuente
Mathematica, 42 bytes
fuente
Jalea , 7 bytes
Pruébalo en línea!
Complejidad factorial en la longitud de la lista.
fuente
anyincorporado? TILPyth - 11 bytes
Test Suite .
fuente
J, 27 bytes
Pruébalo en línea!
Toma la primera lista como el argumento izquierdo y la segunda lista como el derecho.
fuente
(|"1~e.~0*[)i.@!@#A.]CJam,
2017 bytesVersión de prueba
Función que toma la matriz B como primer argumento y la matriz A como segundo argumento. Tenga en cuenta que en la versión de prueba cambio el orden a A y luego a B.
fuente
JavaScript (ES6), 100 bytes
Algo ineficiente; un extra
&lo aceleraría.fuente
PHP,
112 180178 bytesEstaba pensando demasiado corto.
La función anónima toma dos matrices, devuelve
NULLfalso y1verdadero.Lanza un error si la segunda matriz contiene
0.Pruébalo en línea .
fuente
$f([6,5],[3,5]).C (gcc) , 191 bytes
Pruébalo en línea!
Uso:
f(int size, int size, int *a, int *b)devuelve
1si es divisible, de lo0contrario. Ver ejemplo de uso en TIO.(Tengo que hacer permutaciones de la manera difícil en C, por lo que esto no es competitivo)
fuente
Perl 6 , 38 bytes
En realidad, la respuesta de @ nwellnhof parece ser demasiado legible, así que me propuse seguir la excelente tradición de Perl de código de solo escritura :—).
1 byte guardado gracias a @nwellnhof.
Pruébalo en línea!
Qué hace: es una función anónima que toma dos argumentos de lista. Cuando decimos
@^a, nos referimos al primero, cuando@^b, es el segundo.(@^a,)es una lista que contiene la lista@^a.@^b.permutationses la lista de todas las permutaciones de@^b. El operador "XZ %%" hace todos los pares posibles de esa lista a la izquierda y todas las permutaciones a la derecha, y usa el operador "Z %%" en ellos, que es la operación estándar "zip" usando el operador de divisibilidad %%.El
maxoperador proporciona el elemento más grande de la lista (en este caso, es la lista que tiene másTrue's'). Luego lo reducimos usando el operador lógico AND para ver si todos los elementos de esa lista "más verdadera" son verdaderos, y ese es el resultado. Es una copia casi exacta de lo que escribió @nwellnhof, simplemente usando operadores oscuros para recortar bytes.fuente
permutations, claramente es demasiado legible;)[&&]conminpara guardar otro byte.XZ%%{all (@^a,)Z%%@^b.permutations.any}fuera posibleBrachylog , 6 bytes
Pruébalo en línea!
The predicate succeeds if the two lists are potentially divisible and fails if they are not.
fuente
Python 2, 92 bytes
Try it online!
Yer basic implementation.
fuente
Python 2, 90 bytes
Try it online!
fuente
Ruby, 56 bytes
Try it online!
Fairly straightforward, exploits the fact that
permutationexists.fuente
Scala, 60 Bytes
Golfed:
Ungolfed:
fuente
Japt,
1211 bytesOutputs
trueorfalse.Test it
Explanation
Implicit input of arrays
U&V(A&B, respectively)Generate an array of all permutations of
V.Check if any of the elements (sub-arrays) return true.
Check if every element in the current sub-array returns true when passed through the following function, with
Xbeing the current element andYthe current index.Get the element in
Uat indexY.Check if it's divisible by
X.fuente