ラムダの使い方を理解しようとしている間に、ラムダを使って何もできないと言った返信が1つありました。Pythonのラムダを普通の関数に変換する
私は、Pythonでそれ自体の中から関数を呼び出すのは難しいですが、専門家ではありませんが、学習しています。再帰関数を使用する必要がある場合、特定の答え。
男はラムダ関数を使ってそれを行いましたが、私はそれを理解しようとしましたが、失敗しました。しかし、関数が通常の関数を使って実装できるなら、その点からラムダを理解するのが簡単です。 。
はのは、例えば、この文を見てみましょう:これはFacebookのハッカーカップで使用されてきた
print"\n".join(" ".join([(lambda f:(lambda x:f(lambda*r:x(x)(*r)))(lambda x:f(lambda*r:x(x)(*r))))(lambda f:lambda q,n:len(q)<=n and q or f(q[len(q)/2:],n)+f(q[:len(q)/2],n))(k,z+1)for z,k in enumerate(i[:-1].split())]) for i in list(s)[1:])
私はループに失われたように、私はこの問題を解決することができませんでした。
この文はいくつかの単語を取り、のは言わせて「StackOverflowの岩をし、それは素晴らしいです」
のFacebookでの問題文は次のとおりです。
あなたは面白いと愚かを使用して暗号化送信のシリーズを傍受しましたあなたはそれを解読することができました。文中のすべての単語について、i番目の単語(1ベース)は、次の再帰的操作f(word、i)を適用することによって生成された単語に置き換えられます。 :
単語の長さがi以下の場合は、戻り値は です。 それ以外の場合は、f(単語の右半分、i)+ f(単語の左半分、i)を返します。
単語の長さが奇数の場合は、右側が長くなるように分割されます。あなたはメッセージを送信している人と少しでも楽しい時間を過ごし、自分のメッセージを使用しているのと同じスタイルで暗号化してブロードキャストすることに決めました。
入力 入力は整数Nで始まり、その後に改行が続き、次にN個のテストケースが続きます。各ケースは、スペースと小文字のみを含む暗号化されていない文で構成され、改行は改行で区切られます。文中に先頭または末尾の空白がなく、それ以外の文字の間に最大1つの空白文字があります。
出力 出力後、改行で区切られた、適用後の暗号文の内容符号化方法は、上でそれを説明する。従来の大文字の規則を無視して、小文字に固執することができます。
制約 5≦N≦25 文は100文字以下です。
面白い問題(面白い問題です)。問題(解決策を理解している問題)は、n倍のネストされたラムダ、長すぎる行、短い名前など多くのことが判読不能な混乱を招くことです。 – delnan
あなたが引用している例は現実世界からのものではなく、あなたは質問をしません。 –
これはラムダとはあまり関係がなく、アンロールコードの難読化と関連しています。 – Falmarri