De los comentarios de la pregunta, parece que esta es una pregunta de teoría de codificación: está buscando un código de detección de errores sobre un alfabeto de 10 caracteres con palabras de 10 caracteres de distancia mínima [matemática] d = 8 [/ matemática]. Ese es un problema bien estudiado. Este código Python genera una solución con 580 palabras, basada en un código [math] \ mathit {BCH} (10, 3, 8) [/ math] sobre [math] \ mathbb F_ {11} [/ math].
from itertools import product for w in product(*([range(11)] * 3)): for i in range(1, 8): w = tuple((b - 2**i * a) % 11 for a, b in zip(w + (0,), (0,) + w)) if 10 not in w: print(w)
Desafortunadamente, esto todavía está bastante lejos de los 3.5 millones que quería, pero no puede hacerlo mucho mejor dadas las limitaciones. Los prefijos de 3 dígitos de cada palabra de código deben ser distintos, por lo que no puede haber más de 1000 palabras en el código.
- ¿Cómo demostramos que el algoritmo de codificación de Huffman es óptimo?
- ¿Por qué es importante el crossover en el algoritmo genético?
- ¿Qué es la búsqueda de fuerza bruta?
- ¿Qué es el algoritmo y cómo usarlo en la programación?
- ¿Cuál es tu recurso favorito para aprender sobre programación competitiva?