गोडेल को उनके d फ़ंक्शन के साथ मदद करें [बंद]


13

Gödel का takes फ़ंक्शन तर्कों के रूप में तीन प्राकृतिक संख्या लेता है।

इसे के रूप में परिभाषित किया गया है β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) )

जहाँ रे (ए, बी) एक बी के पूर्णांक विभाजन के बाद शेष को दर्शाता है।

The लेम्मा अब कहती है कि:

प्राकृतिक संख्याओं के किसी भी क्रम के लिए (k_0, k_1,…, k_n), प्राकृतिक संख्याएँ b और c ऐसी हैं, जो प्रत्येक i, n, β (b, c, i) = k_i के लिए हैं।

गोडेल को किसी भी इनपुट को खोजने bऔर उसके cलिए मदद की आवश्यकता है (k_0, k_1, … , k_n), k_i ∈ ℕ


एक फ़ंक्शन लिखें n, जो प्राकृतिक संख्याओं से भरा, लंबाई की एक सरणी में लेता है , और एक संभावित b,cआउटपुट देता है जो सरणी के लिए लेम्मा को पूरा करता है।


पाशविक बल से समाधान नहीं मिलता!

(मेरे पूरी तरह से अप्रतिबंधित राय में, जब आप पहले एक संख्या प्राप्त करते हैं और तब गणना करते हैं, तो यह क्रूर बल होता है। यह संख्या का अनुमान लगा रहा है और फिर अनुमान लगाने पर कि क्या अनुमान सही था। मैं यहां कोडित होना चाहता हूं एक समाधान है जो गणना करता है। संख्या और यह जांचने की ज़रूरत नहीं है कि वे लेम्मा को पूरा करते हैं क्योंकि उन्हें ऐसा करने के लिए गणना की गई थी।)

उन्हें दिए गए समीकरणों और जानकारी के साथ निर्माण करें। सबसे छोटा कोड जीतता है, बोनस अंक अगर आप इसे करते हैं Javascriptक्योंकि मैं इसमें बस मिल रहा हूं:)


उदाहरण:

[5, 19, 7, 8] -> (1344595, 19)
1344505 % (1 + (0 + 1) * 19) = 5
1344505 % (1 + (1 + 1) * 19) = 19
1344505 % (1 + (2 + 1) * 19) = 7
1344505 % (1 + (3 + 1) * 19) = 8

5
PPCG में आपका स्वागत है! यह एक अच्छा पहला प्रश्न है, लेकिन मैं इसे अधिक स्पष्ट बनाने के लिए कुछ परीक्षण मामलों को जोड़ने की सलाह दूंगा।
लकोनी

4
@Tweakimp यहां तक ​​कि, एक भी काम किया उदाहरण उदाहरण की औपचारिक परिभाषा को स्पष्ट करने में मदद कर सकता है।
मार्टिन एंडर


1
यह स्पष्ट नहीं है कि "पाशविक बल" के रूप में क्या योग्यता है। स्पष्ट रूप से एक दृष्टिकोण जो सभी जोड़ों के माध्यम से पुनरावृत्ति (b, c)करता है जब तक कि यह एक ऐसा नहीं मिलता है जो काम करता है वह क्रूर बल होगा, और एक दृष्टिकोण जो इनपुट की लंबाई में समय रेखीय होता है, लेकिन यह उन लोगों के बीच एक बड़ा अंतर नहीं होगा। रेखा कहां खींची गई है?
पीटर टेलर

6
क्या किसी ने बीटा कहा?
बीटा क्षय

जवाबों:


3

जावास्क्रिप्ट (ईएस 6), 104 बाइट्स

a=>[c=a.reduce(c=>c*++i,Math.max(...a),i=0),a.reduce(g=(x,k)=>x%m-k?g(x+n,k):(n*=m,m+=c,x),0,n=1,m=c+1)]

रिटर्न [c, b]एक सरणी के रूप में। यह जो समाधान देता है वह न्यूनतम नहीं है, cलेकिन मुझे लगता है कि यह bदिए गए के लिए न्यूनतम है c। 120 बाइट्स के लिए यह रिटर्न में cऔर के bलिए न्यूनतम समाधान देता है c:

f=(a,c=1,b=a.reduce(g=(x,k)=>x%m-k?d--?g(x+n,k):0/0:n%m?g(x,k,n+=o):(o=n,d=m+=c,x),0,o=n=1,d=m=c+1))=>1/b?[b,c]:f(a,c+1)

Ungolfed न्यूनतम समाधान सॉल्वर:

function godel(a) {
    for (c = 0;; c++) {
        var b = 0, n = 1, i = 0;
        for (;;) {
            var m = c * i + c + 1;
            // Increase b until β(b,c,i) = a[i]
            // Adding n won't change output for smaller i
            for (j = 0; j < m; j++) if (b % m != a[i]) b += n;
            if (j == m) break; // couldn't find a remainder, c too low
            i++;
            if (i == a.length) return [b, c]; // Result!
            // Next time we want adding n to b not to change β(b,c,i)
            for (j = 1; n * j % m != 0; j++);
            n *= j;
        }
    }
}

1
महान! क्या आप इतने दयालु होंगे और कोड टिप्पणी करेंगे? :)
Tweakimp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.