LOLCODE字符串解析

dpw*_*son 13 lolcode

假设我有一个字符串,它采用的形式"## ##"stdin,我想读的,如"15 16".这很简单:

I HAS A STRINGY
GIMMEH STRINGY
Run Code Online (Sandbox Code Playgroud)

它抓住了整条线stdin并将其存储到字符串中,不好意思,YARN- called STRINGY.

我如何提取字符串中的两个整数?我希望能够存储15和16作为整数(LULZ I MEANS NUMBR).

Pim*_*mgd 16

简短回答:

你不能在LOLCODE 1.2中这样做.

答案很长:

由于没有YARN操作函数,也没有办法在建议的1.3规范中抛出YARN类似的东西BUKKIT(因此我们可以将字符串模拟BUKKIT为字符),因此不可能从字符串中提取数字.

使用1.2规格,我们仍然能够完成这项工作,我猜...

由于字符串连接已经在1.2存在的SMOOSH ... MKAY,你可以在理论上,储备变量str01通过str99,然后......

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
Run Code Online (Sandbox Code Playgroud)

接下来,获取NUMBR ...

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
Run Code Online (Sandbox Code Playgroud)

最后,你想做什么.

I HAZ A result
result R SUM OF number1 AN number2
VISIBLE result
Run Code Online (Sandbox Code Playgroud)

对于...,填写使用str##变量的其余语句.

如果您要使用它,我建议您使用一些东西来为您生成LOLCODE,手写这个是不可行的.特别是如果你必须支持更长的输入行,如255或1024个字符.

  • 哇,非常详细的回答,谢谢! (3认同)