Minha cidade natal, Rhyl , possui um sistema de tráfego unidirecional que parece ter sido projetado para manter as pessoas afastadas de seu destino pelo maior tempo possível. Sua tarefa, se você optar por tentar, é produzir um programa para fornecer a rota mais curta através desse sistema de tráfego.
Entrada
A entrada estará ativada STDIN
e haverá uma lista de pontos de início e de término, seguidos por uma linha em branco seguida por uma lista de consultas, conforme a seguir:
A B
B A
B C
C D
D C
A D
C A
B A
Cada estrada só pode ser percorrida na (s) direção (ões) indicada (s), portanto, no exemplo acima, a estrada A - B é uma via de mão dupla, enquanto B - C é uma via de mão única de B para C. Viajando de C para B é proíbido.
Os pontos inicial e final serão todos representados por uma única letra maiúscula.
Resultado
A saída deve ser a rota mais curta (medida pelo número de pontos visitados) do ponto inicial especificado até o ponto final especificado para cada consulta recebida. Se não existir tal rota, produza uma linha em branco. Se existir mais de uma rota mais curta, imprima a primeira ao classificar todas as rotas mais curtas lexicograficamente.
Para o exemplo acima, a saída seria:
A B C D
B A
Scripts de teste
Como antes, estou fornecendo testes para esta tarefa com base em scripts escritos por Joey e Ventero : -
e também testes e resultados esperados para quem não pode usar os scripts acima
Uso: ./test [your program and its arguments]
Recompensas
Todas as respostas que obviamente tiveram alguma tentativa de jogar golfe que atendam às especificações e passem em todos os testes receberão meu voto positivo. A resposta mais curta possível até 26/01/2012 será aceita.
fonte
output the first when sorting all shortest routes lexicographically
- Então, seA B D
eA C D
são soluções válidas, emA B D
vez disso?Respostas:
Haskell,
223207 caracteresfonte
Python (2.x),
382369358338323318 caracteresTodas as dicas e comentários são bem-vindos!
Deve passar nos testes neste formulário. Entrada de alimentação via stdin, por exemplo
python shortestroute.py < test.txt
.fonte
A B I J M
vez deA B G J M
.C:
450,437,404, 390 caracteresfonte
puts("\n")
imprime duas novas linhas.puts()
adiciona automaticamente um terminador de fim de linha às seqüências impressas. Para evitar esse comportamento, usefputs(str, stdout)
ou simplesmenteprintf(str)
.