Welcome To DIY Tube Video Community

Get PAID for video views, comments, thumbs up and more. Learn More

Large Scale Rubik's Cube Simulation  - Solving 32768 Layers

Large Scale Rubik's Cube Simulation - Solving 32768 Layers


1 year
Want to watch this again later?
Sign in to add this video to a playlist. Login
Report 0 1
6,442,450,944 tiles
2706.16 hours

Each face is exactly 2^30 tiles, equivalent to a 1 gigapixel image. Here is a link to a full size (2x zoomed) image of the front face. (https://easyzoom.com/image/146053/album/0/4?mode=manage)

The grid size in the scales animation is 1m for the small squares and 10m for the large. The cube is 622m in each dimension (based a 3x3 cube being 57mm)

The solver is a single threaded 64 bit application written in c++. The source code has been posted to GitHub (https://github.com/ShellPuppy/RCube). If anyone is interested in a challenge, the application is capable of solving up to a 65,536 layered cube but I predict it will take around 2 years to complete and require just over 24gb of ram. The app is capable of saving its state every few hours in case a reboot is necessary. I'm fairly certain it's not possible to make this app multi-threaded since there is no reasonable way to break the problem into sub problems that can be distributed; imagine 2 people trying to solve a cube at the same time.

The algorithm I used is explained in more detail the GitHub readme. In short, it solves centers then corners then edges and uses a very efficient commutator that can move many tiles at once. The edges and corners are brute force solved (there is a lot of room for improvement there).

I ran this simulation on an 8700k @ 5ghz and it took a total of 2706.16 hours to complete and generated over 500gb of image data. I set it to export a set of images for each face about every 150,000 moves. Unfortunately there aren't enough pixels in a 4k video to show every tile on the cube so I had the app export 4-megapixel images for each face and frame of the animation (each face actually contains exactly 1 gigapixel). Those 6 image sequences were used to texture a cube for the final render. In addition the app exports some statistics to a log file which was used to generate the stats in the final video.

The zoom-out sequence nearly broke my machine. I generated 3 full size images (front, top, and right) and used it to texture a 3d cube then moved the camera extremely close. I used an s-curve function (https://en.wikipedia.org/wiki/Sigmoid_function) for the motion of the camera.

Note: rotations of 2 were counted as single move in the stats.


Up Next Autoplay