← सभी पाठ

स्थिति वाले एल्गोरिदम · 30 में पाठ 17 · लगभग 15 मिनट

फिबोनाची क्रम

दो पिछले मान रखें और सुरक्षित क्रम में बदलें।

01 / समझाएँ

विचार समझें

1 और 1 से शुरू होकर हर फिबोनाची मान पिछले दो का योग है। R1 में अगला छपने वाला मान और R2 में उसके बाद वाला है। R1 छापने के बाद उनका योग निकालें और जोड़ी आगे बढ़ाएँ।

बदलाव का क्रम महत्त्वपूर्ण है। R1 जल्दी बदलने से योग के लिए ज़रूरी मान खो सकता है। अस्थायी रजिस्टर या अभी उपलब्ध R0 परिणाम परिवर्तन सुरक्षित रखता है। सीमित गिनती लें, ऐसी संख्या से समानता की जाँच नहीं जिस तक क्रम कभी न पहुँचे।

02 / आज़माएँ

होते हुए देखें

1, 1, 2, 3, 5, 8, 13, 21 अपेक्षित हैं। आठ चक्कर क्रम को ज्ञात बिंदु पर रोकते हैं।

LOAD 1 R1
LOAD 1 R2
LOOP 8
LOAD R1
PRINT
ADD R2
COPY R2 R1
COPY R0 R2
RETURN
HALT

एक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।

03 / चुनौती

इसे काम करने दें

0 से 8 तक N पढ़ें। 1, 1 से शुरू होकर पहले N फिबोनाची मान छापें। N = 0 पर कुछ न छापें।

जाँचक संपादक के वर्तमान प्रोग्राम को हर 4 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।

INPUT
COPY R0 R4
LOAD 1 R1
LOAD 1 R2
LOOP R4
  #
RETURN
HALT
संकेत चाहिए?

ADD R2 नया योग R0 में रखता है, इसलिए COPY R2 R1 पहले पुराने दूसरे मान को बचा सकता है।

हल किया समाधान दिखाएँ

प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।

INPUT
COPY R0 R4
LOAD 1 R1
LOAD 1 R2
LOOP R4
LOAD R1
PRINT
ADD R2
COPY R2 R1
COPY R0 R2
RETURN
HALT

इमोजी CPU प्रयोगशाला

तैयार · 0 चक्र

इमोजी प्रोग्राम

LOAD, ADD या दूसरा निर्देश नाम लिखकर Space दबाएँ ताकि इमोजी जुड़े। Ctrl/⌘ + Enter चलाता/रोकता है; Escape रोकता है; Ctrl/⌘ + ] इंडेंट करता है। Tab फोकस बदलता है। लेबल कोलन लेते हैं। जंप शून्य-आधारित निर्देश पते लेते हैं।

निर्देश मानचित्र और ब्रेकपॉइंट (0)

ब्रेकपॉइंट निर्देश से पहले रोकते हैं। चलाएँ रुके ब्रेकपॉइंट के पार एक बार बढ़ता है; एक कदम सीधे निर्देश चलाता है। स्रोत बदलने से पुराने ब्रेकपॉइंट और मशीन स्थिति साफ़ होते हैं।

    CPU रजिस्टर

    R0
    0
    R1
    0
    R2
    0
    R3
    0
    R4
    0
    R5
    0
    R6
    0
    R7
    0
    प्रोग्राम काउंटर (PC)
    0
    स्टैक संकेतक (SP)
    255
    फ्लैग
    शून्य: निष्क्रिय · ऋणात्मक: निष्क्रिय · ओवरफ़्लो: निष्क्रिय
    विलंब अनुरोध
    0 ms
    स्टैक और लूप फ़्रेम

    SP = 255 − डेटा गहराई − कॉल गहराई। स्टैक मेमोरी से अलग है।

    डेटा स्टैक (नीचे → ऊपर)

    खाली

    कॉल वापसी पते (नीचे → ऊपर)

    खाली

    लूप फ़्रेम

    खाली

    आउटपुट और इनपुट

    आउटपुट देखने के लिए PRINT चलाएँ।

    कतार का इनपुट: खाली

    मेमोरी · 256 बाइट · 0 गैर-शून्य

    हर खाना पता:मान दिखाता है। R = इस कदम में पढ़ा; W = इस कदम में लिखा। जाँचने या निष्पादन से पहले मान रखने के लिए खाना चुनें। तीर कुंजियों से चलें, पंक्ति के लिए Home/End और पूरी मेमोरी के लिए Ctrl/⌘ + Home/End लें।

    मेमोरी मान रखने से पहले रीसेट करें। संग्रहित मान 0–255 में लपेटते हैं।
    निष्पादन रिकॉर्ड · 0 प्रविष्टियाँ

    हाल की प्रविष्टियाँ नीचे हैं। अलग पूर्ण पहले/बाद की स्थिति के लिए कोई भी शून्य-आधारित क्रमांक जाँचें।

    अपनी चुनौती जाँचें

    जब चाहें जाँच सकते हैं। पूर्णता दर्ज करने के लिए हर मामला पास हो।

    प्रगति केवल localStorage लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।