• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Warrior

[1] Labirinto digital - Dificuldade média

17 mensagens neste tópico

Boax...

Eu estou como o Gooden...

Mantenho-me na versao original ... ate pelas parencas do algoritmo... ( fazer 2 vezes a mesma coisa, com pouo intervalo de tempo  :P ),,

Mas estas a dizer que nao pode ser por forca bruta... e isso, a nao ser que o labirinto nao tenha mais de uma rota correcta, o resultado obtido vai depender do algoritmo... a nao ser que testes ( apos encontrar um caminho) se existe outro correcto, e ai... caimos na forca bruta ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O desafio foi refeito de forma a respeitar as regras da sessão.

É verdade que o erro foi nosso porque devíamos ter feito isso antes de serem colocados desafios mas infelizmente o tempo é pouco.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O propósito deste desafio é completamente diferente do original. O original era fazer um jogo de labirintos, não era fazer um solver de labirintos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As regras desta secção ainda estão em fase de aperfeiçoamento, no entanto há algo que convém terem em mente, se é para fazer algo sério, então terá de existir algum factor que minimize a parcialidade.

Ter um aspecto agradável nem sempre é sinónimo de bem feito ou de funcional, é necessário respeitar algumas regras, algumas regras que facilitem o controlo de "eficácia", algo que possa passar por um "filtro" de teste.

Se tiverem sugestões, força :P Estamos agora a limar vários pormenores, portanto é a altura indicada :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem contar que isso não é nada do que eu tinha planeado mas ok. vou seguir o que tinha planeado se gostar gostaram senão whatever.

Essa não é a atitude correcta.

Eu não mudei assim tanto o problema, alterei a forma como era lido o tabuleiro, de modo a dificultar ligeiramente a coisa, e pedi o caminho mais curto, em vez do percurso em si, o que é mais fácil.

Se consideras o desafio assim tão diferente, explica ao certo ao que te referes.

Deviam ser incluídas as dimensões do labirinto no input.

Desafio alterado, esqueci-me de o fazer pelo facto que tanto se aceitava a função que resolvesse como o programa completo com funções de leitura.

Mas estas a dizer que nao pode ser por forca bruta... e isso, a nao ser que o labirinto nao tenha mais de uma rota correcta, o resultado obtido vai depender do algoritmo... a nao ser que testes ( apos encontrar um caminho) se existe outro correcto, e ai... caimos na forca bruta ...

Uma vez que é pedida a distância mínima entre os dois pontos, a solução é única, e existem métodos para a achar sem ser por força bruta.

O objectivo é mesmo esse, obrigar a pensar, e não resolver por resolver. É um desafio.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa não é a atitude correcta.

Eu não mudei assim tanto o problema, alterei a forma como era lido o tabuleiro, de modo a dificultar ligeiramente a coisa, e pedi o caminho mais curto, em vez do percurso em si, o que é mais fácil.

Se consideras o desafio assim tão diferente, explica ao certo ao que te referes.

Desafio alterado, esqueci-me de o fazer pelo facto que tanto se aceitava a função que resolvesse como o programa completo com funções de leitura.

Uma vez que é pedida a distância mínima entre os dois pontos, a solução é única, e existem métodos para a achar sem ser por força bruta.

O objectivo é mesmo esse, obrigar a pensar, e não resolver por resolver. É um desafio.

Não tás a entender xD o Desafio era fazer um labirinto não um solver. Para isso mudava-se o Nome do topico para Solver De Labirinto Digital e punha-se outro para labirinto digital.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tás a entender xD o Desafio era fazer um labirinto não um solver. Para isso mudava-se o Nome do topico para Solver De Labirinto Digital e punha-se outro para labirinto digital.

Não não é! Vai lá ver o tópico e as respostas, toda a gente fala em ler um labirinto e encontrar um caminho, naquele formato 1, 2, 3, 4.

Só há uma mensagem tua que ali no meio até ficou um bocado perdida, e dá-me claramente a entender que estavas a falar de uma coisa diferente de toda a gente..

ATENÇÃO PARA OS LABIRINTOS AS IMAGENS PODEM SER A VONTADE OU ATÉ USAREM APENAS LETRAS E NUMEROS. ISSO PODERÁ TAMBÉM CONTAR PARA O PUBLICO. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deviam ser incluídas as dimensões do labirinto no input.

Porque? Visto que é dito que o labirinto é sempre válido é bastante fácil descobrir as dimensões do mesmo.

Desafio alterado, esqueci-me de o fazer pelo facto que tanto se aceitava a função que resolvesse como o programa completo com funções de leitura.

Bolas... E eu que já tinha feito a parte do código que fazia parsing ao input. Mas oky, não é nada de muito grave, e o código até fica mais reduzido  :confused:
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque? Visto que é dito que o labirinto é sempre válido é bastante fácil descobrir as dimensões do mesmo.

Bolas... E eu que já tinha feito a parte do código que fazia parsing ao input. Mas oky, não é nada de muito grave, e o código até fica mais reduzido  :confused:

Não precisas de modificar nada nesse caso..

Simplesmente não dar as dimensões ia colocar um problema extra (parsing do input) que não é propriamente parte do desafio.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No mínimo precisava de ignorar a primeira linha :confused:

Mas claro que agora que essa linha é dada, vou utilizá-la. Não há necessidade de estar a perder tempo de processamento para calcular o tamanho do labirinto. Para além que o código fica mais simples e legível.

E as alterações também não são nada de outro mundo, é praticamente apagar... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma vez que é pedida a distância mínima entre os dois pontos, a solução é única, e existem métodos para a achar sem ser por força bruta.

O objectivo é mesmo esse, obrigar a pensar, e não resolver por resolver. É um desafio.

O valor da distancia é unico, mas pode haver mais que um caminho mais curto. Achava mais interessante listar todos os caminhos mais curtos ou então, no caso de o labirinto ser grande, listar um dos caminhos e quantos caminhos mais curtos existem.

Por outro lado, isto podia ser outro desafio :confused:

PS: Não percebi bem como funciona a pontuação (a eficiência é um factor muito importante?)  e quando deve ser feita a submissão do código ? Só no final do prazo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O valor da distancia é unico, mas pode haver mais que um caminho mais curto. Achava mais interessante listar todos os caminhos mais curtos ou então, no caso de o labirinto ser grande, listar um dos caminhos e quantos caminhos mais curtos existem.

Por outro lado, isto podia ser outro desafio :confused:

PS: Não percebi bem como funciona a pontuação (a eficiência é um factor muito importante?)  e quando deve ser feita a submissão do código ? Só no final do prazo ?

O código deve ser colocado aqui:

http://www.portugal-a-programar.pt/index.php?showtopic=16508

Só alguns problemas vão contar para a pontuação, em datas que serão avisadas previamente.

O problema será disponibilizado à hora marcada e as respostas correctas mais rápidas (não as mais eficientes, mas sim as que foram postadas mais cedo) terão mais pontos atribuídos.

Note-se que não serão somente problemas de algoritmia, de modo que na grande maioria deles a eficiência não será de todo possível de avaliar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Segundo reports no #p@p, o input podia estar mais explícito. Sugiro algo do género:

Input:

Linha 1 - Dois inteiros N e M separados por um espaço, respectivamente a largura e altura do labirinto;

Linhas 2 a M+1 - N inteiros separados por um espaço, com os dados da matriz;

Linha M+2 - Dois inteiros separados por um espaço com as coordenadas, respectivamente vertical e horizontal, do ponto de partida, consideradas a partir do limite superior esquerdo do labirinto;

Linha M+3 - Dois inteiros separados por um espaço com as coordenadas, respectivamente vertical e horizontal, do ponto de chegada, consideradas a partir do limite superior esquerdo do labirinto.

O exemplo continuaria lá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lembra-te que deixei livre a criação de um programa que lesse o input ou uma função que recebesse tudo como parâmetros.

Isto porque em algumas linguagens é praticamente impossível ler tudo do input..

Foi uma tentativa de uniformizar e simultaneamente facilitar as coisas, deixando o modo de input/output livre.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora