Advertisement
GnoX

SequenceGenerator

Jul 14th, 2014
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.72 KB | None | 0 0
  1. SequenceGenerator = Class.new()
  2.  
  3. function SequenceGenerator.new.default()
  4.     local self = setmetatable({}, SequenceGenerator)
  5.  
  6.     self.outputSequence = ""
  7.     self.buffer = ""
  8.  
  9.     return self
  10. end
  11.  
  12. function SequenceGenerator:append(s)
  13.     self.outputSequence = self.outputSequence .. s
  14.     return self
  15. end
  16.  
  17. function SequenceGenerator:push()
  18.     self.outputSequence = self.outputSequence .. self.buffer
  19.     self.buffer = ""
  20. end
  21.  
  22. function SequenceGenerator:rem()
  23.     local buffer
  24.     buffer, self.buffer = self.buffer, ""
  25.     return buffer
  26. end
  27.  
  28. function SequenceGenerator:forward(n)
  29.     return self:append((n or "") .. "f");
  30. end
  31.  
  32. function SequenceGenerator:left(n)
  33.     return self:append((n or "") .. "l");
  34. end
  35.  
  36. function SequenceGenerator:right(n)
  37.     return self:append((n or "") .. "r");
  38. end
  39.  
  40. function SequenceGenerator:basicLayer(n)
  41.     return self:append("UD")
  42. end
  43.  
  44. function SequenceGenerator:digUp()
  45.     return self:append("U")
  46. end
  47.  
  48. function SequenceGenerator:digDown()
  49.     return self:append("D")
  50. end
  51.  
  52. function SequenceGenerator:startBlock(n)
  53.     return self:append((n or 1) .. "[")
  54. end
  55.  
  56. function SequenceGenerator:endBlock()
  57.     return self:append("]")
  58. end
  59.  
  60. function SequenceGenerator:generate3by3BranchMiningPattern(length)
  61.     self:forward():right():basicLayer():forward():basicLayer():right(2):forward(2):right():basicLayer()
  62.     self:forward():right();
  63.     self:startBlock(length)
  64.     self:startBlock(2):basicLayer():forward():endBlock():left():basicLayer():forward():left()
  65.     self:startBlock(2):basicLayer():forward():endBlock():right():basicLayer()
  66.     self:endBlock()
  67.     return self:getOutput()
  68. end
  69.  
  70. function SequenceGenerator:getOutput()
  71.     return self.outputSequence
  72. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement