Ваша задача - если вы решите принять ее - состоит в том, чтобы создать программу, которая анализирует и оценивает строку (слева направо и произвольной длины) токенов, которые дают указания - влево или вправо. Вот четыре возможных токена и их значения:
> go right one single step
< go left one single step
-> go right the total amount of single steps that you've gone right, plus one,
before you previously encountered this token and reset this counter to zero
<- go left the total amount of single steps that you've gone left, plus one,
before you previously encountered this token and reset this counter to zero
Однако есть одна загвоздка - токены направлений, которые ваша программа должна уметь анализировать, будут представлены в следующем виде:
<<->-><<->->>->>->
... другими словами, они объединены, и ваша программа должна определить правильный приоритет направлений и количество шагов, которые нужно предпринять (заглядывая в будущее). Порядок приоритета выглядит следующим образом (от высшего к низшему приоритету):
->
<-
>
<
Если вы столкнулись <-
с тем, что с момента запуска или с момента последнего сброса ранее не было сделано никаких шагов влево, сделайте один единственный шаг влево. То же правило применяется к ->
, но затем для перехода вправо.
Ваша программа должна начинаться с 0, а ее результатом должно быть целое число со знаком, представляющее конечную конечную позицию.
Вы можете ожидать, что ввод всегда будет действительным (например, ничего подобного <--->>--<
).
Пример ввода:
><->><-<-><-<>>->
Шаги в этом примере:
step | token | amount | end position
------+-------+--------+--------------
1. | > | +1 | 1
2. | < | -1 | 0
3. | -> | +2 | 2
4. | > | +1 | 3
5. | <- | -2 | 1
6. | < | -1 | 0
7. | -> | +2 | 2
8. | <- | -2 | 0
9. | < | -1 | -1
10. | > | +1 | 0
11. | > | +1 | 1
12. | -> | +3 | 4
Для пояснения: выходные данные программы должны быть только конечной конечной позицией в виде целого числа со знаком. Приведенная выше таблица как раз иллюстрирует шаги, которые предпринял мой пример. Нет необходимости выводить такую таблицу, строку таблицы или даже просто конечные позиции шагов. Требуется только конечная конечная позиция в виде целого числа со знаком.
Самый короткий код, через неделю, выигрывает.
<-
него, - это сразу после него<
или a или a->
. Там нет никакого способа на этом языке , чтобы представить последовательность ,<-
то>
- что будетgo left the total amount of single steps that you've gone left, plus one, then go right one single step
. Это правильно и по замыслу?