Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- This file:
--   http://anggtwu.net/LUA/JumpingFrogs1.lua.html
--   http://anggtwu.net/LUA/JumpingFrogs1.lua
--          (find-angg "LUA/JumpingFrogs1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e () (interactive) (find-angg "LUA/JumpingFrogs1.lua"))
-- https://rvlabs.ca/jumping-frogs
-- https://news.ycombinator.com/item?id=43461022 A difficult game to test your logic (rvlabs.ca)

now = ">>>_<<<"

moves = {{">_",  "_>"},  {"_<", "<_"},
         {"><_", "_<>"}, {"_><", "<>_"}}

opts = function (now)
    local T = VTable {}
    for _,ab in ipairs(moves) do
      local new,n = now:gsub(ab[1], ab[2])
      if n == 1 then table.insert(T, new) end
      -- print(new, n)
    end
    return T
  end

fulltree = function (now)
    local T = VTable(map(fulltree, opts(now)))
    return VTable {now, T}
  end

dfs = function (history, T)
    if T[1] == "<<<_>>>" then print(history) end
    for _,newT in ipairs(T[2]) do
      local newhistory = copy(history)
      table.insert(newhistory, newT[1])
      dfs(newhistory, newT)
    end
  end


--[[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "JumpingFrogs1.lua"

= opts(">>>_<<<")
FT = fulltree(">>>_<<<")
dfs(VTable{">>>_<<<"}, FT)



--]]





-- Local Variables:
-- coding:  utf-8-unix
-- End: