Você é um pontinho num avião cartesiano. Pensando na sua existência, você decide andar pelo seu avião e tocar as coisas. Você percebe que cada par de coordenadas que você visita possui um interruptor de luz. Para se divertir, você decide alternar cada opção que encontrar.
O Desafio : Criar um programa que terá uma entrada de comprimento aleatório, usando apenas os personagens v
, ^
, <
, e >
. Esses caracteres correspondem a movimentos.
<
move você uma unidade para a esquerda^
move você uma unidade para cima>
move você uma unidade para a direitav
move você uma unidade para baixo
Usando esta entrada gerada aleatoriamente, calcule quantos interruptores serão deixados na ON
posição, supondo que você comece em (0,0), todas as luzes começam no OFF
estado e você não acende nenhuma luz até fazer o seu primeiro movimento. (Ou seja, se você começar em (0,0) e subir 1 unidade para (0,1), agora haverá 1 luz acesa). Se você encontrar um interruptor que está na ON
posição, ele será girado OFF
.
Casos de teste:
v>v<^^<v<<^<^><<>^^>>><v>vv^v>v^><><<^>><<<vvv^vvv>v>>v><vv^^<<>vv^^>v^<>>^^<^^>^^v<^>^<vvv^v^v><^<<v<<>><<>v>>^><^>^^<>>>>vv>^<<^<<><vvv<v^>>vvv>v^>>><<v^>^^^^v>>^>^v>v<vv^<>^<<v>vv>><^^<^><vv^^v<v<v^^^>v<^vv^v<><vv^^^>v^>v>vv<<^><v<^v><<v^^v>>v<vv<><^^^v<^v><><<^^<>^>><^^^>vv^<>>>>^<^<<<<>>>v<<v<v<vv><<vv<vv<^v^^^>>vv<>v>><<<v^>vv><v<<<v<<>^vvv^<v^v>^^v^v><<v^>>>v<v<v^>>>v><>>>^<><<<<>vv>v><v>v><^v<>v>>>vv<<>^>^>v<^><^<^vv^><^^>v<^^v>v^v<^^^^vv<>v<>><v^^><>v<<<>v^<v^^><>^<>^<>><>^^<>^v><>>><v<^^>>v>^^^<v
produz 125 luzes acesas.
>>><^>>>^vv><^^v^<<<>>^<>>^<^>^<<^^v^<v^>>^<<><<>^v<^^^vv>v><^>>^<^<v><^v<^<<^^v><>>^v<^>^v<vvv<<<v^vv>>^vv>^^<>>vv>^<^>vv<>v^<^v<^^<v^^^<<^><><>^v>vvv<^vvv<vv><vv<^^v^^<^^>>><<<>^<>>><^<<<>><>^v><^^vv<>>><^^^<^>>>>v<v^><<>v<v<v^<<^><v^^><>v>^<>^^^vvv<v^>^^^^v>v<v>>>v^^<v<vv>><<>^vv><<vv<<>^^v>>v<^^v>><v<v<<>^^vv>>^v>v>v<>^>^v<>>><>v>v<<v<^<>>>vv>>v>^<>vv^v><><^v^>v<^^>v<^v>>v^>^>>v>v>^>^<^^>vv>>^vv<^><>^><<v^<><<^<^>^^vv^<<^^<^^v<v<>^>v>>>>>>vv<<v>^>vv^>^><^<^^><<vvvv>vvv<><<><v^vv><v^^<>^>><^vv<><>^>vv>>>vv^vv<<^v^^<<v^^>^>vvv<><<v>^>^>v<v>^<^^^^<^>^>><>>^^vv<>v<^>v><v<v^>>v<^v<vv>v^>v<v^<^^^^v<^<^<<v<<<v<v^^>vv^>><<<v>>^^^>^<^>>>v^v><^^vv^>><^^vv<vv<v^><>>^><<<>>^^v^v<<v^<vv^^^>><>>^v^^^>>^>^<<^>v>^^v>><>v>^>vv^^<vvvv<><^v>^><<>>><^<^v^<<vvv^v<<<<<><><<><><<v>v<v>v><^v^^vvv>><>^>^>^v<<vv^^^v^vv><v><><v<v<<>>>v<^<^v<<>^v<<^v<><>v>>^^>^<v^<<^v^^^vv>><v^<v>^v><^<>>>>^^<vv<>^^>^>v^v^^>><>^^<^v^<v<<v<^<<^^vv>v>^<vv<<^^v^vv^>^^<>v>^>^<>vv><v>>><<><<vv^^<vv<>>^v>^<<vv>^><<>^<v>v><<v^<v<><v>^<^<^><^^^^>>>^<>^^><>>v^<vv^<^<<vvvv>>>v^v>>^>v^><<>>v<>>^>><vvvvv<<vvvv<v>^v<vv^<>><<><v^^<^<v>^v<^<<>^v<v^<>v<<>^<<vvv><^><^^^<>>v^<<>vv><^^^>><^>v^v>v<v^>>v>>v>vv<<v<<vvv^^^>^<v^^<^<v<^<>>v^<<v>>v^><v<vvvvv^^^<v^^<><v<<^>>^><^<v^v^^>><v><>v>^<vvvv><<v^^v^>^>v>><>^^v>v^>vv^>v<^<<^vv^>vv^<v>^<v^<>^v>v^>v^<<>^^<^>^^>vv^>>vv>v>vvv><>^v<<<<v^>v^^v<><v<v>^<^><^><<v<>><<>v^^>>><<><>>><<>><v^^>><^>><^<>v^^vvv>v<^<<vv^>vv^><<>v><>^<>v^^v>^>v^<>^><v>^><<^v<v^^<v>><^^>>^<^<^v<v>^>^<^<v><><>>>><>^<^<v>v<v^>v><>v^>v^<<><^<>>v<^vv^^^>^<<<<>^>^<><^vvv>^^<v^v>v>v^v>v>>vv>^><>^vv>^<v<v^<>vv^<v<><>^>>vvv><>>^<<v^<<>^<v^>v<^^^<^<^^<>^>>v>^<v>vv<v^^>><<<<<>>v>^v>^>>>>v>>^^>^<<<^<<<v>>^><<<<^vv<<>^v<^>v^<v<<>v<>^<^<^<^<>>^^^vvv<v>^vv>^><^<v^>^v<v>><><vvv<^^>>v<^v>^>>>><v^<v^^<^^v<vvv<v>^^<<>><^<v^v<^vv>v>vv>^^<>^^^^>>^v><vv<<<v>^v^>>v^>><<<^v^v<<>><<vvvvv<v^vv>vvvv><v^v<^^^><vv^^<>><>><^>^^^^v>v><><v^<>^v<>^^<^^>^^^vvv>>vv^v^<v<vv^v>v>>>^v^^vv^<^v>v^v>>^v>v<v^<^^><vvv>><<>><>><v>v<^<v>>>>v^^v^^>^><<v><^<<>>v<>^^<<>vv^>>vv^^^v>>>^v^><v<<^>v<v><>>>^>>^<<>>^><<vv<^^>^^^v^^<>>>vv><<>v<><<<>v<<>>>v<>v<>^<vv^v<^^<<<v>^v>>^^>^><<^vv<><><>v>^v>^<>v>>^^^<^^>>vv>v<<<v^><<v><^v><>v<^<<^<>^vv>^><^^^^^<<v^^<>v>><^<v^^^vv>^v<>^<v<v>v>^><^<<^<>><^^>vv^<>^<>vv<>>v<vv^>><^^<^>v<><>vv<v<>>v><v^^^>^^^<<vv^><^^v>v>^<^>v^><<vvv>v^><vv<><^<><^>^v<><<v^<<><>^^^^<<^>>^>^v^>v>^<<^>vv^vv^v<>^<<^>v<^^<<v<v<<<^>vv^>><>v>><><v>v><v^><vvv>vv<<vvv>v^<<^v<^<><<^v>v<>>vv<<v^>v>v<<>>^vv^<^^^<^v>>^<vv>^<v>><>v>^^<<v^<>>>>>v^v>><>v^>>^<>>^<^vvv^^^<^v<><vvv^>^>v><<v>>^v>v<v>v^<v>v>^<>vvv>vvv^^<>vv>^^^^^>v<<^v<>>>><<<>>><vv>>^v^^v<v^>>>^>^v<^v>^v<>vv<><vvv^v<<<<v<vv>vv^<^vvv<^v>v^^vv<^>>>^^>>^^><>^>>v<>>>^^<<v<^<<<<<^^<v^^^<<>><<<^>^v^>vv<>>>^^v><<>^^^^<vvv><^^<>>>^><<^>><v>^<>^v^<vvvv^>>^><<>><^<v^>>vv^vv<^>>>><^>^v<^<v<^^<^<^><^<>>^<>v^v<<>v>v<>><<v<^v<<<^v<v<>><v<^<^>>v>v>><v^<v><>>>>>v^v>><^<^<v>><v^v>v<>v<v><<<>^^><>^^<^vv^^<>v><><><^>^^v^vv^<><>>>>v><>>^>^<<^<v<v^>v^^<v>>><<^^vv^^>><<^<vvvvv>><^>^>>^vv<><<>v>v^<<<^v<^^<<^vv>v<vvv><^v>vv^vvvv<^>^v^<<<<^v<<<>^vvv>^v><<>>v<v<^v^<>v>>^^v^vv>>>^v^^>>^<><><<<<^vv>>>>>v>v^>v<>><<<>^vv>^^^^<^^^>^^^^>^^^v^v><^>^>>>v<v<^<^^<<^v<<^<>vvv^^^^v^<<>vv>^^>>><^^v<^<<<v<>v<<><>v<><>^<v<<^>^^>><<v>^^><^^v<^<v^<^^<>^<>^v^>>^^v^v^<>v<>^<<<>^v^v>^<vvvv<>v<<>vv^<<>vv>>>>^<v><>>>v^><<>^v>><<>>^^v><^<>>vv^^^>vv^<^^v><v>>vvv^v<^v>v<<^^<>v^^^v^^>><v^>>v^v^vv<^>v^<^>^>v<v^><vvv^>^<>v<<^><^^<vv>v>>vv>v^>>^vvv>>v^>^^>vvv>>v><<>>^^v>v<v<><<<<^^v<^<>^v>><v^^^<>>vvv>v><<v>^^<^vvvv^v>v>^vv>^vv^^v><<>>^^>>v>>>^v><^>v<^^<>vv>v>v^^^>>^^^><<<<>>^>>^<^v<^<^<>^><v<<v>v<>^>>^<<v^^<v^vvvvv>>v^>>^^^<^^<><<><><>^v>vvv^>^^>v<^^>^<<^v^^^><>><<v<^^^<<<<>><>><<^^v><v^<<^v<v><<>^<v>^>^v>vv>><v^<^<v<v<v><^^^^>>><^<><^v^v<<<^>vv^<v^>^^v^>>><<<<^<>>><v>>>vv^>^^<v^v>>>v^<^<>vv>^v^^><<<v>v>v>><>>>v<^>^<>>^^<v^<<^<v^>><^v^><><v><><v^vvv<<>v>>><<><v>v<>>><^<^^v<v>^<<>^v>^>^>^^<^^><^>>>>><^^>vv>^<^^<><^>^<^^><^<v>v^>><^>^^^>>v^v<^>>^<v^<>^><><v>>^v<v^^^^v<^vv><^v>>^^^<>^<^<^>vv^v<<>vv>^<>v>^>^>vv^v<vv<^^^v<v>v>v^<^^^v><v<<<^^<><^^>>>><<^^v<<^>v<<vv^^^vv^vv^<v><>^v<v>>><vv^v<v^>>>>^<<<vv^>>v>^><<><<^<^><<vv^>v^>><>v^<<<>v^><>><<>>v><>v^<v><>^v>>><><>>>^vvv^v>vv>>>^^v^><<v<>>^^^v^^><<^v<><><v<<v<v<><<<v^<^^^<>v^^v<^^<<^>v<<v><^<<<<>><>^v>^<>^<^^v^vvv>^^<>^>><v^^vv^<>^<><<^^^v<^^^>>^^v>^>^<^>v><<^<>^v<><vv^vv<><<<<<<v<<v<<vv^<<^<^vvvv><v^v^v<>>>vvvvv^<vv^<^<>vv>^<><<v><>v^^<v<>>>vvv^><^<^>v^^<v>^<>>>^^v^<vv<<<<^><v<<<>v<<<v<>>^^^>^><>v>^v^>^<v^^><^v^^<^v^^>^v>>^^^<<><><<<>v>><^><>>>vvvv>v>>v>^^^^v<><vv<^<v^v>>^^vv<^>vvv>^v>>><v<v<v^<^>^^<vvv<vv<v>>^vv>^<<^<^<v>v^<vv^^^v>vv<v><v><v>^<v>>vv<>v>^^>v^^^<>v<>v^v<>^<><v><^>^<v^v><<^v^v^v<<v><<^^<^vv>^<^v><>v>><v^v^>><><><<<v<>v<^vv>v<v<<>^vvvvv^<<<^<vv><<><>v^<^v<<<^>v>v<v^<<^>v<<^<v><<<^>vv>v>^<^^v>>>><>vv>>vv>vvv<>^^<>^v^<>vvv<^^^vv>v><<<<vv^v><v^<^<<<><v<>^><<>^>v<^^<<>v>>v<<>><^^<<<^<^vv^^>v>v<>^^>>^v^vvv>^v^>v>>v>v>v>>vv^<><<<<>v^^>vv<^^v>>v<vv<^>>^<>^^v<><vv^<><v><v<<v^v<^^<^v^v<>v<<><vvv><<<^<^^<<>>^v>>>^v>>>v<>>^><<<><><<<v<vv<^<>v^^v^^>^<<^^^v^>^<<^>^>^>>>>v<v<v<>vv<<vv^<<^<vv>^^<^<<>><^v><><>^<v><v^>^v>^<^>^^><v><<^<v^^<<^><><v>v<>>><<^><v<^vvv^<<<>><<>^v^^><vv>vv<>^>^>vv<>v^<^<>vv><<>^<v<vv<^<^<><^vv<<^>>>v<>><<>>>^^^^<<^v>>v<vv>^^>v<v<vv^><<><>>>v>>^^v<^v^^>>v^<>>v^>><^<^^v<v<><<><>>^<>><^v<^^^^><>^>vv>>^vv<<>v<<<<<<><<<><<>><v><^^^<>>v<^><^vvv<>^>^^v>^<v><^v^vv^<<>v<<<<v>^vv>>v>vv<<^>^<>>vvv^<v<><>><>^^^^vvvvvvv<<>v<^><^^>vv^^<v<<^^<vvv<v<v<<>><<><v^^>><^<>^v^vv<<v<v<>><<>>>>>^vv<><v<>v><v>v>><v<v^vvvvv<><>v>>v<><<<^^<>^<^^<v>v^<vv>^vv^<>^<<^<vv><v<v>>v>^<>v^<<v^<v>^v<>><v>>>>^<<^^^v<^<>><^<><v>>vv^>^<^<^>>v^>^^^^>vvvvv>^v<^><^^<^^>^<^^^^^^^>v>>vv>v^^^v^^^<>v><^>>>v>^>^>^>vv<vv<^^>>^>>>v<>v><<^<<v^>^>>>>^^><^^<v<<<<>>v>v^v^^<>><v<^<<<<v^^^^<v<<<^>v>^^<vv<^^^^^v>^v^<v><>>^^>^v>^>^vv^v>v>v^>v>^>>^^^^>>^>>^><>><v>v>>><<^v^v^>^>^>>vv><<^>v<v<v^<<>>^v<<^v<<^><^>>^<v>^>vv>v>^^^>v^^<^<^^>vv>^^><v>>^v>^v<<^^^<<^v^>^<<^>vv^>>^<^v><<>v><^^^<^^>>vv>^vv>><^<<<^>vv^v>v<^<<<^<^<<><^^>>>v^<^^^>^<><^v>>^<<v<^v>>v^<^<^<^^^<v^><<vvv^<^v^vv^vv<v<<v<^<>^v>^^^<^^v<v<v><<<^<>^^^^v>v^v^v^v<v><v>>^v><vv^^^v>><<v^vvvv<<<^v<<><^>^<v^^v<>vvvv^vv<>^v<><>^^<>>vvv<^>><v^<<>v>v<>^v^>v^>><<>>^^<^v<>>^>^><>>^<v<v^^<^v><v^<v<><><^<<><v^v<<>vv<v<v<^>>><>vv^^<><<v<^^<<^<><^^^>^>>>^<^>>>^>><^^^<^v^^^v^v^v>v>v><vv>><vvv<<v><><^^>^v<v>><v><^><^<<>v^vv^v><^vv>^>>v<vv><^<^^v<^^vv<vv<v<v>v><v<vv<<>^^v^^v<<<^<>v^^^<><>>><^>v^^^v^vv<<<^>>v><^>v^<>>>>^<>^^vvv^^<><^>^^<><>^vvv^^<vv^>vv^^^^v<>vv<^^^v<<>><<vvvvv>v>^^^vv>><v><v<>vvvv<v^><^<>^>^<>v>v>v^vvvv<><^v>>>^^>><vvv<>^>^v^<vvv>v^vv^vv><>><>v^^v^vv<^v>vv>>v<v><^<<^v<>>^vv^<v>v><v>v>^v>^<v>^<<^>vv>v<^<^vv^<^><<<v<<^^vv<vvv><>v>v<vv^<><><^vvv>>vv<^^^v><^v><<^>^^v>^<>><v<>>^^<<<v><>^>^><vvvv<>^<<<><<<^<>>v^vv^>><^vv^^>^<v^<v>><^^>>>^v>^v<>^v<><^><vv>v^^^<^>>^<<^<^><<<^^<v<<^vv<^<>v<^<<^^<v<vv<<><v<v^<>^<>v>>v<^v>v<>^^vvv<>vv^v^<><v^vv^<^v^v><>^><v^<>>^^^<>>vv^<v>^^v><v<^>^^^^^^><>>vvv<<><><v<^>v<>v^v<<<<>v^>>>>^v>^^<v^>v><v^<^^v<<<<v<<<>^v<^>^v>v^^>v^^vvv>vv<>^>v><v<>^<vv><>>><<^>>><<v>v^^<^<<<<v^<>>>v<<<^v^vv<>^v>v<<<<>^^>><v><>v<v><^^>><>^>^>v>>><v>^vvvv<><><^>>^v^><<>^v<><><^><<<>v^^>v>^>v^<v^vv<>><^vv^^>^^><vv<<>v>v^^>><v^>^<^<>>>vv<>^>v>v^<>v<^<<v>>>^<>v^>v>>vv^^<>>v<v<<^<>v>v^<^^^>v^^>v>v>vv<^<v>v^^><<<v<><>^^<>v>v>^^v>v>v^v>>^<v^v>><>^^>^<>>>^vv^><v^<^>v^>^v><^>^^^vv^^v<>vv<>>^><<^v>^v^>>v>^v^<<^^^vv<<vvv>^vv^v<<<v^^<<><vv<>>^^vv>^^^vv>><><v>v<^v^>>>vv^><>><v<^v<>^><v<^^^^>><^<>v>^v<^vv>v>v<^<>v>v>^<vv>v<^>vvv<v^<vv<vv<>v>^><v^v<>>>>>v>><^v<>v>^v><v^v^vv<>^<vvv^>><v^<vvv^^<^vvv^v^<>><v>v^^v<><>v^^^v<<<^><v<<<>><<vv<<><vvv^v>>v^v<v^>>><<v<>^v><>vv<<v>v^vv>v^v<^<vv<><><^v>^<vv>v^^>>^^^><vv<><^>>>^<v^<<^^>^>vv^><v<vvv>^^>>>^><<vv>vv>^<>>^^><^v><<>^<<<v^>^
produz 1408 luzes acesas.
Para gerar entrada, você pode usar o seguinte script Python:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Pontuação de código-golfe padrão , vencedor é o menor número de bytes.
Respostas:
MATL ,
19181713 bytes5 bytes de desconto, graças à idéia de @ LeakyNun (veja sua resposta ) de usar a unidade imaginária como base para exponenciação.
Experimente online! Casos de teste: 1 , 2 .
Explicação
O código rastreia o caminho usando etapas da unidade no plano complexo. Depois, conta quantas vezes cada posição foi visitada e gera quantas posições foram visitadas um número ímpar de vezes.
fonte
0+1i 0-1i -1+0i 1+0i
i
vez dej
?Python, 68 bytes
25 bytes graças ao Sp3000.
2 bytes graças à idéia de Luis Mendo de usar o módulo 11.
17 bytes graças ao xnor.
Ideone it!
fonte
d^={p}
elen(d)
.Java 8,
169130127 bytesAgradecimentos a Leaky Nun por salvar
2932 bytes.Ungolfed (sorta):
fonte
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
pode serfor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
para salvar 8 bytes: Experimente online.Gelatina , 13 bytes
Um porto da resposta de Luis Mendo em MATL
Experimente online!
Créditos do
œ^/
truque para Dennisfonte
Perl, 49 bytes
Inclui +1 para
-p
executar com a cadeia de controle em STDINlights.pl
:Se a entrada for restrita a 10000 bytes, isso será reduzido para
44+1
:fonte
TSQL,
238235203191 bytesCriando uma tabela na memória usando SQL recursivo. Selecionando e calculando a partir dessa tabela (código de uma linha).
Golfe:
Ungolfed:
Violino
fonte
Mathematica, 64 bytes
Um porto da resposta MATL de Luis Mendo .
fonte
SQF , 160 bytes
Usando o formato de função como um arquivo:
Ligue como:
"STRING" call NAME_OF_COMPILED_FUNCTION
Ungolfed:
fonte
compile "CODE"
.Python:
207189181 BytesEntrada é uma sequência.
Agradeço ao @LuisMendo por apontar que eu só posso recuar em 1 espaço. Maldito meus professores de Python por me dizerem para sempre fazer incrementos de quatro.
Corrigi-lo para que a entrada fosse obtida em vez de presumida armazenada me salvou 8 bytes.
fonte
input()
-lo e armazená-lo em algum lugar #Ruby, 64 + 6 = 70 bytes
+6 bytes para
-rset
sinalizador.Um porto direto da resposta em Python da Leaky Nun .
Veja em repl.it: https://repl.it/Cnjy
fonte
-rset
bandeira conta apenas como 4 bytes.-rset
sinalizador agora conta como 0 bytes.-e
ser "gratuito" em Ruby significa-n
1 byte em vez de 3, mas as pessoas que não sabem disso podem relatar diferentes contas), mas cada uma delas próprio. BTW,Set[]
economiza 2 bytesSet.new
.rset
resposta:bytes.map
economiza 4 bytes,each_char
porque você pode atender aord
chamada.R,
17215613710196 bytesUsando a ideia complexa de avião do @ LeakyNun.
destroçado
fonte
Javascript (ES6),
979385 bytesEDIT: -8 bytes, graças a Neil
Teste:
fonte
[...i]
vez dei.split('')
. Além disso, acho que você pode escrever(p=1E6,v=[-1,1,-1E3,1E3],0)
como0,p=1E6,v=[-1,1,-1E3,1E3]
.^
primeiro,search
economiza um byteindexOf
. (Você precisa do^
para ser o primeiro, porquesearch
trata^
como um metacaractere regexp.)S=
parte.S=
") é opcional (como você pode chamar a função como(«function code here»)(«argument»)
).PowerShell , 136 bytes
Experimente online!
Acho que há mais para otimizar aqui, mas esse é o menor valor que recebi no momento.
Mais fácil de ler:
Explicação: A entrada é alterada para uma matriz de caracteres e cada peça é correspondida a um dos 4 primeiros casos de chave para aumentar a coordenada x ou y. Tudo coincide com o quinto caso em que decidimos se uma luz é ligada ou desligada. O comprimento no final determina o número total de interruptores ativados.
Nota: A vírgula nas coordenadas é necessária para que não ocorram colisões como (10,10) e (101,0)
fonte
-ne
trabalha com matriz 115 bytesPowerShell ,
9695 bytesExperimente online!
Desenrolado:
PowerShell ,
112109 bytesUm porto da resposta MATL de Luis Mendo .
Experimente online!
fonte
Na verdade ,
2423 bytesEste é um porto da resposta MATL de Luis Mendo . Sugestões de golfe são bem-vindas. Experimente online!
Edit: Um byte graças a Leaky Nun.
Ungolfing:
fonte
:11
como4P
, eu sou incapaz de chegar a algum conselho golfC,
203190189 bytesO (n ^ 2) com algoritmo de memória O (1).
Ele percorre todas as posições, verifica se essa posição ocorre mais cedo e, se não, verifica se essa posição ocorre uma quantidade par / ímpar de tempo depois, adicionando-a ao total.
fonte
Perl,
102 98 9190 (89 + -n) bytesLegível:
fonte
for/./g
vez dewhile
, o que permite que você use emord()
vez deord($&)
.say
em vez deprint
(uma vez-M5.010
ou-E
livres) e uso-n
da bandeira (custo 1 byte) em vez de fazer$_=<>
.C #
210205139138135 135128113 bytesExplicação
Count
paraSum
fonte
Distinct()
vez deGroupBy(z=>z)
? Você também pode usarSum(g=>g.Count()%2)
, já que é sempre 0 ou 1, devo pensar.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(basta adicionar um número que calculamos do char com algum módulo estúpido e tal). Eu não testei, vou deixar você consertar se estiver quebrado;) Isso deve economizar muitos bytes, se eu não errei! (E não há mal-humorado um par mais barato de expressões, mas estes são apenas o que eu poderia vir acima com nos últimos 20 minutos)Distinct()
não funciona (a menos que esteja faltando alguma coisa), pois retorna uma de cada sequência, em vez de fornecer uma contagem das ocorrências.c%6%3-1
simplesmente mapeia os valores ASCII de<>v^
to-1,1,0,0
(change inx
, note os valores zero) e a outra expressão produz um resultado semelhante paray
. Provavelmente existem expressões melhores (eu não parecia muito duro), uma gota de ternário pode valer a pena. Esta foi a minha primeira tentativa, o que talvez torna mais evidente o que está acontecendo:(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
(mas obviamente é um pouco mais!)Perl 6 , 47 bytes
Experimente online!
(-i, *i, ... *)
é o infinito seqüência repetindo-i
,1
,i
,-1
, ...[.ords X% 11]
fatias nessa sequência com os valores ordinais dos caracteres na sequência de entrada, módulo 11.[\+]
executa uma redução triangular (ou "varredura") nesses valores, produzindo uma lista das coordenadas visitadas no plano complexo.bag()
cria umBag
contendo essas coordenadas, cada uma das quais tem uma multiplicidade associada (o número de vezes que apareceu na lista).{*}
busca todas as multiplicidades da bolsa.X% 2
cruza essas multiplicidades com o número2
usando o operador de módulo%
. Multiplicidades ímpares resultam em a1
, e multiplicidades pares resultam em a0
.sum
soma esses remanescentes.fonte
Lisp comum ,
198 bytes186 bytesSolução:
Executá-lo!
Explicação:
Nota: i (entrada) é definido como teste:
fonte
(99 1 -99 -1)
para barbear 2 bytes ..K (oK) ,
372927 bytesSolução:
Experimente online!
Explicação:
Crie uma lista de etapas, crie um caminho, agrupe, conte cada repetição, se o mod 2 for 0 e, em seguida, desativado. Parecia muito AdventOfCode-ish.
Notas:
fonte
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?krrp , 137 bytes
Experimente online!
Explicação
Experimente online!
Infelizmente, o krrp possui apenas uma implementação bastante lenta, dificultando a verificação dos longos casos de teste.
krrp Conversão de strings .
fonte
APL (Dyalog Unicode) ,
2120 bytes SBCSExperimente online!
usa
⎕io←1
⎕
entrada'^<v'⍳
encontre o índice de cada caractere de entrada entre'^<v'
, isto é,^
torna-se 1,<
2,v
3 e qualquer outra coisa 40j1*
i ao poder (a constante imaginária)+\
somas parciais⊢⌸
matriz na qual cada linha é a lista de ocorrências (índices) de uma soma parcial exclusiva; acolchoado com 0s para torná-lo retangular×
signum - todos os índices se tornam 1s, o preenchimento permanece 0s≠/
soma mod 2 para cada linha+/
somafonte
Ruby , 67 bytes
Inspirado na solução C da orlp. Monta uma lista de todas as posições visitadas e, em seguida, para cada uma delas (usando a interseção setwise,
(d&d)
pois economiza um byted.uniq
), conte as que possuem um número ímpar de ocorrências (tecnicamente, mapeie-as para as ocorrências% 2 e as junte , já que isso faz a mesma coisa)Experimente online!
fonte