Найти сокровище, спрятанное пиратами, действительно легко. Все, что вам нужно для этого - карта. Широко известно, что пираты рисуют карты от руки и описывают алгоритм поиска места следующим образом: «Встаньте возле одинокой пальмы, сделайте 30 шагов к лесу, 15 к озеру, ...»
Путешествие по такому маршруту - это, как правило, прекрасная возможность увидеть пейзажи ... Однако сейчас ни у кого нет на это времени. Вот почему искатели сокровищ попросили вас написать программу, которая бы определяла точное местоположение сокровища, используя данную карту.
вход
Ввод состоит из нескольких инструкций <Direction> <Distance>
, разделенных запятыми (за которыми следуют по одному пробелу).
Направление одно из следующих:
N
- север, S
- юг, E
- восток, W
- запад,
NE
- северо-восток, NW
- северо-запад, SE
- юго-восток, SW
- юго-запад.
Расстояние - это целое число (от 1 до 1000).
Выход
Результатом являются координаты, в которых вы заканчиваете после выполнения инструкций, с тремя десятичными знаками, разделенными запятой и пробелом. Стартовая локация имеет нулевые координаты (0, 0).
Первая координата X (Восток означает координаты больше нуля, Запад означает меньше нуля).
Вторая координата Y (север означает больше нуля, юг означает меньше нуля).
Примеры
1. N 3, E 1, N 1, E 3, S 2, W 1
3.000, 2.000
2. NW 10
-7.071, 7.071
3. NE 42, NW 42, SE 42, SW 42
0.000, 0.000
Источник (на украинском). Формат ввода там другой.
-3.000, 2.000
.(print (word (form xcor 4 3) ",) (form ycor 4 3))
. Но я не уверен, насколько простым будет анализ данных.Ответы:
Рубин 1.9,
175171162153130120117источник
?i.to_c
можно сократить до1.i
-4 байтов.Хаскелл (291)
источник
C99 (319 символов)
вход в
stdin
, тестовый прогон на ideone :)источник
Питон,
158154150 символовисточник
D=dict(N=1j,E=1,S=-1j,W=-1)
[153] Строка 2:j
действительно нужна? [152] Строки 3-4: Если вы переключаетесь на Python 3,raw_input
→input
и даже после тогоprint
, как вам нужно использовать круглые скобки , вы сохраняете 2 символа [150].real
и.imag
к работе.imag
и другоеreal
...JavaScript,
179164170168158156153 символа(E|W)
в регулярном выражении(.)
d
n
вместо новой переменнойd
153: Лично я думаю, что это редактирование делает его в десять раз ужаснее, но на три символа короче. Он основан на нестандартном поведении, которое вы можете вызывать объекты RegExp как функции:
/./g('string')
это то же самое, что и/./g.exec('string')
:for(p=prompt(X=Y=0),R=/(N|S)?(.)? (\d+)/g;[,y,x,n]=R(p)||0;X+=x?x<'W'?n:-n:0)n/=x&&y?Math.SQRT2:1,Y+=y?y<'S'?n:-n:0;alert(X.toFixed(3)+', '+Y.toFixed(3))
источник
Haskell, 199 символов
источник
Скала (
367, 332)источник
Ява
(459) (445) (402) (382) (363)(352)ввод ввода
источник
PowerShell, 178
Вероятно, это может привести к потере до 10 символов при уменьшении точности √2 / 2.
источник
C (gcc) ,
155152 байта-3 байта благодаря потолку
Попробуйте онлайн!
источник
Groovy (215)
читает ввод как аргументы программы. Пример:
источник
Perl 5
-n
, 122 байтаПопробуйте онлайн!
источник
J , 93 байта
Попробуйте онлайн!
источник