X-Git-Url: https://git.josue.xyz/?p=langlearn%2F.git;a=blobdiff_plain;f=towers_of_hanoi%2Flua%2FMaximumGeeker%2Fhanoi.lua;fp=towers_of_hanoi%2Flua%2FMaximumGeeker%2Fhanoi.lua;h=95771f15ad06fc3b9ce80a5d181b91d04370f014;hp=0000000000000000000000000000000000000000;hb=7544d586a052dd92d6239bb01fa6d76a1867cb80;hpb=7be62c67160dfa1f7fea109f22ec755b16d7827b diff --git a/towers_of_hanoi/lua/MaximumGeeker/hanoi.lua b/towers_of_hanoi/lua/MaximumGeeker/hanoi.lua new file mode 100644 index 0000000..95771f1 --- /dev/null +++ b/towers_of_hanoi/lua/MaximumGeeker/hanoi.lua @@ -0,0 +1,42 @@ +--[[ Towers of hanoi - Lua 5.1 ]]-- + +local move = function(a, b) + print( a, '->', b ) +end + +local hanoi +hanoi = function(n, orig, pivot, dest) + if n < 1 then + return + end + + if n == 1 then + move( orig, dest ) + return + end + + if n == 2 then + move( orig, pivot ) + move( orig, dest ) + move( pivot, dest ) + return + end + + hanoi(n-2, orig, pivot, dest) + move( orig, pivot ) + hanoi(n-2, dest, orig, pivot) + move( orig, dest ) + hanoi(n-1, pivot, orig, dest) +end + +io.write "Value of N: " +local n = io.read "*n" + +if type(n) == 'number' then + n = math.floor(n) +else + io.stderr "Value given is not a number.\n" + os.exit(1) +end + +hanoi(n, 'Left', 'Center', 'Right')