Muitos de nós estão familiarizados com o jogo Tron. Você controla um "ciclo de luz" colocado em uma grade. O ciclo da luz sempre se move para a frente (embora você controle a direção) e deixa um rastro permanente atrás dele. Se você topar com uma trilha, você trava!
O objetivo aqui é determinar se um determinado caminho é um loop válido, ou seja, ele retorna ao seu ponto de partida sem "travar". Para fazer isso, assumimos que começamos no ponto (0,0)
. Uma entrada é fornecida no formulário N2E1S2W1
, com uma série de direções cardinais ( N
é north
, E
é east
e assim por diante), cada uma seguida pela distância para viajar nessa direção. Neste exemplo, você viajaria
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
Um caminho é considerado válido se terminar (0,0)
sem visitar nenhuma outra coordenada mais de uma vez (ele visita (0,0)
exatamente duas vezes. Uma vez no início e outra no final). Lembre-se do que no exemplo acima, para ir de (0,0)
a (0,2)
, nós necessariamente visitamos (0,1)
também.
Outros exemplos:
input -> output
N1E1S1W1 -> true
N1E1N1E1S2W2 -> true
N1S1E1W1 -> false // Visits (0,0) 3 times
N4E2S2W4S2E2 -> false // Visits (0,2) twice
N3E2S3 -> false // Does not return to (0,0)
N1S1 -> anything //I don't care how you evaluate this case
Sua saída pode ser de qualquer forma, desde que ela seja igual para qualquer valor de verdade ou falsey.
A entrada pode ser tomada como uma string ou como uma lista de caracteres, no formato S1N2E3
... ou SNNEEE
... Também não há limite rígido no tamanho da grade, mas assuma que a entrada não excederá nada. Desde que o código seja fundamentalmente sólido, não é crucial lidar com casos como esse N99999999999999
.
NOTA: Você pode avaliar os casos N1S1
, E1W1
, S1N1
, e W1E1
no entanto você gostaria. São caminhos tecnicamente válidos, mas vão contra o espírito "Tron" do desafio.
Pontuação
Isso é código-golfe , então a resposta mais curta vence!
N
como 1j
, E
como 1
, S
como -1j
e W
como -1
?
N99999999999999
N1S1
deve ser verdade que seja consistente com suas definições, pois atinge(0, 0)
duas e(0, 1)
uma vez, o que é válido na sua definição.