add generate_puzzle.lua script