Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------Tunneling Automaton------
- ----Variables----
- t = turtle
- orientation = 1
- ----Basic Digging and Control Operations----
- --Orientation change, 1 is forward by initialization--
- function OCL()
- if orientation == 4 then
- orientation = 0
- else
- orientation = orientation + 1
- end
- end
- function OCR()
- if orientation == 1 then
- orientation = 4
- else
- orientation = orientation - 1
- end
- end
- --Turning Left and Right--
- function TLE()
- t.turnLeft()
- OCL()
- end
- function TRI()
- t.turnRight()
- OCR()
- end
- --Reorienting efficiently--
- function REO()
- if orientation == 2 then
- TLE()
- elseif orientation == 3 then
- TLE()
- TLE()
- elseif orientation == 4 then
- TRI()
- end
- end
- --Digging in Basic Directions--
- function DUP()
- t.digUp()
- end
- function DDO()
- t.digDown()
- end
- function DFO()
- t.digForward()
- end
- --Moving in Basic Directions--
- function MUP()
- t.up()
- end
- function MDO()
- t.down()
- end
- function MFO()
- t.forward()
- end
- --Digging Left and Right--
- function DRI()
- TRI()
- DFO()
- end
- function DLE()
- TLE()
- DFO()
- end
- --Moving Left and Right--
- function MRI()
- TRI()
- DFO()
- end
- function MLE()
- TLE()
- DFO()
- end
- --Digging and Moving Efficiently--
- function DMU()
- if t.detectUp() then
- DUP()
- MUP()
- else
- MUP()
- end
- end
- function DMD()
- if t.detectDown() then
- DDO()
- MDO()
- else
- MDO()
- end
- end
- function DMF()
- if t.detect() then
- DFO()
- MFO()
- else
- MFO()
- end
- end
- function DMR()
- TRI()
- if t.detect() then
- DFO()
- MFO()
- else
- MFO()
- end
- end
- function DML()
- TLE()
- if t.detect() then
- DFO()
- MFO()
- else
- MFO()
- end
- end
- --Input Distance--
- function dis()
- print("Input Distance:")
- num = io.read()
- num = tonumber(num)
- return num
- end
- --Refuel based on distance--
- function fuel(distance)
- t.refuel()
- end
- ----Advanced Mining Operations----
- function tunnel(distance)
- if not t.getFuelLevel() >= distance then
- fuel(distance-t.getFuelLevel())
- end
- while distance > 0 do
- DMF()
- DUP()
- distance = distance - 1
- end
- end
- function hole(distance)
- if not (t.getFuelLevel() >= distance) then
- fuel(distance-t.getFuelLevel())
- end
- while distance > 0 do
- DMD()
- distance = distance - 1
- end
- end
- ----Main Loop----
- function main()
- hole(dis())
- end
- --Run--
- main()
Add Comment
Please, Sign In to add comment