Este es un seguimiento de las matrices de recuento que hacen conjuntos únicos . La diferencia significativa es la definición de unicidad.
Considere una variedad Ade longitud n. La matriz contiene solo enteros positivos. Por ejemplo A = (1,1,2,2). Definamos f(A)como el conjunto de sumas de todos los subconjuntos contiguos no vacíos de A. En este caso f(A) = {1,2,3,4,5,6}. Los pasos para producir f(A) son los siguientes:
Las submatrices de Ason (1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2). Sus sumas respectivas son 1,1,2,2,2,3,4,4,5,6. El conjunto que obtienes de esta lista es por lo tanto {1,2,3,4,5,6}.
Llamamos a una matriz A única si no hay otra matriz Bde la misma longitud que f(A) = f(B), excepto por la matriz Ainvertida. Como ejemplo, f((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}pero no hay otra matriz de longitud 3que produzca el mismo conjunto de sumas.
Tarea
La tarea, para un dado ny ses contar el número de matrices únicas de esa longitud. Puede suponer que sestá entre 1y 9. Solo necesita contar matrices donde los elementos son un número entero dado so s+1. Por ejemplo, si s=1las matrices que está contando solo contienen 1y 2. Sin embargo, la definición de unicidad es con respecto a cualquier otra matriz de la misma longitud. Como ejemplo concreto no[1, 2, 2, 2] es único, ya que da el mismo conjunto de sumas que .[1, 1, 2, 3]
Debe contar el reverso de una matriz, así como la matriz misma (siempre que la matriz no sea un palíndromo, por supuesto).
Ejemplos
s = 1, las respuestas para n = 2,3,4,5,6,7,8,9 son:
4, 3, 3, 4, 4, 5, 5, 6
Para s = 1, las matrices únicas de longitud 4 son
(1, 1, 1, 1)
(2, 1, 1, 2)
(2, 2, 2, 2)
s = 2, las respuestas para n = 2,3,4,5,6,7,8,9 son:
4, 8, 16, 32, 46, 69, 121, 177
Un ejemplo de una matriz que no es única con s = 2es:
(3, 2, 2, 3, 3, 3).
Tiene el mismo conjunto de sumas que ambas: (3, 2, 2, 2, 4, 3)y (3, 2, 2, 4, 2, 3).
s = 8, las respuestas para n = 2,3,4,5,6,7,8,9 son:
4, 8, 16, 32, 64, 120, 244, 472
Puntuación
Para un determinado n, su código debe generar la respuesta para todos los valores de sfrom 1a 9. Su puntaje es el valor más alto npara el cual esto se completa en un minuto.
Pruebas
Necesitaré ejecutar su código en mi máquina ubuntu, así que incluya las instrucciones más detalladas posibles sobre cómo compilar y ejecutar su código.
Tabla de clasificación
- n = 13 por Christian Sievers en Haskell (42 segundos)
s? ¿Que representa?