Göreviniz - kabul etmeyi seçerseniz -, sola veya sağa yön veren tokenlerden oluşan bir dizeyi (soldan sağa ve keyfi uzunlukta) ayrıştıran ve değerlendiren bir program oluşturmaktır. İşte dört olası belirteç ve anlamları:
> 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
Gerçi bir yakalama var - programınızın ayrıştırması gereken yön belirteçleri bu formda sunulacak:
<<->-><<->->>->>->
başka bir deyişle, bunlar birleştirilir ve yönlerinizin doğru önceliğini ve atılacak adımların miktarını (ileriye bakarak) anlamak programınızın görevidir. Öncelik sırası aşağıdaki gibidir (en yüksekten en düşüğe önceliğe):
->
<-
>
<
<-
Başlangıçtan bu yana ya da son sıfırlamadan bu yana daha önce solda hiçbir adım yapılmadığında karşılaşırsanız , sola bir adım atın. Aynı kural geçerlidir ->
, ancak daha sonra sağa gitmek için.
Programınız 0'dan başlamalı ve sonucu, son son konumu temsil eden işaretli bir tam sayı olmalıdır.
Girdinin her zaman geçerli olmasını bekleyebilirsiniz ( <--->>--<
örneğin, örneğin hiçbir şey ).
Örnek girdi:
><->><-<-><-<>>->
Bu örnekteki adımlar:
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çıklığa kavuşturmak için: programın çıktısı yalnızca işaretli bir tamsayı olarak son son konum olmalıdır. Yukarıdaki tablo, örneğimin attığı adımları göstermek için sadece orada. Böyle bir tablo, tablo satırı veya hatta adımların bitiş konumlarını çıkarmaya gerek yoktur. İşaretli bir tam sayı olarak yalnızca son son konum gereklidir.
Bir hafta sonra en kısa kod kazanır.
<-
, çağırabileceğiniz tek zaman , hemen ardından a<
veya a gelirse->
. Bu dilde diziyi temsil etmenin bir yolu yoktur -<-
o zaman>
olurdugo left the total amount of single steps that you've gone left, plus one, then go right one single step
. Bu doğru ve tasarım gereği mi?