1 votos

Encontrar el elemento N en una lista de todos los números posibles

Esta es una extensión de mi pregunta encontrada aquí :

Dado un cierto número de dígitos, cada uno de los cuales tiene un rango especificado de 1 a algún número, cuál sería el Nº elemento de la lista de todas las permutaciones de los mismos encontradas modificando primero los dígitos más internos.

Por ejemplo, dados 3 dígitos, el primero con un rango de [1..3], el segundo con [1..2] y el tercero con [1..4], la lista sería

1 1 1
1 1 2
1 1 3
1 1 4
1 2 1
1 2 2
1 2 3
1 2 4
2 1 1
2 1 2
2 1 3
 ...

¿Cómo encontrarías el Nº elemento de este tipo de conjuntos? A la inversa, dado un número, ¿cómo encontrarías la posición en este conjunto?

2voto

MiniQuark Puntos 8927

Dejemos que $S$ sea la lista del número de valores posibles para cada posición de la lista , y sea $n$ sea la posición en la lista. Sea $i$ sea la longitud de los elementos de la lista inicialmente. El proceso para obtener el elemento es: $q = n/(prod_{x=0}^{i}S_i)$

$n = n\bmod prod_{x=0}^{i}S_i+1$

$i = i-1$

Y cada valor sucesivo de $n$ es el $i$ dígito del elemento.

Dado un elemento la posición es $\sum_{x=0}^{\text{length of the elements of the list}}\prod_{x=0}^{i}\times(\text{xth digit of the element from left to right}-1)$

Básicamente, este problema es un caso degenerado (un caso general) de conversión en bases, excepto que el 1 se utiliza para el 0, el 2 para el 1, (por lo que 1111 en esta lista se asignaría a 0000), etc. Pronto publicaré una prueba. No estoy seguro de que sea correcta; lo comprobaré más tarde. También la salida/entrada podría estar indexada en cero (empezando por cero).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X