Registrarse

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

Estado
Cerrado para nuevas respuestas.

Jason

PkPower déjame poner tildes en mi nick ¬¬

[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))
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"
1: "000"
2: "001"
3: "011"
4: "111"
5: "111"
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"
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"
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"
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"
1: "0"
2: "1"
3: "2"
4: "3"
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 :D
 
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...

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:

Jason

PkPower déjame poner tildes en mi nick ¬¬
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...

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.
 
Explicacion del Patron para poder encontrar alguna formula magica loca o que se yo...
Código:
[B]1: "000"
2: "001"
3: "002"
4: "003"
5: "004"[/B] los numeros hasta cambiar aqui son 5
6: "011"
[I]7: "012"
8: "013"
9: "014"[/I] luego baja a 4
[U]10: "022"
11: "023"
12: "024"[/U]  luego 3
[B]13: "033"
14: "034"[/B] 2
[B]15: "044"[/B]1 -mitad-
[I]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"[/I]
[U]20: "122"
21: "123"
22: "124"[/U]3
[B]23: "133"
24: "134"[/B]2
[I]25: "144"[/I]1
[B]26: "222"
27: "223"
28: "224"[/B] 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"



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:
Estado
Cerrado para nuevas respuestas.
Arriba