2015-04-21 17 views
11

Giả sử tôi có một chuỗi có dạng "## ##" trong số stdin mà tôi muốn đọc, ví dụ: "15 16". Đó là đơn giản đủ:Chuỗi FUNCODE Phân tích cú pháp

I HAS A STRINGY 
GIMMEH STRINGY 

mà lấy toàn bộ dòng từ stdin và lưu trữ nó vào chuỗi-er, cho tôi xin lỗi, SỢI -called STRINGY.

Làm cách nào để trích xuất hai số nguyên trong chuỗi? Tôi muốn có thể lưu trữ 15 và 16 mỗi một số nguyên (LULZ I MEANS NUMBR).

+5

Nếu bạn downvote câu hỏi của tôi, bạn có thể vui lòng cung cấp một bình luận xây dựng? Mặc dù có vẻ ngớ ngẩn của LOLCODE, các ngôn ngữ bí truyền là một cách đầy thử thách để thực hành các kỹ thuật mã hóa. – dpwilson

+1

Tôi đã cập nhật câu trả lời, sau khi nhận được upvotes tôi đã kiểm tra lại và có lỗi trong đó - phải sử dụng 'DIFFRINT' thay vì' BOTH SAEM' để kiểm tra xem bạn có cần thêm một ký tự hay không. – Pimgd

Trả lời

15

Câu trả lời ngắn:

Bạn không thể làm điều này trong LOLCODE 1.2.

Long trả lời:

Vì không có YARN chức năng thao tác và không có cách nào để đúc một YARN một cái gì đó giống như một BUKKIT trong đề xuất 1.3 đặc điểm kỹ thuật (và rồi mà chúng ta có thể mô phỏng một chuỗi như một BUKKIT ký tự), không thể trích xuất các số từ một chuỗi như thế.

Sử dụng chỉ là 1.2 spec, chúng tôi vẫn có thể làm công việc này, tôi đoán ...

Kể từ khi nối chuỗi đã tồn tại trong 1.2 như SMOOSH ... MKAY, bạn có thể, về mặt lý thuyết, các biến dự trữ str01 qua str99, và sau đó ...

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 

Tiếp theo, nhận được 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 

Và cuối cùng, những gì đã bao giờ bạn muốn làm với họ.

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

Đối ..., điền vào những điều khoản còn lại mà tận dụng các str## biến.

Nếu bạn sẽ sử dụng điều này, tôi khuyên bạn nên sử dụng một cái gì đó để tạo LOLCODE cho bạn, viết bằng tay chỉ là không khả thi. Đặc biệt nếu bạn phải hỗ trợ các dòng nhập dài hơn như 255 hoặc 1024 ký tự.

+3

Wow, câu trả lời rất chi tiết, cảm ơn! – dpwilson

Các vấn đề liên quan