Ajude Matt a chegar em casa!

Published by kochug in

Foi um dia longo para Matt. Depois de trabalhar no Edabit por um bom tempo, ele decidiu sair para tomar uma cerveja no bar local, a alguns quilômetros pela estrada. No entanto, Matt não percebeu que, depois de beber demais, não consegue mais encontrar direito o caminho de volta para casa. Seu objetivo é ajudar Matt a voltar para casa dizendo quanto mede o caminho até sua casa se ele dirigir pela rota ideal.

Matt vive em um mundo simples: há apenas terra (representada por um ponto), uma única casa (a casa de Matt, representada pela letra "h") e árvores (representadas pela letra "t"), pelas quais ele obviamente não pode dirigir. Matt tem uma quantidade ilimitada de movimentos e, a cada movimento, pode seguir para norte, nordeste, leste, sudeste, sul, sudoeste, oeste e noroeste. Haverá apenas um Matt e uma casa, que é a de Matt.

O mundo é fornecido como uma string delimitada por vírgulas que representa as células do mundo do canto superior esquerdo ao canto inferior direito. Um mundo 3x3 com Matt no canto superior esquerdo e sua casa no canto inferior direito, com uma árvore no centro, seria representado assim:

m,.,.,.,t,.,.,.,h

A resposta para esse mundo seria 3: Matt se moveria primeiro para leste, depois para sudeste e então para sul (ou sul > sudeste > leste). A chamada de função relacionada a este exemplo seria a seguinte:

get_path_length("m,.,.,.,t,.,.,.,h", 3, 3)

Se Matt não conseguir chegar em casa a partir de sua localização atual, retorne -1; caso contrário, retorne a quantidade de movimentos que Matt precisa fazer para chegar em casa seguindo o caminho ideal. Você recebe o mundo, sua largura e sua altura.

Boa sorte!