[Desafío Abierto] Sucesiones y método extraño para contar

Avisos

Like Tree2Gracias
  • 1 Post By Jasón
  • 1 Post By Jasón
Tema cerrado
 
Herramientas Desplegado
  #1  
08/02/2018
Predeterminado [Desafío Abierto] Sucesiones y método extraño para contar

Música épica para animar



[Desafío Abierto]
Sucesiones y método extraño para contar


Hola a todos, estoy trabajando en un proyecto personal y pensé que podría incluírlos en esto. Su misión será encontrar el patrón/algoritmo que nos lleve de un grupo de tres números (dos de ellos fijos para toda la sucesión) a una lista de números. Deben saber que no estoy ofreciendo un premio determinado pero sí agradecimiento y menciones cuando toque, además de que no tengo la respuesta, esta es una problemática real en la que me encuentro y pensé en incluirlos para que entre todos lleguemos a algo. Les daré varios ejemplos para que puedan experimentar, pero antes...

Restricciones:
  1. Plazo: hasta el 31 de marzo de 2018 o hasta que yo por mi cuenta lo consiga (también estaré trabajando en esto).
  2. No debe ser un método recursivo, es decir, el valor de un número de la sucesión no puede depender de valores anteriores de la sucesión ni iteraciones donde haya que pasar por los términos anteriores, directa o indirectamente, hasta llegar al valor que deseamos.

Ejemplos:

Cada ejemplo, por su longitud estará en un spoiler que tendrá por nombre Num1: num_1; Num2: num_2. El tercer número es propio para cada elemento de la sucesión. El número de elementos de una sucesión es:
Código:
1 + factorial(num_1)/(factorial(num_2)*factorial(num_1 - num_2))

Num1: 6; Num2: 2

1: "00"
2: "01"
3: "02"
4: "03"
5: "04"
6: "11"
7: "12"
8: "13"
9: "14"
10: "22"
11: "23"
12: "24"
13: "33"
14: "34"
15: "44"

Num1: 4; Num2: 3

1: "000"
2: "001"
3: "011"
4: "111"
5: "111"

Num1: 7; Num2: 3

1: "000"
2: "001"
3: "002"
4: "003"
5: "004"
6: "011"
7: "012"
8: "013"
9: "014"
10: "022"
11: "023"
12: "024"
13: "033"
14: "034"
15: "044"
16: "111"
17: "112"
18: "113"
19: "114"
20: "122"
21: "123"
22: "124"
23: "133"
24: "134"
25: "144"
26: "222"
27: "223"
28: "224"
29: "233"
30: "234"
31: "244"
32: "333"
33: "334"
34: "344"
35: "444"

Num1: 7; Num2: 4

1: "0000"
2: "0001"
3: "0002"
4: "0003"
5: "0011"
6: "0012"
7: "0013"
8: "0022"
9: "0023"
10: "0033"
11: "0111"
12: "0112"
13: "0113"
14: "0122"
15: "0123"
16: "0133"
17: "0222"
18: "0223"
19: "0233"
20: "0333"
21: "1111"
22: "1112"
23: "1113"
24: "1122"
25: "1123"
26: "1133"
27: "1222"
28: "1223"
29: "1233"
30: "1333"
31: "2222"
32: "2223"
33: "2233"
34: "2333"
35: "3333"

Num1: 9; Num2: 6

1: "000000"
2: "000001"
3: "000002"
4: "000003"
5: "000011"
6: "000012"
7: "000013"
8: "000022"
9: "000023"
10: "000033"
11: "000111"
12: "000112"
13: "000113"
14: "000122"
15: "000123"
16: "000133"
17: "000222"
18: "000223"
19: "000233"
20: "000333"
21: "001111"
22: "001112"
23: "001113"
24: "001122"
25: "001123"
26: "001133"
27: "001222"
28: "001223"
29: "001233"
30: "001333"
31: "002222"
32: "002223"
33: "002233"
34: "002333"
35: "003333"
36: "011111"
37: "011112"
38: "011113"
39: "011122"
40: "011123"
41: "011133"
42: "011222"
43: "011223"
44: "011233"
45: "011333"
46: "012222"
47: "012223"
48: "012233"
49: "012333"
50: "013333"
51: "022222"
52: "022223"
53: "022233"
54: "022333"
55: "023333"
56: "033333"
57: "111111"
58: "111112"
59: "111113"
60: "111122"
61: "111123"
62: "111133"
63: "111222"
64: "111223"
65: "111233"
66: "111333"
67: "112222"
68: "112223"
69: "112233"
70: "112333"
71: "113333"
72: "122222"
73: "122223"
74: "122233"
75: "122333"
76: "123333"
77: "133333"
78: "222222"
79: "222223"
80: "222233"
81: "222333"
82: "223333"
83: "233333"
84: "333333"

Num1: 8; Num2: 3

1: "000"
2: "001"
3: "002"
4: "003"
5: "004"
6: "005"
7: "011"
8: "012"
9: "013"
10: "014"
11: "015"
12: "022"
13: "023"
14: "024"
15: "025"
16: "033"
17: "034"
18: "035"
19: "044"
20: "045"
21: "055"
22: "111"
23: "112"
24: "113"
25: "114"
26: "115"
27: "122"
28: "123"
29: "124"
30: "125"
31: "133"
32: "134"
33: "135"
34: "144"
35: "145"
36: "155"
37: "222"
38: "223"
39: "224"
40: "225"
41: "233"
42: "234"
43: "235"
44: "244"
45: "245"
46: "255"
47: "333"
48: "334"
49: "335"
50: "344"
51: "345"
52: "355"
53: "444"
54: "445"
55: "455"
56: "555"

Num1: 4; Num2: 1

1: "0"
2: "1"
3: "2"
4: "3"

Num1: 8; Num2: 4

1: "0000"
2: "0001"
3: "0002"
4: "0003"
5: "0004"
6: "0011"
7: "0012"
8: "0013"
9: "0014"
10: "0022"
11: "0023"
12: "0024"
13: "0033"
14: "0034"
15: "0044"
16: "0111"
17: "0112"
18: "0113"
19: "0114"
20: "0122"
21: "0123"
22: "0124"
23: "0133"
24: "0134"
25: "0144"
26: "0222"
27: "0223"
28: "0224"
29: "0233"
30: "0234"
31: "0244"
32: "0333"
33: "0334"
34: "0344"
35: "0444"
36: "1111"
37: "1112"
38: "1113"
39: "1114"
40: "1122"
41: "1123"
42: "1124"
43: "1133"
44: "1134"
45: "1144"
46: "1222"
47: "1223"
48: "1224"
49: "1233"
50: "1234"
51: "1244"
52: "1333"
53: "1334"
54: "1344"
55: "1444"
56: "2222"
57: "2223"
58: "2224"
59: "2233"
60: "2234"
61: "2244"
62: "2333"
63: "2334"
64: "2344"
65: "2444"
66: "3333"
67: "3334"
68: "3344"
69: "3444"
70: "4444"


Eso es todo, no duden en pedirme más ejemplos si los requieren.
Muchísimas gracias a todos por su atención
Gracias: Rodeduf
#Centauros
  #2  
15/02/2018
Predeterminado Respuesta: [Desafío Abierto] Sucesiones y método extraño para contar
Hola buenas intente e intente hacer y encontrar como hacer ese 'desafio' no se si esta sea la forma correcta de hacer...estuvo dificil parecia loco en una hoja escribiendo numeros intentando buscar un patron xD
En fin esto es lo que logre realizar...

Codigo


Código:
import math

num_1 = int(input('Ingrese el numero 1: '))
num_2 = int(input('Ingrese el numero 2: '))
total_numeros = 1 + math.factorial(num_1)/(math.factorial(num_2)*math.factorial(num_1 - num_2))

maximo = num_1-num_2
x = 0
num_3 = [x] * num_2
rango = list(range(maximo+1))
numeros = []

while len(numeros)+1 != int(total_numeros):
    for j in rango:
        num_3[-1] = j
        numeros.append(num_3)
        print(num_3)
        for i in range(-num_2, 0, 1):
            if num_3[i] == maximo and -i < num_2:
                num_3[i-1] += 1
                num_3[i-1:] = [num_3[i-1]] * len(num_3[i-1:])
                break
    if len(rango):
        del rango[0]
    if not len(rango):
        rango = list(range(num_3[-1], maximo + 1))

print(len(numeros))

Última edición por Rodeduf; 15/02/2018 a las 05:57
  #3  
15/02/2018
Predeterminado Respuesta: [Desafío Abierto] Sucesiones y método extraño para contar
Dicho por Rodeduf Ver mensaje
Hola buenas intente e intente hacer y encontrar como hacer ese 'desafio' no se si esta sea la forma correcta de hacer...estuvo dificil parecia loco en una hoja escribiendo numeros intentando buscar un patron xD
En fin esto es lo que logre realizar...

Codigo


Código:
import math

num_1 = int(input('Ingrese el numero 1: '))
num_2 = int(input('Ingrese el numero 2: '))
total_numeros = 1 + math.factorial(num_1)/(math.factorial(num_2)*math.factorial(num_1 - num_2))

maximo = num_1-num_2
x = 0
num_3 = [x] * num_2
rango = list(range(maximo+1))
numeros = []
todo = list(range(int(total_numeros),-1,-1))
n = len(todo)

while len(numeros)+1 != int(total_numeros):
    for j in rango:
        num_3[-1] = j
        numeros.append(num_3)
        print(num_3)
        for i in range(-num_2, 0, 1):
            if num_3[i] == maximo and -i < num_2:
                num_3[i-1] += 1
                num_3[i-1:] = [num_3[i-1]] * len(num_3[i-1:])
                break
    if len(rango):
        del rango[0]
    if not len(rango):
        rango = list(range(num_3[-1], maximo + 1))

print(len(numeros))
Graciass!!
Muy buen trabajo la verdad, solo que es recursivo ^_^u
Pero esa es prácticamente la forma en la que se generan los ejemplos.
Gracias: Rodeduf
#Centauros
  #4  
15/02/2018
Predeterminado Respuesta: [Desafío Abierto] Sucesiones y método extraño para contar
Explicacion del Patron para poder encontrar alguna formula magica loca o que se yo...
Código:
1: "000"
2: "001"
3: "002"
4: "003"
5: "004" los numeros hasta cambiar aqui son 5
6: "011"
7: "012"
8: "013"
9: "014" luego baja a 4
10: "022"
11: "023"
12: "024"  luego 3
13: "033"
14: "034" 2
15: "044"1 -mitad-
16: "111"4 numeros aqui se reinicia el contador debido a que llego ya al cambio de cifra y tambien esta es la mitad de la serie de numeros
17: "112"
18: "113"
19: "114"
20: "122"
21: "123"
22: "124"3
23: "133"
24: "134"2
25: "144"1
26: "222"
27: "223"
28: "224" Reinicio y da la casualidad que es la mitad del cambio de 1 - 2
29: "233"
30: "234"
31: "244"
32: "333"
33: "334"
34: "344"
35: "444"

Ejemplos mas visuales







Dicho por J. Slon Ver mensaje
Graciass!!
Muy buen trabajo la verdad, solo que es recursivo ^_^u
Pero esa es prácticamente la forma en la que se generan los ejemplos.
Bueno al menos ya podran hacer su propios ejemplos jajaja

Última edición por Rodeduf; 15/02/2018 a las 05:57
Tema cerrado

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 17:57.