Вы немного пятнышко на декартовой плоскости. Размышляя о своем существовании, вы решаете бродить вокруг своего самолета и трогать вещи. Вы замечаете, что у каждой пары координат, которую вы посещаете, есть выключатель света. Чтобы развлечь себя, вы решаете переключать каждый переключатель, с которым вы сталкиваетесь.
Задача : Создать программу , которая будет принимать ввод произвольной длины, используя только символы v
, ^
, <
, и >
. Эти символы соответствуют движениям.
<
перемещает вас на одну единицу влево^
перемещает вас на одну единицу вверх>
перемещает вас на одну единицу вправоv
перемещает вас на одну единицу вниз
Используя этот случайно сгенерированный вход, вычислите, сколько переключателей останется в ON
позиции, предполагая, что вы начинаете с (0,0), все источники света начинаются в этом OFF
состоянии, и вы не включаете источники света, пока не сделаете свой первый ход. (Это означает, что если вы начнете с (0,0) и переместитесь на 1 единицу вверх к (0,1), теперь будет включен 1 индикатор). Если вы столкнетесь с переключателем, который находится в ON
положении, он будет повернут OFF
.
Тестовые случаи:
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
дает 125 лампочек.
>>><^>>>^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^>^
дает 1408 свет на.
Для генерации ввода вы можете использовать следующий скрипт Python:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Стандартный код-гольф- выигрыш, победителем является наименьшее количество байтов.
Ответы:
MATL ,
19181713 байт5 байт благодаря идее @ LeakyNun (см. Его ответ ) об использовании воображаемой единицы в качестве основы для возведения в степень.
Попробуйте онлайн! Тестовые случаи: 1 , 2 .
объяснение
Код отслеживает путь, используя единичные шаги в комплексной плоскости. Затем он подсчитывает, сколько раз каждая позиция была посещена, и выводит, сколько позиций было посещено нечетное количество раз.
источник
0+1i 0-1i -1+0i 1+0i
i
вместоj
?Python, 68 байт
25 байтов благодаря Sp3000.
2 байта благодаря идее Луиса Мендо брать модуль с 11.
17 байтов благодаря xnor.
Идео это!
источник
d^={p}
иlen(d)
.Java 8,
169130127 байтСпасибо Leaky Nun за сохранение
2932 байтов.Ungolfed (Сорта):
источник
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
можноfor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
сохранить 8 байтов: попробуйте онлайн.Желе , 13 байт
Порт ответа Луиса Мендо в MATL
Попробуйте онлайн!
Кредиты
œ^/
уловки Деннисуисточник
Perl, 49 байт
Включает +1 для
-p
Run с управляющей строкой на STDINlights.pl
:Если ввод ограничен до 10000 байтов, это сокращается до
44+1
:источник
TSQL,
238235203191 байтСоздание таблицы в памяти с использованием рекурсивного SQL. Выбор и расчет из этой таблицы (однострочный код).
Golfed:
Ungolfed:
скрипка
источник
Mathematica, 64 байта
Порт ответа Луиса Мендо на MATL .
источник
SQF , 160 байт
Использование формата «функция как файл»:
Звоните как:
"STRING" call NAME_OF_COMPILED_FUNCTION
Ungolfed:
источник
compile "CODE"
.Питон:
207189181 байтВвод - это строка.
Спасибо @LuisMendo за указание на то, что я могу сделать отступ только на 1 пробел. Черт возьми, мои учителя Python говорят мне, что всегда делай это с шагом четыре.
Исправление так, чтобы ввод был получен, а не предполагался сохраненным, фактически спас мне 8 байтов.
источник
input()
и храните его где-нибудьРубин, 64 + 6 = 70 байт
+6 байт за
-rset
флаг.Прямой порт ответа Python про Лаки Нун .
Смотрите его на repl.it: https://repl.it/Cnjy
источник
-rset
флаг считается только 4 байта.-rset
флаг теперь считается как 0 байтов.-e
что «свободный» в Ruby означает-n
1 байт вместо 3, но люди, которые не знают об этом, могут сообщать о разных счетах по счетам), но каждому собственный. Кстати,Set[]
экономит 2 байтаSet.new
.rset
ответ без ответа:bytes.map
экономит 4 байта,each_char
потому что вы можете принятьord
вызов.R
17215613710196 байтИспользуя идею сложной плоскости @ LeakyNun.
ungolfed
источник
Javascript (ES6),
979385 байтРЕДАКТИРОВАТЬ: -8 байт, благодаря Нейлу
Тест:
источник
[...i]
вместоi.split('')
. Кроме того, я думаю, что вы можете написать(p=1E6,v=[-1,1,-1E3,1E3],0)
как0,p=1E6,v=[-1,1,-1E3,1E3]
.^
чтобы быть первым,search
сохраните байтindexOf
. (Вам нужно^
быть первым, потому чтоsearch
рассматривается^
как метасимвол регулярного выражения.)S=
часть.S=
") является необязательным (так как вы можете просто вызвать функцию как(«function code here»)(«argument»)
).PowerShell , 136 байт
Попробуйте онлайн!
Я думаю, что здесь есть что оптимизировать, но это самый низкий показатель, который я получил на данный момент.
Легче читать:
Объяснение: Входные данные заменены на массив символов, и каждый фрагмент соответствует одному из первых 4 случаев переключения, чтобы увеличить координаты x или y. Все соответствует пятому случаю, когда мы решаем, будет ли свет включен или выключен. Длина в конце определяет общее количество включенных переключателей.
Примечание: запятая в координатах необходима, поэтому мы не получаем столкновения типа (10,10) и (101,0)
источник
-ne
работает с массивом 115 байтовPowerShell ,
9695 байтПопробуйте онлайн!
раскатали:
PowerShell ,
112109 байтПорт ответа Луиса Мендо на MATL .
Попробуйте онлайн!
источник
На самом деле ,
2423 байтаЭто порт ответа MATL Луиса Мендо . Предложения по игре в гольф приветствуются. Попробуйте онлайн!
Изменить: один байт благодаря Leaky Nun.
Ungolfing:
источник
:11
как4P
, я не могу придумать какой-либо совет по гольфуC
203190189 байтовO (n ^ 2) с алгоритмом памяти O (1).
Он проходит по каждой позиции, проверяет, встречается ли эта позиция раньше, и, если нет, проверяет, происходит ли эта позиция четное / нечетное количество времени после этого, добавляя ее к общему количеству.
источник
Perl
102 98 9190 (89 + -n) байтУдобочитаемый:
источник
for/./g
вместоwhile
, что позволяет использоватьord()
вместоord($&)
.say
вместоprint
(с-M5.010
или-E
бесплатно) и использовать-n
флаг (стоимость 1 байт) , а не делать$_=<>
.C #
210205139138135128113 байтобъяснение
Count
наSum
источник
Distinct()
а неGroupBy(z=>z)
? Вы также можете использоватьSum(g=>g.Count()%2)
, так как это всегда 0 или 1, я должен думать.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(просто добавьте число, которое мы вычисляем из char, с некоторым глупым модулем и тому подобное). Я не проверял, я позволю вам исправить это, если он сломан;) Это должно сэкономить много байтов, если я не испортил! (И есть несколько более дешевая пара выражений, но это то, что я мог придумать за последние 20 минут)Distinct()
не работает (если я что-то упускаю ), так как возвращает одну из каждой строки, а не подсчитывает количество случаев.c%6%3-1
просто отображает значения ASCII<>v^
в-1,1,0,0
(изменитьx
, примечание нулевые значения), а другое выражение дает аналогичный результат дляy
. Возможно, есть лучшие выражения (я выглядел не очень усердно), капля троичного камня может окупиться. Это была моя первая попытка, которая, возможно, делает более очевидным, что происходит:(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
(но, очевидно, это немного дольше!)Perl 6 , 47 байт
Попробуйте онлайн!
(-i, *i, ... *)
это бесконечное повторение последовательности-i
,1
,i
,-1
, ...[.ords X% 11]
срезы в эту последовательность с порядковыми значениями символов во входной строке, по модулю 11.[\+]
выполняет треугольное сокращение (или «сканирование») этих значений, создавая список координат, посещаемых на комплексной плоскости.bag()
создаетBag
содержащий те координаты, каждая из которых имеет связанную кратность (количество раз, которое это появилось в списке).{*}
получает все кратности из сумки.X% 2
скрещивает эти кратности с числом,2
используя оператор модуля%
. Нечетные кратности приводят к a1
, четные кратности приводят к a0
.sum
суммирует эти остатки.источник
Common Lisp ,
198 байт186 байтРешение:
Запустить его!
Объяснение:
Примечание: i (вход) определяется как проверка:
источник
(99 1 -99 -1)
чтобы побрить 2 байта ..K (ок) ,
372927 байтРешение:
Попробуйте онлайн!
Объяснение:
Создайте список шагов, создайте путь, группу, считайте каждый повтор, если mod 2 равен 0, то выключен, иначе включен. Чувствовал себя очень AdventOfCode-иш.
Заметки:
источник
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?кррп , 137 байт
Попробуйте онлайн!
объяснение
Попробуйте онлайн!
К сожалению, krrp имеет только одну довольно медленную реализацию, что затрудняет проверку длинных тестовых случаев.
Кррп Строковое преобразование .
источник
APL (Dyalog Unicode) ,
2120 байтов SBCSПопробуйте онлайн!
использования
⎕io←1
⎕
вход'^<v'⍳
найти индекс каждого входного символа среди'^<v'
, то есть^
становится 1,<
2,v
3 и что-нибудь еще 40j1*
я к власти (мнимая постоянная)+\
частичные суммы⊢⌸
матрица, в которой каждая строка представляет собой список вхождений (индексов) уникальной частичной суммы; дополнено 0, чтобы сделать его прямоугольным×
signum - все индексы становятся равными 1, отступы остаются равными 0≠/
сумма мод 2 для каждой строки+/
суммаисточник
Рубин , 67 байт
Вдохновленный решением orlp's C. Собирает список всех посещенных позиций, а затем для каждой уникальной (с использованием заданного пересечения,
(d&d)
так как сохраняет байты большеd.uniq
), подсчитывает числа с нечетным числом вхождений (технически, сопоставляет его с вхождениями% 2 и суммирует их вместе , так как это делает то же самое)Попробуйте онлайн!
источник