Eres una pequeña mota en un avión cartesiano. Reflexionando sobre su existencia, decide deambular por su avión y tocar cosas. Notará que cada par de coordenadas que visita tiene un interruptor de luz. Para entretenerte, decides alternar cada cambio que encuentres.
El Reto : Crear un programa que tendrá una entrada de longitud aleatoria, utilizando sólo los caracteres v
, ^
, <
, y >
. Estos personajes corresponden a movimientos.
<
te mueve una unidad hacia la izquierda^
te mueve una unidad hacia arriba>
te mueve una unidad hacia la derechav
te mueve una unidad hacia abajo
Usando esta entrada generada aleatoriamente, calcule cuántos interruptores quedarán en la ON
posición, suponiendo que comience en (0,0), todas las luces comiencen en el OFF
estado y no encienda ninguna luz hasta que realice su primer movimiento. (Es decir, si comienza en (0,0) y sube 1 unidad a (0,1), ahora habrá 1 luz encendida). Si se encuentra con un interruptor que está en la ON
posición, se activará OFF
.
Casos de prueba:
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
produce 125 luces encendidas.
>>><^>>>^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^>^
produce 1408 luces encendidas.
Para generar entradas, puede usar el siguiente script de Python:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Código estándar de puntuación de golf , el ganador es el número más pequeño de bytes.
Respuestas:
MATL ,
19181713 bytes5 bytes de descuento gracias a la idea de @ LeakyNun (ver su respuesta ) de usar la unidad imaginaria como base para la exponenciación.
Pruébalo en línea! Casos de prueba: 1 , 2 .
Explicación
El código rastrea la ruta utilizando pasos unitarios en el plano complejo. Luego cuenta cuántas veces se visitó cada posición y genera cuántas posiciones se visitaron un número impar de veces.
fuente
0+1i 0-1i -1+0i 1+0i
i
lugar dej
?Python, 68 bytes
25 bytes gracias a Sp3000.
2 bytes gracias a la idea de Luis Mendo de tomar módulo con 11.
17 bytes gracias a xnor.
Ideone it!
fuente
d^={p}
ylen(d)
.Java 8,
169130127 bytesGracias a Leaky Nun por guardar
2932 bytes.Sin golf (más o menos):
fuente
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
puede serfor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
para guardar 8 bytes: Pruébelo en línea.Jalea , 13 bytes
Un puerto de la respuesta de Luis Mendo en MATL
Pruébalo en línea!
Créditos del
œ^/
truco para Dennisfuente
Perl, 49 bytes
Incluye +1 para
-p
Ejecutar con la cadena de control en STDINlights.pl
:Si la entrada está restringida a 10000 bytes, esto se reduce a
44+1
:fuente
TSQL,
238235203191 bytesCrear una tabla en memoria usando SQL recursivo. Seleccionar y calcular de esa tabla (un código de línea).
Golfizado:
Sin golf:
Violín
fuente
Mathematica, 64 bytes
Un puerto de la respuesta MATL de Luis Mendo .
fuente
SQF , 160 bytes
Usando el formato de función como archivo:
Llamar como:
"STRING" call NAME_OF_COMPILED_FUNCTION
Sin golf:
fuente
compile "CODE"
.Python:
207189181 BytesLa entrada es una cadena.
Gracias a @LuisMendo por señalar que en realidad solo puedo sangrar por 1 espacio. Malditos sean mis maestros de Python por decirme que siempre lo haga en incrementos de cuatro.
Arreglarlo para que la entrada se obtuviera en lugar de supuestamente almacenada realmente me ahorró 8 bytes.
fuente
input()
y guárdelo en algún lugarRuby, 64 + 6 = 70 bytes
+6 bytes para
-rset
bandera.Un puerto directo de la respuesta Python de Leaky Nun .
Véalo en repl.it: https://repl.it/Cnjy
fuente
-rset
bandera solo cuenta como 4 bytes.-rset
bandera ahora cuenta como 0 bytes.-e
ser "libre" en Ruby significa-n
1 byte en lugar de 3, pero las personas que no saben sobre eso podrían informar diferentes bytecounts) pero a cada uno propio. Por cierto,Set[]
ahorra 2 bytesSet.new
.rset
respuesta:bytes.map
ahorra 4 byteseach_char
porque puede sacar laord
llamada.R,
17215613710196 bytesUsando la idea del plano complejo de @ LeakyNun.
sin golf
fuente
Javascript (ES6),
979385 bytesEDITAR: -8 bytes, gracias a Neil
Prueba:
fuente
[...i]
lugar dei.split('')
. Además, creo que puedes escribir(p=1E6,v=[-1,1,-1E3,1E3],0)
como0,p=1E6,v=[-1,1,-1E3,1E3]
.^
primero,search
guarde un byteindexOf
. (Necesitas^
ser el primero porque sesearch
trata^
como un metacaracter regexp.)S=
parte.S=
") es opcional (ya que puede llamar a la función como(«function code here»)(«argument»)
).PowerShell , 136 bytes
Pruébalo en línea!
Creo que hay más para optimizar aquí, pero este es el más bajo que obtuve por ahora.
Más fácil de leer:
Explicación: La entrada se cambia a una matriz de caracteres y cada pieza se corresponde con uno de los primeros 4 casos de cambio para incrementar la coordenada x o y. Todo coincide con el quinto caso en el que decidimos si una luz está encendida o apagada. La longitud al final determina el número total de interruptores activados.
Nota: La coma en las coordenadas es necesaria para que no tengamos colisiones como (10,10) y (101,0)
fuente
-ne
funciona con una matriz de 115 bytesPowerShell ,
9695 bytesPruébalo en línea!
Desenrollado:
PowerShell ,
112109 bytesUn puerto de la respuesta MATL de Luis Mendo .
Pruébalo en línea!
fuente
En realidad ,
2423 bytesEste es un puerto de la respuesta MATL de Luis Mendo . Sugerencias de golf bienvenidas. Pruébalo en línea!
Editar: Un byte gracias a Leaky Nun.
No golfista:
fuente
:11
como4P
, no puedo dar ningún consejo de golfC,
203190189 bytesO (n ^ 2) con el algoritmo de memoria O (1).
Se repite en cada posición, verifica si esta posición ocurre antes, y si no, verifica si esta posición ocurre una cantidad de tiempo par / impar después, agregándola al total.
fuente
Perl,
102 98 9190 (89 + -n) bytesLegible:
fuente
for/./g
lugar dewhile
, lo que le permite usarlo enord()
lugar deord($&)
.say
en lugar deprint
(ya-M5.010
o-E
están libres) y el uso-n
de la bandera (costo de 1 byte) en lugar de hacerlo$_=<>
.C #
210205139138135128113 BytesExplicación
Count
aSum
fuente
Distinct()
lugar deGroupBy(z=>z)
? También puede usarSum(g=>g.Count()%2)
, ya que siempre es 0 o 1, debería pensar.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(simplemente agregue un número que calculamos desde el carácter con un módulo estúpido y tal). No lo he probado, dejaré que lo arregles si está roto;) ¡Esto debería ahorrar muchos bytes si no lo he estropeado! (Y hay un par de expresiones más baratas, pero estas son justo lo que se me ocurrió en los últimos 20 minutos)Distinct()
no funciona (a menos que me falte algo) ya que devuelve una de cada cadena, en lugar de darme un recuento de las ocurrencias.c%6%3-1
simplemente asigna valores ASCII de<>v^
to-1,1,0,0
(change inx
, note los valores cero) y la otra expresión produce un resultado similar paray
. Probablemente hay mejores expresiones (no me fijé mucho), una caída de ternary podría dar sus frutos. Este fue mi primer esfuerzo, lo que quizás hace más obvio lo que está sucediendo:(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
(¡pero obviamente es un poco más largo!)Perl 6 , 47 bytes
Pruébalo en línea!
(-i, *i, ... *)
es la infinita repetición de la secuencia-i
,1
,i
,-1
, ...[.ords X% 11]
se divide en esa secuencia con los valores ordinales de los caracteres en la cadena de entrada, módulo 11.[\+]
realiza una reducción triangular (o "exploración") en esos valores, produciendo una lista de las coordenadas visitadas en el plano complejo.bag()
crea un queBag
contiene esas coordenadas, cada una de las cuales tiene una multiplicidad asociada (el número de veces que apareció en la lista).{*}
recupera todas las multiplicidades de la bolsa.X% 2
cruza esas multiplicidades con el número2
usando el operador de módulo%
. Las multiplicidades impares resultan en a1
, las multiplicidades pares resultan en a0
.sum
suma esos restos.fuente
Lisp común ,
198 bytes186 bytesSolución:
¡Ejecutarlo!
Explicación:
Nota: i (entrada) se define prueba como:
fuente
(99 1 -99 -1)
para afeitar 2 bytes ..K (oK) ,
372927 bytesSolución:
Pruébalo en línea!
Explicación:
Cree una lista de pasos, cree la ruta, el grupo, cuente cada repetición, si el mod 2 es 0, luego apague, de lo contrario, encienda. Me sentí muy AdventOfCode-ish.
Notas:
fuente
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?krrp , 137 bytes
Pruébalo en línea!
Explicación
Pruébalo en línea!
Desafortunadamente, krrp solo tiene una implementación bastante lenta, lo que hace que los largos casos de prueba sean difíciles de verificar.
Conversión de cadenas krrp .
fuente
APL (Dyalog Unicode) , SBCS de
2120 bytesPruébalo en línea!
usos
⎕io←1
⎕
entrada'^<v'⍳
encuentra el índice de cada entrada de caracteres'^<v'
, es decir, se^
convierte en 1,<
2,v
3 y cualquier otra cosa 40j1*
i al poder (la constante imaginaria)+\
sumas parciales⊢⌸
matriz en la que cada fila es la lista de ocurrencias (índices) de una suma parcial única; acolchado con 0 para hacerlo rectangular×
signum: todos los índices se convierten en 1s, el relleno sigue siendo 0s≠/
suma mod 2 para cada fila+/
sumafuente
Rubí , 67 bytes
Inspirado en la solución C de orlp. Ensambla una lista de todas las posiciones visitadas, y luego para cada una única (usando la intersección vertical
(d&d)
ya que ahorra un byted.uniq
), cuente las que tienen un número impar de ocurrencias (técnicamente, mapee las ocurrencias% 2 y sumelas juntas , ya que eso hace lo mismo)Pruébalo en línea!
fuente