私は関数型プログラミングに慣れておらず、それぞれのループに対して単純な計算が難しい時代です。それぞれの変数はXSL?再帰?
私はこれを手にしており、xslで同じアルゴリズムを正しく実行する必要があります。
let the input be a string S consisting of n characters: a1 ... an.
let the grammar contain r nonterminal symbols R1 ... Rr.
This grammar contains the subset Rs which is the set of start symbols.
let P[n,n,r] be an array of booleans. Initialize all elements of P to false.
for each i = 1 to n
for each unit production Rj -> ai
set P[i,1,j] = true
for each i = 2 to n -- Length of span
for each j = 1 to n-i+1 -- Start of span
for each k = 1 to i-1 -- Partition of span
for each production RA -> RB RC
if P[j,k,B] and P[j+k,i-k,C] then set P[j,i,A] = true
if any of P[1,n,x] is true (x is iterated over the set s, where s are all the indices for Rs) then
S is member of language
else
S is not member of language
私は何かをすることができますが、私は固執して間違った方法で行っていると感じます。
私は配列のようなものを持つことができないことを知りました。私は配列のように私はそれを更新することはできません動作する変数を作成します。
私は(テンプレートを呼び出すことによって)いくつかの再帰を始めましたが、正しい方法であれば私はまだ考えています。そして、再帰なしでそれぞれのためにネストしたものを実装する別の理由がある場合。
あなたはそうです:プロシージャアルゴリズムの説明から機能プログラムをリバースエンジニアリングするのは難しいです。アルゴリズムを捨てる方がはるかに優れており、アルゴリズムが達成しようとしていることの説明から始めてください。 –