tengo la siguiente lista (que es una lista de longitud 2, pero en mi asignación que tienen una longitud + n lista)“reemplazar” a 3 tupla
xxs = [(11,22,[(33,33,33),(44,44,44)]),(55,66,[(77,77,77),(88,88,88)])]
Estoy tratando de “reemplazar” uno 3-tupla (p1 o p2 o p3 o p4 de la imagen de abajo) por índice de lista (n
) y por índice de sub-lista (p
).
La función, al final, debería ser como:
fooo newtuple n p = (…)
Por ejemplo: (sustituir p3 para (98,98,98):
fooo (98,98,98) 2 1
[(11, 22, [(33,33,33) , (44,44,44)]) , (55, 66, [(98,98,98),(88,88,88)])]
I planeó el código como sigue estos pasos:
Acceda al pn que quiero cambiar. Me las arreglo para lograrlo por:
fob n p = ((aux2 xxs)!!n)!!p where aux2 [] = [] aux2 ((_,_,c):xs) = c:aux2 xs
“reemplazar” la 3-tupla. Realmente necesito un poco de ayuda aquí. Estoy atascado. el mejor código (en mi cabeza tiene algún sentido) que he hecho: (recuerde: por favor, no seas tan malo en mi código, sólo he estado estudiando Haskell sólo por 5 semanas)
foo n p newtuple = fooAux newtuple fob where fooAux _ [] = [] fooAux m ((_):ds) = m:ds fob n p = ((aux2 xxs)!!n)!!p where aux2 [] = [] aux2 ((_,_,c):xs) = c:aux2 xs
Finalmente volveré a armar todo, usando
splitAt
.
¿Mi enfoque del problema es correcto? Realmente apreciaría algo de ayuda en el paso 2.
En primer lugar, su explicación fue muy notable.Segundo: todavía tengo mucho que aprender, pero aprendí mucho con su respuesta. Tercero: me paso la mitad del día tratando de resolver esto, y lo resuelves en unos minutos (realmente tengo mucho que aprender y estudiar). Finalmente, ¡un GRAN agradecimiento! _o_ – Nomics