असल में, मैं लैम्ब्डा फ़ंक्शंस का उपयोग करके और उन्हें एक सूची में जोड़कर एक int एन्कोड करने का प्रयास कर रहा हूं।

वर्तमान कार्यान्वयन:

succ = (lambda f: lambda n: f(n))

def encode(i):
    zeroList = []
    secondaryList = []
    encodedList = [succ]

    if i == 0:
        return zeroList  
    else:
        x = i - 1
        for x in range(0, x):
            secondaryList.append(succ)
        encodedList.append(secondaryList)
    return encodedList

तो एन्कोड (4) का आउटपुट वर्तमान में है:

[<function <lambda> at 0x0000024D71943DC8>, [<function <lambda> at 0x0000024D71943DC8>, <function <lambda> at 0x0000024D71943DC8>, <function <lambda> at 0x0000024D71943DC8>]]

जब मैं इसे बनना चाहता हूं:

[fun, [fun, [fun, [fun, fun]]]]

इसलिए मैं उस सूची में एक सूची जोड़ता रहता हूं, जिस पर मैं वर्तमान में हूं, अगर यह समझ में आता है।

-1
Lamebro1 12 नवम्बर 2019, 21:42

1 उत्तर

सबसे बढ़िया उत्तर

इसे [fun, [fun, [fun, [fun, fun]]]] आउटपुट प्रकार के लिए आज़माएं:

succ = (lambda f: lambda n: f(n))
def encode(i):
    return [succ] + [encode(i-1)] if i>0 else succ
print(encode(4))

आउटपुट :

[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, <function <lambda> at 0x7fb72267d710>]]]]

इसे [fun, [fun, [fun, [fun]]]] आउटपुट प्रकार के लिए आज़माएं:

def encode(i):
    return [succ] + [encode(i-1)] if i>1 else [succ]
print(encode(4))

आउटपुट :

[<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>, [<function <lambda> at 0x7fb72267d710>]]]]
0
Arkistarvh Kltzuonstev 12 नवम्बर 2019, 22:38