Listas cíclicamente autodescriptivas
Una lista de enteros positivos se autodescribe cíclicamente , si se cumplen las siguientes condiciones.
- no está vacío.
- El primer y último elemento de son diferentes.
- Si divide en ejecuciones de elementos iguales, el elemento de cada ejecución es igual a la longitud de la próxima ejecución, y el elemento de la última ejecución es igual a la longitud de la primera ejecución.
Por ejemplo, considere . No está vacío, y el primer y el último elemento son diferentes. Cuando lo dividimos en carreras, obtenemos .
- La primera ejecución es una ejecución de s, y la longitud de la siguiente ejecución, , es 1 .
- La segunda ejecución es una ejecución de s, y la duración de la siguiente ejecución, , es .
- La tercera ejecución es una ejecución de s, y la duración de la siguiente ejecución, , es .
- La cuarta ejecución es una ejecución de s, y la duración de la siguiente ejecución, , es .
- Finalmente, la última ejecución es una ejecución de s, y la duración de la primera ejecución, , es .
Esto significa que es una lista cíclicamente autodescriptiva.
Para un no ejemplo, la lista no se autodescribe cíclicamente, ya que una serie de s es seguida por una serie de longitud . La lista tampoco se autodescribe cíclicamente, ya que la última ejecución es una ejecución de s, pero la primera ejecución tiene una longitud de .
La tarea
En este desafío, su entrada es un número entero . Su salida será el número de listas cíclicamente autodescriptivas cuya suma es igual a . Por ejemplo, debería dar como resultado , ya que las listas autodescriptivas cíclicas cuya suma es son , , y . El conteo de bytes más bajo gana, y se aplican otras reglas estándar de código de golf .
Estos son los valores de salida correctos para las entradas de a :
1 -> 0
2 -> 0
3 -> 0
4 -> 2
5 -> 0
6 -> 2
7 -> 0
8 -> 4
9 -> 0
10 -> 6
11 -> 6
12 -> 12
13 -> 0
14 -> 22
15 -> 10
16 -> 32
17 -> 16
18 -> 56
19 -> 30
20 -> 96
21 -> 56
22 -> 158
23 -> 112
24 -> 282
25 -> 198
26 -> 464
27 -> 364
28 -> 814
29 -> 644
30 -> 1382
31 -> 1192
32 -> 2368
33 -> 2080
34 -> 4078
35 -> 3844
36 -> 7036
37 -> 6694
38 -> 12136
39 -> 12070
40 -> 20940
41 -> 21362
42 -> 36278
43 -> 37892
44 -> 62634
45 -> 67154
46 -> 108678
47 -> 118866
48 -> 188280
49 -> 209784
50 -> 326878
n,1,...,1
, y cada número impar mayor que 13 se puede obtener concatenando3,2,2,2,1,1
a un número par. La prueba de que 13 es imposible se deja como un ejercicio para el lector.Respuestas:
Haskell , 75 bytes
¡Gracias Ørjan por guardar un byte!
Pruébalo en línea!
El problema es equivalente a:
¿De cuántas maneras se puede escribirn como ∑ki=0aiai+1 con ai∈N,ai≠ai+1,a0=ak
fuente
Jalea , 18 bytes
Pruébalo en línea!
Idea: cada lista de autodescripción cíclica se puede describir como una lista de valores para cada bloque, y podemos deducir las longitudes de los valores. Tenga en cuenta que dos valores adyacentes deben ser diferentes. Por supuesto, puede haber como máximo
n
bloques y la longitud de cada bloque es como máximon
.fuente
Haskell,
118105103 bytesEditar: -13 bytes gracias a @ Ørjan Johansen, -2 bytes gracias a @ H.PWiz
Pruébalo en línea!
fuente
(i#d)n
->i#d$n