¿Conoces alguna forma de obtener el elemento k-ésimo de la combinación m-elemento en O (1)? La solución esperada debería funcionar para cualquier tamaño de datos de entrada y cualquier valor m.¿Es posible obtener el elemento k-ésimo de la combinación m-carácter-longitud en O (1)?
Me explico este problema por ejemplo (código Python):
>>> import itertools
>>> data = ['a', 'b', 'c', 'd']
>>> k = 2
>>> m = 3
>>> result = [''.join(el) for el in itertools.combinations(data, m)]
>>> print result
['abc', 'abd', 'acd', 'bcd']
>>> print result[k-1]
abd
Para una de datos dado el k-ésimo (2-nd en este ejemplo) elemento de combinación m-elemento es abd. ¿Es posible ese valor (abd) sin crear toda la lista combinatoria?
He preguntado porque tengo datos de ~ 1,000,000 de caracteres y es imposible crear una lista combinatoria de longitud de m completo para obtener el elemento k-ésimo.
La solución puede ser un pseudo código, o un enlace en la página que describe este problema (desafortunadamente, no encontré ninguno).
Gracias!
Para hacer esto, necesita un orden bien definido para las combinaciones. –