Tugas Anda - jika Anda memilih untuk menerimanya - adalah membangun sebuah program yang mem-parsing dan mengevaluasi string (dari kiri ke kanan dan panjang sewenang-wenang) dari token yang memberikan arahan - baik kiri atau kanan. Berikut adalah empat token yang mungkin dan artinya:
> 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
Namun ada kendala - token arah yang harus diurai oleh program Anda akan disajikan dalam formulir ini:
<<->-><<->->>->>->
... dengan kata lain, mereka digabungkan, dan itu adalah tugas program Anda untuk menentukan prioritas yang benar dari arah dan jumlah langkah yang harus diambil (dengan melihat ke depan). Urutan prioritas adalah sebagai berikut (dari prioritas tertinggi ke terendah):
->
<-
>
<
Jika Anda menemukan <-
ketika tidak ada langkah ke kiri yang telah dilakukan sejak awal atau sejak reset terakhir, ambil satu langkah tunggal ke kiri. Aturan yang sama berlaku untuk ->
, tetapi kemudian untuk ke kanan.
Program Anda harus mulai dari 0 dan hasilnya harus berupa bilangan bulat bertanda tangan yang mewakili posisi akhir.
Anda mungkin berharap input selalu valid (jadi, tidak seperti <--->>--<
, misalnya).
Input contoh:
><->><-<-><-<>>->
Langkah-langkah dalam contoh ini:
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
Untuk klarifikasi: output dari program hanya harus menjadi posisi akhir sebagai integer yang ditandatangani. Tabel di atas hanya ada untuk menggambarkan langkah-langkah yang diambil contoh saya. Tidak perlu menampilkan tabel seperti itu, baris tabel, atau bahkan hanya posisi akhir langkah. Hanya posisi akhir akhir, sebagai bilangan bulat yang ditandatangani, yang diperlukan.
Kode terpendek, setelah satu minggu, menang.
<-
adalah jika segera diikuti oleh a<
atau a->
. Tidak ada cara dalam bahasa ini untuk mewakili urutan<-
itu>
- yang akan terjadigo left the total amount of single steps that you've gone left, plus one, then go right one single step
. Apakah ini benar dan sesuai desain?