2009-11-17 9 views
5

क्या कोई बता सकता है कि Man Or Boy Test -67 का मूल्य कैसे देता है?
मैंने परिणाम लिखने के लिए व्यर्थ प्रयास किया, या इसे डीबगर के साथ ढूंढ लिया। किसी भी सहायता की सराहना की जाएगी।
विभिन्न कार्यान्वयन की एक सूची here मिल सकती है। इस मैन या बॉय टेस्ट पर"मैन या बॉय" Knuth परीक्षण कैसे काम करता है?

+0

यह होमवर्क की तरह लगता है, क्या आप समझा सकते हैं कि पहले 9 पुनरावृत्तियों कैसे काम करते हैं? यदि आप पहले 4 कर सकते हैं तो यह निर्धारित करने के लिए कि यह कैसे प्राप्त होता है -67 आसान होना चाहिए। इससे आने वाले अधिक उत्तरों की मदद मिल सकती है, मुझे लगता है। –

+3

मैं किसी ऐसे व्यक्ति से उत्तर प्राप्त करने की उम्मीद कर रहा था जो पहले से ही जवाब जानता था। यदि आपको लगता है कि आप सभी साधनों से कार्य तक हैं, लेकिन यह निश्चित रूप से होमवर्क नहीं है। परीक्षण के सभी संदर्भ मैं कह सकता हूं कि "कागज पर इसे काम करने की कोशिश करना शायद एक फल या दूसरे में" फलहीन है "। – CaptainCasey

उत्तर

3

This is a nice page। यह निम्नलिखित दिलचस्प तथ्यों को दिखाता है:

के = 10: ए = -67 और ए को 722 बार कहा जाता है, बी को (ए -1) बार कहा जाता है। के रूप में समारोह प्रकृति में पुनरावर्ती है, इसके अलावा साथ

एक पूरा calltrace लेखन, इस मामले में एक सा बेकार है कि कार्यों नहीं शुद्ध (के रूप में आप हास्केल अनुवाद में देख सकते हैं, ऐसा करना आवश्यक हो रहे हैं अशुद्धता को दूर रखने के लिए, k के चारों ओर लिपटे स्टेप मोनाड्स का उपयोग करें): प्रत्येक कार्य का दायरा (इस मामले में परिवर्तनीय k: यह एक से कम हो गया है) प्रत्येक कॉल या रिकर्सन में संशोधित किया गया है और इन संशोधनों को सही उत्तर की गणना के लिए आवश्यक है ।

function A(k, x1, x2, x3, x4, x5) { 
    function B() { 
     return A(--k, B, x1, x2, x3, x4); 
    } 
    return k <= 0 ? x4() + x5() : B(); 
} 
function K(n) { return function() {return n}; } 
alert(A(10, K(1), K(-1), K(-1), K(1), K(0))); 

चाल बहीखाता है:

मैं जावास्क्रिप्ट अनुवाद में थोड़ा और अधिक पठनीय, मूल ALGOL60 कार्यान्वयन से खोजने के कार्यों के लिए क्या संदर्भ का कारण जो दुष्प्रभाव (चर का संशोधन) और अवधि कारण में एक सही कार्य मूल्यांकन। हालांकि, जैसा कि मैंने पहले समझाया था, यह बहीखाता कठिन है।

इस जावास्क्रिप्ट उदाहरण जैसी आधुनिक भाषाएं, इन बहीखाता मामलों को संभालने के लिए सही दुभाषिया/कंपाइलर हैं। समय ALGOL60 कंपाइलर बनाया गया था, कुछ कार्यान्वयन सही नहीं थे। परीक्षण सही लोगों से गलत कार्यान्वयन को अलग करने के लिए किया गया था।

संबंधित मुद्दे