Un conjunto de diferencias cíclicas es un conjunto de enteros positivos con una propiedad única:
- Deje
nser el número entero más grande del conjunto. - Sea
rcualquier número entero (no necesariamente en el conjunto) mayor que 0 pero menor o igual quen/2. - Deje
kser el número de soluciones para(b - a) % n = rdóndeaybson miembros del conjunto. Cada solución es un par ordenado(a,b). (También tenga en cuenta que esta versión del módulo hace que los números negativos sean positivos al agregarlen, a diferencia de las implementaciones en muchos idiomas). - Finalmente, si y solo si este es un conjunto de diferencias cíclicas, el valor de
kno depende de su elecciónr. Es decir, todos los valores derdan el mismo número de soluciones a la congruencia anterior.
Esto se puede ilustrar con el siguiente ejemplo:
Cyclic difference set: {4,5,6,8,9,11}
0 < r <= 11/2, so r = 1,2,3,4,5
r=1: (4,5) (5,6) (8,9)
r=2: (4,6) (6,8) (9,11)
r=3: (5,8) (6,9) (8,11)
r=4: (4,8) (5,9) (11,4) since (4-11)%11=(-7)%11=4
r=5: (4,9) (6,11) (11,5)
Cada valor de rtiene el mismo número de soluciones, 3 en este caso, por lo que este es un conjunto de diferencias cíclicas.
Entrada
La entrada será una lista de enteros positivos. Como se trata de una propiedad establecida, suponga que la entrada no está ordenada. Puede suponer que nes al menos 2, aunque kpuede ser cero.
Salida
Su programa / función debería generar un valor verdadero si el conjunto es un conjunto de diferencia cíclica, o un valor falso de lo contrario.
Casos de prueba
Conjuntos de diferencia cíclica válidos:
10,12,17,18,21
7,5,4
57,1,5,7,17,35,38,49
1,24,35,38,40,53,86,108,114,118,135,144,185,210,254,266,273
16,3,19,4,8,10,15,5,6
8,23,11,12,15,2,3,5,7,17,1
( fuente de datos , aunque su convención es diferente)
Conjuntos de diferencia cíclica no válidos:
1,2,3,4,20
57,3,5,7,17,35,38,49
3,4,5,9
14,10,8
code-golf
number
decision-problem
number-theory
PhiNotPi
fuente
fuente

aybser el mismo miembro (no necesariamentea ≠ b)?byason el mismo número, entonces(b-a)%n = 0, pero 0 no es uno de los valores para los que está buscando soluciones. Por lo tanto, no existe una prohibición explícita de que sean el mismo número, pero nunca lo serán.7 7 7fuera una entrada no válida. Un conjunto no repite valores7 7 7fue solicitado por otro usuario, pero lo eliminé porque no es un conjunto.rpor0 < r <= max(input)/2, pero en su lugar0 < r < max(input), ya que podemos obtenerr > max(input)/2de los casos con sólo girar la sustracción der <= max(input)/2los casos.Respuestas:
Jalea ,
147 bytesPruébalo en línea!
Cómo funciona
fuente
Casco , 13 bytes
Pruébalo en línea!
Los tres superíndices 1 parecen un desperdicio ...
Explicación
fuente
Wolfram Language (Mathematica) ,
5352 bytesPruébalo en línea!
Tenga en cuenta, que no es necesario dividir el elemento máximo por dos debido a la simetría (podemos hacer un recuento de todos los modulos
1amax(input) - 1).Explicación
Tome todas las permutaciones de longitud 2 de la entrada.
Encuentra las diferencias de cada
Modifique el resultado por el elemento máximo de la entrada.
Encuentra las frecuencias de cada elemento.
Devuelve si todos los números son iguales.
fuente
Pitón 3 ,
868481 bytes-3 bytes gracias a JungHwan Min
Pruébalo en línea!
fuente
JavaScript (ES6), 87 bytes
Devuelve 0 o 1 .
Casos de prueba
Mostrar fragmento de código
fuente
Perl,
686766 bytesIncluye
+2paraapfuente
Python 3 , 74 bytes
Pruébalo en línea!
fuente
Ruby , 81 bytes
Pruébalo en línea!
Sin golf:
fuente
Haskell, 84 bytes
l es la función que hace la verificación. Simplemente calcula todas las diferencias y cuenta.
fuente
leten un patrón protector en lugar de guardarwhereun byte: ¡ Pruébelo en línea!