ep11 ~> Buguei no enunciado 0.0

ep11 ~> Buguei no enunciado 0.0

por Michel Viana Smykalla -
Número de respostas: 9

Ois,

Estou com uma dúvida sobre um exemplo no enunciado do método faixa da classe Par_Mais_Proximo. Há um exemplo, na descrição do faixa, que chama o método num objeto Par_Mais_Proximo 'pontos' criado a partir da lista  [(-4, 0), (-2, 0), (0, 3), (1, -1), (2, 2), (3, 2)] com os seguintes parâmetros : pontos.faixa(1,0,3,6), e o método retorna None, ().

Por quê desse resultado? Pelo que eu entendi, o método deveria retornar 2.23606797749979 e o tuple ((0,3),(2,2)). Alguém pode me explicar o motivo desse resultado?

Agradeço desde já ^^

 

Em resposta à Michel Viana Smykalla

Re: ep11 ~> Buguei no enunciado 0.0

por Cinthia Saraiva Santos -

O que representa esse valor 1 nos parâmetros?

Respondendo essa pergunta acho que você vai entender o porque desse resultado.

Em resposta à Cinthia Saraiva Santos

Re: ep11 ~> Buguei no enunciado 0.0

por Michel Viana Smykalla -

Então, a minha interpretação é análoga ao que tem na descrição no site, quando há a explicação sobre o que é faixa de largura 'd' em relação a 'q'. Então, 1 seria o 'd', ou seja, a faixa corresponde ao conjunto de pontos cujo abscissas estão entre  pts[q].x() - 1 até pts[q].x() + 1, incluindo os extremos. Não seria isso? E, nesse exemplo, o índice 'q' contém o ponto (1,-1), e os pontos (0,3) e (2,2) distam, em relação à abscissa do ponto (1,-1), uma unidade, ou seja, eles estão dentro da faixa de largura 1 em relação a 'q'.

Em resposta à Michel Viana Smykalla

Re: ep11 ~> Buguei no enunciado 0.0

por Agenor Gonçalves Neto -

Hei Michel, blz?!

A interpretação que acho correta é que não é necessário conter os extremos, já que o objetivo é encontrar pares de pontos na faixa de largura que possuem uma distância estritamente menor que d.

No exemplo dado: q contém o ponto (1,-1) com abcissa 1 e, sendo d = 1, teria que encontrar pontos com abcissa no intervalo aberto ]1-1, 1+1[ = ]0, 2[. Como não há nenhum ponto nessas condições, deve-se retornar None, ().

Em resposta à Agenor Gonçalves Neto

Re: ep11 ~> Buguei no enunciado 0.0

por Michel Viana Smykalla -

Opa, eae lek! Tudo suavinho, e você?

Então Agenor, eu fiz esse teste , excluindo o extremo, e realmente passa nesse exemplo do enunciado. Agora estou tentando entender o por quê que não passa nos testes 13,15,16, alguma sugestão? Vlwzão por responder a minha dúvida em,

é nois

Em resposta à Michel Viana Smykalla

Re: ep11 ~> Buguei no enunciado 0.0

por Luiz Felype Azevedo Pascoal -

Depois que meu método faixa() passou por todos os testes do exemplo ele também passou tranquilo nos testes do envio.

Eu sugeriria testar de novo com todos os testes do exemplo após as modificações feitas e atentar para as condições estabelecidas para o método no enunciado, de preferência testando-as separadamente.

Espero ter ajudado sorriso

Em resposta à Luiz Felype Azevedo Pascoal

Re: ep11 ~> Buguei no enunciado 0.0

por Michel Viana Smykalla -

Opa, eae lek!

Eu já consegui resolver, deu tudo certo, mas obrigado pela sua sugestão!!

Vlw e é nois.

Em resposta à Michel Viana Smykalla

Re: ep11 ~> Buguei no enunciado 0.0

por Vitor Hugo Vieira de Lima -

Olá Michel, você poderia me dizer como fez para resolver o problema para o teste 16  ou algum teste que utilizou?

vlw man!

Em resposta à Vitor Hugo Vieira de Lima

Re: ep11 ~> Buguei no enunciado 0.0

por Michel Viana Smykalla -

Opa, eae Vitor! 

Então manin, o meu problema era que a minha solução não estava considerando todas as possíveis combinações, respeitando as condições do enunciado, entre os pontos das sublistas self.pts[p:q] e self.pts[q:r]. Ou seja, devido a uma condição de parada de um laço, o programa só testava a distância entre alguns pontos, não de todos que estavam na faixa d em relação a q e etc... Aí dava ruim no teste 16. Consertei essa condição de parada errada e ele passou no teste.

Espero que ajude!

Vlw e é nois lek!