Я думаю, что это будет хорошим испытанием: http://adventofcode.com/2016/day/1
Описание задания
При заданной последовательности поворотов и расстояний по схеме (L | R) [1-9] [0-9] * укажите манхэттенское расстояние между начальной и конечной точками, то есть минимальное количество вертикальных и горизонтальных перемещений на сетка.
Примеры
Например, если мы предполагаем, что вы начали смотреть на север:
После R2, L3 оставляет вас в 2 кварталах на восток и в 3 кварталах на север, или в 5 кварталах. R2, R2, R2 оставляют вас в 2 кварталах к югу от вашей стартовой позиции, которая находится в 2 кварталах. R5, L5, R5, R3 оставляет вас в 12 кварталах.
Технические детали
Вы можете выбрать разделитель между шагами (например: "\ n", "," или ","). Вы должны дать ответ в виде целого числа в основании 10.
Не дубликат!
Это не дубликат по нескольким причинам:
- Ходы не одинаковы. Здесь они - вращения , а не направления.
- Я хочу расстояние до Манхэттена, а не евклидиан.
Ответы:
Python 3,
10999104101 байтЭто простой ответ, который использует комплексные числа, с вводом в виде строки, разделенной пробелом, или строки, разделенной новой строкой. Предложения по игре в гольф приветствуются!
Изменить: -13 байт благодаря Labo. +5 байт для преобразования в int.
Ungolfing
источник
PHP, 93 байта
сломать
источник
Python 2, 86 байт
Отслеживает ток
x
иy
координаты. При повороте вместо обновления направления вращается текущее значение, так что движение всегда происходит в положительном направлении х. Комплексные числа были слишком дороги, чтобы извлечь координаты.источник
Python 2,
103102 байтаrepl.it
Ввод - это строка направлений, разделенных пробелом, например
"R5 L5 R5 R3"
.Распечатывает манхэттенское расстояние между начальной точкой и пунктом назначения.
Как?
Начинается в начале комплексной плоскости
l=0
;С нарастающим четверть правого поворота счетчика
c=0
;Для каждой инструкции
i
вращение анализируется путем сравнения первого символа направления с символом'N'
иc
корректируется соответствующим образом.Расстояние, на которое нужно пройти, анализируется,
int(i[1:])
и инструкция исполняется, принимая столько шагов размером с блок в направлении, заданном посредством принятияc
степени0+1j
с1j**c
.Окончательное Манхэттенское расстояние - это сумма абсолютных расстояний от начала координат в двух направлениях - мнимом и реальном; достигается с
abs(l.imag)+abs(l.real)
источник
cmp
как мой ответ, дайте мне знать, и я удалю.JavaScript (ES2016), 98
1002 байта сохранены, спасибо @Neil
100 байт для ES6
Меньше гольфа
Тест (ES6)
источник
s=>s.replace(/.(\d+)/g,(c,n)=>(d+=c<'R'||3,n*=~-(d&2),d&1?x+=n:y+=n),x=y=d=0)&&(x<0?-x:x)+(y<0?-y:y)
, который в настоящее время два байт короче , чем ответ ES6, благодаряc<'R'||3
иn*=~-(d&2)
уловкам ,