diff options
| author | HVukman <peterslopp@googlemail.com> | 2025-10-26 22:09:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-26 22:09:14 +0100 |
| commit | 3569563568323232874b5e32736dbf821eee0c8d (patch) | |
| tree | 4e3e6a76443c16fc410d51229b4b9237f299ff67 | |
| parent | 501d337689357936eba691cb4e2ae5f83fd1f70b (diff) | |
| download | perlweeklychallenge-club-3569563568323232874b5e32736dbf821eee0c8d.tar.gz perlweeklychallenge-club-3569563568323232874b5e32736dbf821eee0c8d.tar.bz2 perlweeklychallenge-club-3569563568323232874b5e32736dbf821eee0c8d.zip | |
Create 344_p2.lua
| -rw-r--r-- | challenge-344/hvukman/lua/344_p2.lua | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/challenge-344/hvukman/lua/344_p2.lua b/challenge-344/hvukman/lua/344_p2.lua new file mode 100644 index 0000000000..64a78a55eb --- /dev/null +++ b/challenge-344/hvukman/lua/344_p2.lua @@ -0,0 +1,73 @@ + + local function permgen (a, n) + if n == 0 then + coroutine.yield(a) + else + for i=1,n do + -- put i-th element as the last one + a[n], a[i] = a[i], a[n] + -- generate all permutations of the other elements + permgen(a, n - 1) + -- restore i-th element + a[n], a[i] = a[i], a[n] + + end + end + end + + + local function result (a,t) + local found = {} + local count = 0 + + -- a is permutation + for _,v in ipairs(a) do + for _,k in ipairs(v) do + table.insert(found,k) + end + end + + for i=1,#found do + + -- if key=value add up + if found[i]==t[i] then + count = count + 1 + end + end + -- true if all keys equals values + return count==#t + end + + + + local function perm (a) + local n = #a + local co = coroutine.create(function () permgen(a, n) end) + return function () -- iterator + local code, res = coroutine.resume(co) + return res + end + end + + + +local function arrayform(t,x) + + local search = false + + for p in perm(x) do + search=(result (p,t)) + if result (p,t)==true then break end + end + + print(search) + +end + + +arrayform({1,2,3,4},{{2, 3},{1},{4}}) +arrayform({1,2,3,4},{{1, 3},{2,4}}) +arrayform({5, 8, 2, 9, 1},{{9,1},{5,8},{2}}) +arrayform({1,2,3},{{1},{3}}) +arrayform({7,4,6},{{7,4,6}}) +-- permute dummy |
