Esta pregunta tiene una configuración similar para encontrar una matriz que se ajuste a un conjunto de sumas, aunque es bastante diferente en sus objetivos.
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), a excepción de 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.
Solo consideraremos matrices donde los elementos son un entero dado so s+1. Por ejemplo, si s=1las matrices solo contendrían 1y 2.
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.
No debe contar el reverso de una matriz ni la matriz misma.
Ejemplos
s = 1, la respuesta es siempre n+1.
s = 2, las respuestas que cuentan desde n = 1arriba son:
2,3,6,10,20,32,52,86
s = 8, las respuestas que cuentan desde n = 1arriba son:
2,3,6,10,20,36,68,130
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 = 24 por Anders Kaseorg en Rust (34 segundos)
- n = 16 por Ourous en Clean (36 segundos)
- n = 14 por JRowan en Common Lisp (49 segundos)