## [Lua](http://www.lua.org/), <s>146</s> <s>142</s> <s>108</s> <s>162</s> <s>159</s> 149 bytes s,q=io.read(),0 for a=2,#s do t=s:sub(a,a)-s:sub(a-1,a-1)if t then if math.abs(t)==2 or t==-q then return false end q=t else q=-q end end return true Returns true or false given a string of numbers between 1 and 4. (Doesn't handle no data or out of range numbers. Simply tracks what the last movement was and checks if this movement is a reversal of the last movement (IE, 121 or 12221) or if the distance moving is more than possible. EDIT: Saved 6 bytes. I forgot that `if (int) then` returns true if int is non zero. Thus: if t~=0 then changes to: if t then Also saved a few bytes by restructuring.