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 SS sea la lista del número de valores posibles para cada posición de la lista , y sea nn sea la posición en la lista. Sea ii sea la longitud de los elementos de la lista inicialmente. El proceso para obtener el elemento es: q=n/(prodix=0Si)q=n/(prodix=0Si)

n=nmodprodix=0Si+1n=nmodprodix=0Si+1

i=i1i=i1

Y cada valor sucesivo de nn es el ii dígito del elemento.

Dado un elemento la posición es length of the elements of the listx=0ix=0×(xth digit of the element from left to right1)length of the elements of the listx=0ix=0×(xth digit of the element from left to right1)

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