[Jprogramming] 1D Rubik's Cube

David Vaughan purpleblues13 at googlemail.com
Thu Oct 20 22:36:25 HKT 2011


I saw a script for a 1D Rubik's cube on the wiki but I couldn't run it - I seem to be missing the appropriate files - so I decided to write my own one to be used in the browser. I am trying to allow you to see the move you've made or choose not to see it. The idea is that:

   0 move 1

moves the cube but doesn't show you while:

   1 move 1
1 5 4 3 2 6

The default is 1 (based on my understanding of 1&$:).

move=: 1&$: : (4 :0)						NB. x is 0 or 1 to show cube
select. y
	case. 0 do.
	cube=: (_2{. cube) ,~ |. (2-~#cube) {. cube 		NB. rotate first section
	case. 1 do.
	cube=: ({:cube) ,~ ({.cube) , |. (2-~#cube) {. }.cube 	NB. rotate middle section
	case. 2 do.
	cube=: (2{. cube) , |. (-2-~#cube) {. cube 		NB. rotate end section
end.
if. x=1 do. cube end.						NB. display cube
)

The main reason I want to do this is so that my shuffle verb can shuffle the row without displaying every move its made - only showing the last:

shuffle=: 3 :'(((y-1)$0),1) move"0 ] 3|?~y'

It would seem that in the case statements, whenever anything is assigned, it is also displayed - can this be avoided? Also I would appreciate it if anyone could clarify how the $: works here (I copied the idea from a verb somewhere in the wiki).

Thanks.


More information about the Programming mailing list