cmd
to self
, returns the number of operations performed during the command
# Applies a command `cmd` to `self`, returns the number of operations performed during the command
fun do_cmd(cmd: String): Int do
if cmd == "" then return 0
var iters = 1
var cmdln = cmd.length
if cmd[cmdln - 1] == '2' then
iters = 2
end
var cmd1 = cmd[0]
var cmd2 = '\0'
if cmdln > 1 then
cmd2 = cmd[1]
if cmd2 == '2' then cmd2 = '\0'
end
for i in [1 .. iters] do
if cmd1 == 'U' then
if cmd2 == '\'' then
cclock_U
else
clock_U
end
else if cmd1 == 'L' then
if cmd2 == '\'' then
cclock_L
else
clock_L
end
else if cmd1 == 'F' then
if cmd2 == '\'' then
cclock_F
else
clock_F
end
else if cmd1 == 'R' then
if cmd2 == '\'' then
cclock_R
else
clock_R
end
else if cmd1 == 'B' then
if cmd2 == '\'' then
cclock_B
else
clock_B
end
else if cmd1 == 'D' then
if cmd2 == '\'' then
cclock_D
else
clock_D
end
else if cmd1 == 'M' then
if cmd2 == '\'' then
cclock_M
else
clock_M
end
else if cmd1 == 'E' then
if cmd2 == '\'' then
cclock_E
else
clock_E
end
else if cmd1 == 'S' then
if cmd2 == '\'' then
cclock_S
else
clock_S
end
else if cmd1 == 'u' then
if cmd2 == '\'' then
cclock_u
else
clock_u
end
else if cmd1 == 'l' then
if cmd2 == '\'' then
cclock_l
else
clock_l
end
else if cmd1 == 'f' then
if cmd2 == '\'' then
cclock_f
else
clock_f
end
else if cmd1 == 'r' then
if cmd2 == '\'' then
cclock_r
else
clock_r
end
else if cmd1 == 'b' then
if cmd2 == '\'' then
cclock_b
else
clock_b
end
else if cmd1 == 'd' then
if cmd2 == '\'' then
cclock_d
else
clock_d
end
else if cmd1 == 'X' then
if cmd2 == '\'' then
ccube_X_rotation
else
cube_X_rotation
end
else if cmd1 == 'Y' then
if cmd2 == '\'' then
ccube_Y_rotation
else
cube_Y_rotation
end
else if cmd1 == 'Z' then
if cmd2 == '\'' then
ccube_Z_rotation
else
cube_Z_rotation
end
else
abort
end
end
return iters
end
lib/rubix/rubix.nit:537,2--665,4