Giter Site home page Giter Site logo

Metodo de submatriz about plp HOT 6 CLOSED

Sekva avatar Sekva commented on June 18, 2024
Metodo de submatriz

from plp.

Comments (6)

Sekva avatar Sekva commented on June 18, 2024

Determinante

from plp.

MBaltz avatar MBaltz commented on June 18, 2024

No meu caso, é necessário apenas a função de remoção das colunas, pois a remoção da linha é feita de forma implícita: calcula (x:xs) sendo x a linha removida.

Entre os nossos dois códigos, ambos fazem a mesma coisa.
No entanto, como o teu tem um comentário indicando necessidade de refatoração, poderíamos usar o meu. Já que no fim, dará a mesma coisa.

Minha implementação
removerColuna :: Int -> [[a]] -> [[a]]
removerColuna indice = map(removerIndice indice)
--
removerIndice :: Int -> [a] -> [a]
removerIndice 0 (x:xs) = xs
removerIndice n (x:xs) = x : removerIndice (n-1) xs
removerIndice _ [] = []

No entanto, tem que observar que a tua implementação remove a (n+1)ª coluna, a minha remove a n.

from plp.

mrjonio avatar mrjonio commented on June 18, 2024

Não entendi, é pra tirar qual?

from plp.

Sekva avatar Sekva commented on June 18, 2024

Nop, elas fazem exatamente a mesma coisa, erro de documentação meu, esqueci de dizer que as linhas são contadas do zero :)

-- Remove a (n+1)ª linha da matriz
remover_nesima_linha :: Int -> [a] -> [a]
remover_nesima_linha n matriz = do
    -- Pega os elementos até o nº excluido ele
    let pt1 = take n matriz
    -- Pega os elementos a partir do nº, excluindo ele
    let pt2 = snd (splitAt (n+1) matriz)
    -- Concatena tudo, ou seja, uma lista sem o nº elemento
    pt1 ++ pt2

Acho que o melhor seria usar tua implementação de remover coluna, e a minha de remover linha. Nesse caso não, mas se for reutilizar, tenho medo de estourar a pilha de recursão.

from plp.

Sekva avatar Sekva commented on June 18, 2024

Não entendi, é pra tirar qual?

Tamo vendo ainda

from plp.

MBaltz avatar MBaltz commented on June 18, 2024

Discutimos pessoalmente e decidimos quais funções iremos utilizar


A minha implementação está bem resumida, é uma forma mais compacta de fazer, no entanto, exige mais alocação na pilha.
A implementação de @Sekva está mais fácil de entender e utiliza menos espaço na pilha, no entanto, é mais estença

Decidimos utilizar a função removerColuna implementada @MBaltz e utilizar a função remover_nesima_linha implementada por @Sekva, sendo necessário fazer a substituição da função removerIndice por a remover_nesima_linha. Pois caso precisarmos utilizar o mesmo código futuramente para estruturas que exigem mais pilhas, não precisamos nos preocupar com o estouro da mesma.

from plp.

Related Issues (2)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.