aboutsummaryrefslogtreecommitdiff
path: root/challenge-109/laurent-rosenfeld/lua/ch-2.lua
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-109/laurent-rosenfeld/lua/ch-2.lua')
-rw-r--r--challenge-109/laurent-rosenfeld/lua/ch-2.lua20
1 files changed, 20 insertions, 0 deletions
diff --git a/challenge-109/laurent-rosenfeld/lua/ch-2.lua b/challenge-109/laurent-rosenfeld/lua/ch-2.lua
new file mode 100644
index 0000000000..e972de6a62
--- /dev/null
+++ b/challenge-109/laurent-rosenfeld/lua/ch-2.lua
@@ -0,0 +1,20 @@
+local function check_square (p)
+ sum = p[1] + p[2]
+ return p[2] + p[3] + p[4] == sum and
+ p[4] + p[5] + p[6] == sum and
+ p[6] + p[7] == sum
+end
+
+local function permute(perm, n)
+ if n == 0 and check_square(perm) then
+ print( table.concat(perm, ' ') )
+ else
+ for i = 1, n do
+ perm[i], perm[n] = perm[n], perm[i]
+ permute(perm, n - 1)
+ perm[i], perm[n] = perm[n], perm[i]
+ end
+ end
+end
+
+permute({1,2,3,4,5,6,7}, 7)