diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-12-11 14:55:19 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-12-11 14:55:19 -0800 |
commit | 706bdf63c14082271cb2693ead5864a4042dda2c (patch) | |
tree | 8555364b7167286e065ac4d2c5ef1dd3159adae4 | |
parent | 5c689063033d5e078079eba95d9bcd564810c81e (diff) | |
download | teliva-706bdf63c14082271cb2693ead5864a4042dda2c.tar.gz |
delete an old file for comparison
-rw-r--r-- | hanoi.lua | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/hanoi.lua b/hanoi.lua deleted file mode 100644 index 2284f7b..0000000 --- a/hanoi.lua +++ /dev/null @@ -1,120 +0,0 @@ -curses = require "curses" - -count = {} -function foo(event, line) - local s = debug.getinfo(2) ---? print(s.name) - if s.name ~= nil then - if count[s.name] == nil then - count[s.name] = 0 - end - count[s.name] = count[s.name]+1 - end -end -debug.sethook(foo, "c") - -window = curses.initscr() - -tower = {{6, 5, 4, 3, 2}, {}, {}} - -function len(array) - local result = 0 - for k in pairs(array) do - result = result+1 - end - return result -end - -function pop(array) - return table.remove(array) -end - -function lines(window) - local lines, cols = window:getmaxyx() - return lines -end - -function cols(window) - local lines, cols = window:getmaxyx() - return cols -end - - -function render_disk(window, line, col, size) - col = col-size+1 - for i=1,size do - window:attron(curses.color_pair(size)) - window:mvaddstr(line, col, " ") - window:attroff(curses.color_pair(size)) - col = col+2 - end -end - -function render_tower(window, line, col, tower_index, tower) - window:attron(curses.A_BOLD) - window:mvaddch(line+2, col, string.char(96+tower_index)) - window:attroff(curses.A_BOLD) - window:attron(curses.color_pair(7)) - window:mvaddstr(line+1, col-6, " ") - window:attroff(curses.color_pair(7)) - for i, n in ipairs(tower) do - render_disk(window, line, col, n) - line = line - 1 - end - for i=1,5-len(tower)+1 do - window:attron(curses.color_pair(7)) - window:mvaddstr(line, col, " ") - window:attroff(curses.color_pair(7)) - line = line - 1 - end - - window:mvaddstr(30, 0, "profile: ") - for k,v in pairs(count) do - window:addstr(k) - window:addstr(": ") - window:addstr(v) - window:addstr("; ") - end -end - -function render(window) - window:clear() - local lines, cols = window:getmaxyx() - local line = math.floor(lines/2) - local col = math.floor(cols/4) - for i,t in ipairs(tower) do - render_tower(window, line, i*col, i, t) - end - curses.refresh() -end - - -function make_move(from, to) - local disk = pop(tower[from]) - table.insert(tower[to], disk) -end - -function update(window) - window:mvaddstr(lines(window)-2, 5, "tower to remove top disk from? ") - local from = string.byte(curses.getch()) - 96 - window:mvaddstr(lines(window)-1, 5, "tower to stack it on? ") - local to = string.byte(curses.getch()) - 96 - make_move(from, to) -end - - -function main() - curses.start_color() - curses.use_default_colors() - for i=1,7 do - curses.init_pair(i, 0, i) - end - - while true do - render(window) - update(window) - end - - curses.endwin() -end -main() |