Basic Rubiks Cube

No preview image

1 collaborator

Default-person Robert Patchin (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 3D 5.2.0 • Viewed 163 times • Downloaded 13 times • Run 0 times
Download the 'Basic Rubiks Cube' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


## WHAT IS IT?

This is a 3D version of a rubix cube I made to play around with

## THINGS TO DO

Use "Spin" to spin the cube arround the z-axis

Use "Roll" to roll cube around y-axis

Use "R" to spin the right face clockwise

All other moves are composed of these three elementry moves

## SOLVING

The notation and pre-built algorithms support solving the cube using this guide:

https://www.rubiks.com/uploads/general_content/Rubiks_cube_3x3_solution-en.pdf

## Copyright

Rob Patchin, 2017

Please use and improve!

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

turtles-own [ x_solve y_solve z_solve piece-type]
breed [cubes a-cube]
breed [stickers a-sticker]
globals [i j k ]

to setup
  clear-all
  setxyz 20 -40 16 ; set the observer position
  build-cube
end 

to mix
  set i 0
  while [i < 20] [
    set j random 3
    if j = 0 [ rotate-face ]
    if j = 1 [ roll-cube ]
    if j = 2 [ spin-cube ]
    set i (i + 1)]
  paint-neighbors
end 

to solve-1
;  ask patch 3 3 -4 [ask turtles-here [set j color]]
;  if j = color-1 [roll-cube roll-cube]
;  repeat 4 [
;    ask patch -1 3 0 [ask turtles-here [set i color]]
;    ifelse i = color-1 [roll-cube] [spin-cube]]

;  ask patch 3 3 4 [ask turtles-here [set j color]]
;  if j = color-1 [show "sucess"]
end 





;;  This procedure creates 27 turtles in puts them in a cube

to build-cube
   crt 27
    [  set x_solve (who mod 3)
       set y_solve ((int (who / 3)) mod 3)
       set z_solve ((int (who / 9)) mod 3)
       set breed cubes
       setxyz (x_solve * 3) (y_solve * 3) (z_solve * 3 - 3)
       set color 35
       set heading 0]
  ask turtle 13 [die]
  ask cubes with [y_solve = 2] [hatch 1 [set color 25 set breed stickers]]
  ask cubes [set heading 90]
  ask cubes with [x_solve = 2] [hatch 1 [set color 105 set breed stickers]]
  ask cubes [set heading 180]
  ask cubes with [y_solve = 0] [hatch 1 [set color 15 set breed stickers]]
  ask cubes [set heading 270]
  ask cubes with [x_solve = 0] [hatch 1 [set color 55 set breed stickers]]
  ask cubes [set heading 0 tilt-up 90]
  ask cubes with [z_solve = 2] [hatch 1 [set color 9.9 set breed stickers]]
  ask cubes [set heading 0 tilt-down 180]
  ask cubes with [z_solve = 0] [hatch 1 [set color 45 set breed stickers]]
  ask cubes [die]
  ask stickers [fd 1]
  ask stickers [create-links-with turtles-on neighbors]
  ask turtles [
    if count link-neighbors = 2 [set piece-type "corner"]
    if count link-neighbors = 0 [set piece-type "face"]
    if count link-neighbors = 1 [set piece-type "edge"]]
;  paint-neighbors
end 

to find-face
end 

to rotate-face
  ask stickers-on patch 7 0 3   [setxyz 7 6 2] 
  ask stickers-on patch 7 0 -3  [setxyz 7 0 3] 
  ask stickers-on patch 7 6 -3  [setxyz 7 0 -3] 
  ask stickers-on patch 7 6 3   [setxyz 7 6 -3] 
  ask stickers-on patch 7 6 2   [setxyz 7 6 3] 
  ask stickers-on patch 7 3 3   [setxyz 7 6 1] 
  ask stickers-on patch 7 0 0   [setxyz 7 3 3] 
  ask stickers-on patch 7 3 -3  [setxyz 7 0 0] 
  ask stickers-on patch 7 6 0   [setxyz 7 3 -3] 
  ask stickers-on patch 7 6 1   [setxyz 7 6 0] 
  ask stickers-on patch 6 0 4    [setxyz 6 7 4] 
  ask stickers-on patch 6 -1 -3  [setxyz 6 0 4] 
  ask stickers-on patch 6 6 -4   [setxyz 6 -1 -3] 
  ask stickers-on patch 6 7 3    [setxyz 6 6 -4] 
  ask stickers-on patch 6 7 4    [setxyz 6 7 3]
  ask stickers-on patch 6 3 4    [setxyz 6 7 4] 
  ask stickers-on patch 6 -1 0   [setxyz 6 3 4] 
  ask stickers-on patch 6 3 -4   [setxyz 6 -1 0] 
  ask stickers-on patch 6 7 0    [setxyz 6 3 -4] 
  ask stickers-on patch 6 7 4    [setxyz 6 7 0]
  ask stickers-on patch 6 -1 3   [setxyz 6 7 4] 
  ask stickers-on patch 6 0 -4   [setxyz 6 -1 3] 
  ask stickers-on patch 6 7 -3   [setxyz 6 0 -4] 
  ask stickers-on patch 6 6 4    [setxyz 6 7 -3] 
  ask stickers-on patch 6 7 4    [setxyz 6 6 4]
  paint-neighbors
end 

to spin-cube
  set i -3
  while [i < 4] [
    ask stickers-on patch 0 -1 i [setxyz 7 7 i]
    ask stickers-on patch -1 6 i [setxyz 0 -1 i]
    ask stickers-on patch 6 7 i  [setxyz -1 6 i]
    ask stickers-on patch 7 0 i  [setxyz 6 7 i]
    ask stickers-on patch 7 7 i  [setxyz 7 0 i]

    ask stickers-on patch 3 -1 i [setxyz 7 7 i]
    ask stickers-on patch -1 3 i  [setxyz 3 -1 i]
    ask stickers-on patch 3 7 i  [setxyz -1 3 i]
    ask stickers-on patch 7 3 i  [setxyz 3 7 i]
    ask stickers-on patch 7 7 i  [setxyz 7 3 i]

    ask stickers-on patch -1 0 i [setxyz 7 7 i]
    ask stickers-on patch 0 7 i  [setxyz -1 0 i]
    ask stickers-on patch 7 6 i  [setxyz 0 7 i]
    ask stickers-on patch 6 -1 i [setxyz 7 6 i]
    ask stickers-on patch 7 7 i  [setxyz 6 -1 i]
    set i (i + 3) ]

  set i -4
  while [i < 5] [
    ask stickers-on patch 0 0 i [setxyz 7 7 i]
    ask stickers-on patch 0 6 i [setxyz 0 0 i]
    ask stickers-on patch 6 6 i [setxyz 0 6 i]
    ask stickers-on patch 6 0 i [setxyz 6 6 i]
    ask stickers-on patch 7 7 i [setxyz 6 0 i]

    ask stickers-on patch 0 3 i [setxyz 7 7 i]
    ask stickers-on patch 3 6 i [setxyz 0 3 i]
    ask stickers-on patch 6 3 i [setxyz 3 6 i]
    ask stickers-on patch 3 0 i [setxyz 6 3 i]
    ask stickers-on patch 7 7 i [setxyz 3 0 i]
    set i (i + 8) ]
  paint-neighbors
end 

to roll-cube
  set i 0
  while [i < 7] [
    ask stickers-on patch 0 i 4   [setxyz 0 i 5]
    ask stickers-on patch -1 i -3 [setxyz 0 i 4]
    ask stickers-on patch 6 i -4  [setxyz -1 i -3]
    ask stickers-on patch 7 i 3   [setxyz 6 i -4]
    ask stickers-on patch 0 i 5   [setxyz 7 i 3]

    ask stickers-on patch 3 i 4   [setxyz 0 i 5]
    ask stickers-on patch -1 i 0  [setxyz 3 i 4]
    ask stickers-on patch 3 i -4  [setxyz -1 i 0]
    ask stickers-on patch 7 i 0   [setxyz 3 i -4]
    ask stickers-on patch 0 i 5   [setxyz 7 i 0]

    ask stickers-on patch 6 i 4  [setxyz 0 i 5]
    ask stickers-on patch -1 i 3 [setxyz 6 i 4]
    ask stickers-on patch 0 i -4 [setxyz -1 i 3]
    ask stickers-on patch 7 i -3 [setxyz 0 i -4]
    ask stickers-on patch 0 i 5  [setxyz 7 i -3]
    set i (i + 3) ]
  
  set i -1
  while [i < 9] [
    ask stickers-on patch 0 i 0  [setxyz 0 i 5]
    ask stickers-on patch 3 i -3 [setxyz 0 i 0]
    ask stickers-on patch 6 i 0  [setxyz 3 i -3]
    ask stickers-on patch 3 i 3  [setxyz 6 i 0]
    ask stickers-on patch 0 i 5  [setxyz 3 i 3]

    ask stickers-on patch 0 i 3  [setxyz 0 i 5]
    ask stickers-on patch 0 i -3 [setxyz 0 i 3]
    ask stickers-on patch 6 i -3 [setxyz 0 i -3]
    ask stickers-on patch 6 i 3  [setxyz 6 i -3]
    ask stickers-on patch 0 i 5  [setxyz 6 i 3]
    set i (i + 8) ]
  paint-neighbors
end 

to paint-neighbors
  clear-patches
  ask stickers
    [ paint-stickers neighbors ]
end 

to paint-stickers [agents]
  ask agents [ set pcolor [color] of myself - 2 ]
end 

;;Robert Patchin 2017

There is only one version of this model, created over 6 years ago by Robert Patchin.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.