2015-04-21 15 views
11

Angenommen, ich habe eine Zeichenfolge, die die Form "## ##" in stdin, die ich einlesen möchte, z. "15 16". Das ist einfach genug:LOLCODE Zeichenfolge Parsing

I HAS A STRINGY 
GIMMEH STRINGY 

, dass die ganze Linie von stdin und speichert sie in den String-er packt, entschuldigen Sie mich, GARN -called STRINGY.

Wie würde ich die beiden Ganzzahlen in der Zeichenfolge extrahieren? Ich möchte 15 und 16 jeweils als Ganzzahl speichern können (LULZ I MEANS NUMBR).

+5

Wenn Sie meine Frage downvote, können Sie bitte einen konstruktiven Kommentar abgeben? Trotz der Dummheit von LOLCODE sind esoterische Sprachen eine herausfordernde Art, Codiertechniken zu üben. – dpwilson

+1

Ich habe die Antwort aktualisiert, nachdem ich Upvotes erhalten habe, habe ich es erneut überprüft und es ist ein Fehler drin - ich musste 'DIFFRINT' statt' BOTH SAEM' verwenden, um zu prüfen, ob ein Zeichen angehängt werden muss. – Pimgd

Antwort

15

Kurze Antwort:

Sie können dies nicht in LOLCODE 1.2.

Lange Antwort:

Da es keine YARN Manipulationsfunktionen und keine Möglichkeit, eine YARN zu so etwas wie ein BUKKIT in der vorgeschlagenen Spezifikation 1.3 (worauf welcher werfen wir einen String als BUKKIT von Zeichen simulieren könnte), ist es nicht möglich, Zahlen aus einer solchen Zeichenfolge zu extrahieren.

nur die 1.2-Spezifikation verwenden, können wir immer noch diese Arbeit machen, ich denke ...

Da bereits String-Verkettung in 1.2 als SMOOSH ... MKAY vorhanden ist, kann man in der Theorie, str01 durch str99 Variablen Reserve, und dann ...

IM IN YR readloop UPPIN YR throwawayvariable WILE BOTH OF NOT broken AN DIFFRINT currentyarn AN STRINGY 
    str01, WTF? 
     OMG "Z" 
      str99 R str98 
      str98 R str97 
      str97 R str96 
      ... 
      str02 R str01 
      str01 R "" 
      GTFO 
     OMG "Y" 
      str01 R "Z"; 
      GTFO 
     OMG "X" 
      str01 R "Y"; 
      GTFO 
     ... 
     OMG "0" 
      str01 R "1"; 
      GTFO 
     OMG "" 
      str01 R "0" 
      GTFO 
     OMGWTF 
      I HAS A ERRORMSG 
      ERRORMSG R SMOOSH "I DUNNO WAT U SAY, illegal character", str01 MKAY 
      VISIBLE ERRORMSG 
      broken R WIN 
      GTFO 
    OIC 
    currentyarn R SMOOSH str01, str02, str03, str04, ..., str98, str99 MKAY 
IM OUTTA YR readloop 

Als nächstes bekommen die Numbrs ...

NOT broken, O RLY? YA RLY 
    yarnnumber R "" 
    done R FAIL 
    IM IN YR parseloop UPPIN YR otherthrowaway WILE NOT done 
     EITHER OF BOTH SAEM str01 AN " " AN BOTH SAEM str01 AN "", O RLY? YA RLY 
      number1 R 0 
      DIFFRINT yarnnumber AN "", O RLY? YA RLY 
       number1 R MAEK yarnnumber A NUMBR 
      OIC 
      done R WIN 
     MEBBE DIFFRINT str01 AN "" 
      yarnnumber R SMOOSH yarnnumber, str01 MKAY 
     OIC 
     str01 R str02 
     str02 R str03 
     str03 R str04 
     ... 
     str98 R str99 
     str99 R "" 
    IM OUTTA YR parseloop 

    yarnnumber R "" 
    done R FAIL 
    IM IN YR parseloop2 UPPIN YR otherthrowaway2 WILE NOT done 
     EITHER OF BOTH SAEM str01 AN " " AN BOTH SAEM str01 AN "", O RLY? YA RLY 
      number2 R 0 
      DIFFRINT yarnnumber AN "", O RLY? YA RLY 
       number2 R MAEK yarnnumber A NUMBR 
      OIC 
      done R WIN 
     MEBBE DIFFRINT str01 AN "" 
      yarnnumber R SMOOSH yarnnumber, str01 MKAY 
     OIC 
     str01 R str02 
     str02 R str03 
     str03 R str04 
     ... 
     str98 R str99 
     str99 R "" 
    IM OUTTA YR parseloop2 
OIC 

Und schließlich, was Sie jemals wollte mit ihnen machen.

I HAZ A result 
result R SUM OF number1 AN number2 
VISIBLE result 

Für ..., füllen Sie die restlichen Anweisungen, die Verwendung der str## Variablen machen.

Wenn Sie dies verwenden, empfehle ich, etwas zu verwenden, um den LOLCODE für Sie zu generieren, Schreiben von Hand ist einfach nicht machbar. Vor allem, wenn Sie längere Eingabezeilen wie 255 oder 1024 Zeichen unterstützen müssen.

+3

Wow, sehr detaillierte Antwort, danke! – dpwilson

Verwandte Themen