Python - Ejercicio amazon Python

 
Vista:

Ejercicio amazon Python

Publicado por Luis (2 intervenciones) el 12/09/2019 16:12:37
2316CC82-719D-480F-B191-18EB23B82282
27BCBBEC-073B-4E79-8B38-4E000A143482



Buenos dias amigos , tengo ya partirndome la cabeza tratanto de resolver este ejercicio


Estoy haciendolo con valores infinitos , fijense en las condiciones es desde 0 hasta n-1 , tienes que elegir dos numeros y compararlos y devolver indices


Ayuda por favor en todo internet no hay un ejercicio de este tipo


Necesitamos comparar indices totalizarlos y compararlos con el tiempo de la cancion descontando ya el tiempo establecido


Si tenemos 3 elementos ingresados por el usuario

1 2 3


Hay que comparar el 1 con el 2 luego el 1 con el 3
Luego el dos con el 1 y luego el 2 con el 3


No se puede comparar el mismo numero
Hay que devolver los indices

Es un ejercicio que te pone amazon para conseguir trabajo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejercicio amazon Python

Publicado por kip (257 intervenciones) el 12/09/2019 17:47:47
Hola, algo que se me ocurre es esto:

1
2
3
4
5
6
7
8
9
>>> dur = 250
>>> songs = [100,180,40,120,10]
>>> values = [v for v in  map(lambda v: ({"indexs": [songs.index(v[0]), songs.index(v[1])], "sum": sum(v)}), itertools.combinations(songs, 2)) if v['sum'] + 30 <= dur]
>>> valueMatched = max(values,  key=lambda d: d['sum'])['sum']
>>> list(filter(lambda d: d['sum'] == valueMatched, values))
[{'indexs': [0, 3], 'sum': 220}, {'indexs': [1, 2], 'sum': 220}]
>>> max(filter(lambda d: d['sum'] == valueMatched, values), key=lambda d: d['indexs'])
{'indexs': [1, 2], 'sum': 220}
>>>

1
2
3
4
5
6
7
8
9
>>> dur = 110
>>> songs = [20,70,90,30,60,110]
>>> values = [v for v in  map(lambda v: ({"indexs": [songs.index(v[0]), songs.index(v[1])], "sum": sum(v)}), itertools.combinations(songs, 2)) if v['sum'] + 30 <= dur]
>>> valueMatched = max(values,  key=lambda d: d['sum'])['sum']
>>> list(filter(lambda d: d['sum'] == valueMatched, values))
[{'indexs': [0, 4], 'sum': 80}]
>>> max(filter(lambda d: d['sum'] == valueMatched, values), key=lambda d: d['indexs'])
{'indexs': [0, 4], 'sum': 80}
>>>

Puedes hacer la función y listo, el problema que tendrás quizás sea de optimización, los testcase siempre contienen pocos valores y no es lo mismo tener una lista de 10 items que una de 60000...

Hay que recordar que la optimización de algoritmos es importante y el estudio de bigONotation tambien....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ejercicio amazon Python

Publicado por Luis jimenez (2 intervenciones) el 12/09/2019 18:05:25
Gracias por tu comentario pero ayudame por favor a hacerlo con n elementos , algo infinito que no sea limitativo


Que lo podamos hacer con n elementos con sus n indices es ahi mi problema, mediante input por el usuario


Gracias de antemano a la comunidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar