Ihre Aufgabe besteht darin, ein Programm zu erstellen, das eine Zeichenfolge (von links nach rechts und von beliebiger Länge) von Token analysiert und auswertet, die Anweisungen geben - entweder nach links oder nach rechts. Hier sind die vier möglichen Token und ihre Bedeutungen:
> 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
Es gibt jedoch einen Haken: Die Token für Anweisungen, die Ihr Programm analysieren kann, werden in der folgenden Form angezeigt:
<<->-><<->->>->>->
... mit anderen Worten, sie sind verkettet, und es ist die Aufgabe Ihres Programms, den korrekten Vorrang der Anweisungen und die Anzahl der zu treffenden Schritte herauszufinden (indem Sie nach vorne schauen). Die Rangfolge ist wie folgt (von der höchsten zur niedrigsten Rangfolge):
-><-><
Wenn Sie feststellen, <-dass seit dem Start oder seit dem letzten Zurücksetzen noch keine Schritte nach links ausgeführt wurden, gehen Sie einen einzelnen Schritt nach links. Gleiches gilt für ->, dann aber für rechts.
Ihr Programm sollte bei 0 beginnen und das Ergebnis sollte eine Ganzzahl mit Vorzeichen sein, die die endgültige Endposition darstellt.
Sie können erwarten, dass die Eingabe immer gültig ist (also <--->>--<zum Beispiel nichts dergleichen ).
Beispiel Eingabe:
><->><-<-><-<>>->
Schritte in diesem Beispiel:
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
Zur Verdeutlichung: Die Ausgabe des Programms sollte nur die endgültige Endposition als vorzeichenbehaftete Ganzzahl sein. Die obige Tabelle soll nur die Schritte veranschaulichen, die mein Beispiel unternommen hat. Es ist nicht erforderlich, eine solche Tabelle, Tabellenzeile oder auch nur die Endpositionen der Schritte auszugeben. Es ist nur die letzte Endposition als vorzeichenbehaftete Ganzzahl erforderlich.
Kürzester Code nach einer Woche gewinnt.
<-wenn unmittelbar danach ein<oder ein folgt->. Es gibt keine Möglichkeit , in dieser Sprache , die Sequenz zu repräsentieren<-dann>- das wärego left the total amount of single steps that you've gone left, plus one, then go right one single step. Ist das richtig und beabsichtigt?