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é easte 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 W1E1no 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!
Ncomo 1j, Ecomo 1, Scomo -1je Wcomo -1?
N99999999999999
N1S1deve 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.