Defenestration é o ato de jogar alguém ou algo pela janela.
- Wikipedia
Entrada
A entrada será composta de duas partes:
Uma planta baixa e uma pessoa dentro da casa / prédio.
v><^
representa uma pessoa, apontando na direção indicada pela seta. A entrada conterá exatamente uma pessoa.-
e|
representam paredes e#
representa uma janela.
Esta parte da entrada pode ser tomada como uma única string ou como uma matriz / lista / etc. de linhas. Nunca haverá espaços à direita ou à esquerda e a entrada sempre será um retângulo.
Exemplo:
-----###--- | | | ^ | -----------
Um número inteiro ≥ 1 significa o quão longe (em caracteres) a pessoa viaja.
Saída
A saída deve ser
1
se a pessoa acabar "dentro" de uma janela (ou seja, depois de avançar a distância especificada na entrada, ela estará em cima de a#
).2
se a pessoa foi defenestrada (entre em contato com um#
e depois continue mais adiante).3
se a pessoa bater em uma parede (entre em contato com um-
ou|
. Depois de bater na parede, a pessoa para e não continua por ela).0
se nenhuma das opções acima for verdadeira (e tudo o que a pessoa fez foi viajar pelo espaço vazio).
Suposições
Pode-se presumir que todos os itens a seguir são verdadeiros:
A pessoa nunca viajará "fora dos limites" da área de entrada.
Depois de defenestrated, a pessoa nunca entrará em contato com outro
#
ou a-
/|
(para que você não precise se preocupar se2
e1
ou3
são verdadeiras).
Casos de teste
Para a seguinte "planta":
-----
| |
|###|
| |
| ^ |
In Out
1 0
2 1
3 2
Para esta planta:
> | # |
In Out
1 0
2-99 3 * that is, any input 2-99 outputs 3
Para esta planta:
||####|#|#|##|<
In Out
any 3
Caso de teste final:
|v|
|#|
| |
| |
| |
| |
In Out
1 1
2-5 2
Has someone been for-sparta'd?
Respostas:
JavaScript (ES6),
147146 bytesGuardado 1 byte graças a @NinjaBearMonkey !
Explicação
Toma uma planta baixa como uma sequência e o número de movimentos. Retorna um número.
Teste
Mostrar snippet de código
fonte