# Better way of maintaining super big alg sheets



## abunickabhi (Feb 7, 2021)

I have been using Google sheets to maintain the algset for blindsolving.

Upto 100k cases, I have not encountered any errors, but now I am starting to feel the limitations of Google sheets and need a better way of maintaining the algs.

These are the few problems I encountered with Google sheet, and had to find workarounds for it:
https://webapps.stackexchange.com/q...sert-more-than-10-000-images-in-google-sheets
https://webapps.stackexchange.com/questions/149261/exporting-huge-google-sheet-to-a-pdf

Is there any template made in SQL, MongoDB or any other offline utility to make inverses and mirrors appear automatically for that cases in the sheet, also have alg.cubing (cubing.js), cube diagram printed out next to the case, and since it is offline, not have any limitation on the size of the sheet?

Thanks for your help! I know a bit of Python, but my knowledge is limited when it comes to databases and js.


----------



## qwr (Feb 7, 2021)

You're right that spreadsheets are not the best way to go for very large amounts of data. However google sheets is still the best if you plan on doing collab work.

Maybe a solution that can scale is to use LaTeX and make sections. After all, it can handle entire book's worth of content, and you can generate TeX itself using macros or with another script. So perhaps you have a database (I suggest SQL), a python script that reads the database to make inverses and images (can generate programmatically with https://github.com/Cride5/visualcube or I can try to hack together a TikZ method) and produces the TeX code, the LaTeX takes care of generating the monster PDF. However LaTeX itself is annoying and I won't ld only do this if you really want a nice looking PDF output.


----------



## abunickabhi (Feb 7, 2021)

qwr said:


> You're right that spreadsheets are not the best way to go for very large amounts of data. However google sheets is still the best if you plan on doing collab work.
> 
> Maybe a solution that can scale is to use LaTeX and make sections. After all, it can handle entire book's worth of content, and you can generate TeX itself using macros or with another script. So perhaps you have a database (I suggest SQL), a python script that reads the database to make inverses and images (can generate programmatically with https://github.com/Cride5/visualcube or I can try to hack together a TikZ method) and produces the TeX code, the LaTeX takes care of generating the monster PDF. However LaTeX itself is annoying and I won't ld only do this if you really want a nice looking PDF output.


Thanks for the suggestions, I have used Latex to make my Masters thesis.
The idea of using sections to make the algs has never crossed me before, I might give it a try.
The worst case scenario is that I have all the tables imported from Google sheet, and Latex hangs up on my 16GB RAM Ryzen processor machine, while it is printing PDF. Also I do know beautiful images can be generated in Latex, no idea on how to import the cubing.js image renders into Latex code.

Can you think of any other less troublesome solution? Is mongoDB viable and a good candidate in this case?

Having a nice looking PDF output is not my priority. I already exported the google sheet to a PDF, and it is 4600 page, full of 5-style and letter quads. Also I do have smaller version of the sheet public and sharable on google, so sharing the most recent copy of the sheet is also not my priority.

My priorities are:
1) Including alg.cubing like images in the database, which reads target stickers and generates an image. I pinged @Lucas Garron about generating images with just target stickers as input. eg. UF-UB-RD-RU-LB as input should give me  as output.

2) Mirrors and inverses of algs automatically entered. Using it in google sheet, slows down the sheet a lot, so currently I enter in the mirrors and inverses myself manually. I use tools to generate batches of mirrors and inverses, but entering them corresponding to the letter quad is a manual task. I used @Roman Alg inverse tool 2 years back, and currently I use algtrans.html for mirrors and inverses.


----------



## qwr (Feb 7, 2021)

The exact database kind is irrelevant in this case. Your application is not really the kinds of problems databases are designed for and in fact a simple CSV or JSON document probably suffices. 
I always thought of LaTeX being memory efficient to the point of being slower - I've never heard of LaTeX ever running out of memory.

IDK your requirements for the diagram: can you write a script that reads target stickers and generates a diagram for visualcube?


----------



## abunickabhi (Feb 7, 2021)

The problem with visualcube images is that they are not good for representing BLD cases. In BLD the side and the back stickers also need to be visible. I found alg.cubing images to be better representation, as only BL,BD and DB edge stickers are not visible.


----------



## carcass (Feb 7, 2021)

Print out a large number of them so you can free up the space. I am the type of person who loves having a physical reference for algorithms


----------



## abunickabhi (Feb 7, 2021)

carcass said:


> Print out a large number of them so you can free up the space. I am the type of person who loves having a physical reference for algorithms


In my case it will be 4600 pages of algorithms. It will be too much waste of paper. I prefer to keep the algset digital.


----------



## qwr (Feb 7, 2021)

abunickabhi said:


> In my case it will be 4600 pages of algorithms. It will be too much waste of paper. I prefer to keep the algset digital.


this goes to show how crazy this endeavor is


----------



## carcass (Feb 7, 2021)

oh gosh, I thought this was like ZB, not like 1 Look F2L or something. Maybe get an enormous SD card or something and make a huge pdf


----------



## Christopher Mowla (Feb 7, 2021)

You could create the spreadsheets with Excel VBA to actually draw a cube image for you next to the algorithm(s) for it. For example, the same that you did on page 2 of this document. (You can make a column with the algorithms and have consecutive columns next to that column all be solely for the cube image. (Because you can make the dimensions of cells have an equal length and width, thereby functioning as _pixels_. I'm not sure how many pixels are required to represent a case -- maybe if I could see a link to your Google sheets, that may be helpful to get an idea -- but even if you end up needing 30 rows x 30 columns to create a case image, you can always zoom out to make the images small in view and enlarge the font size of the algorithms in the algorithms column (and merge those cells as one -- all of which can be done automatically with Excel VBA).)

But this idea would only work if you don't have arrows or anything else besides a colored pixels -- which can also of course be textures too, especially for pieces to ignore (instead of using a dark gray).

And I know that a worksheet in Excel can only hold 1,048,576 rows (and, although not relevant, 16,384 columns), you can store cases for different subsets in a separate worksheet tab or in an entirely different worksheet (if Google sheets doesn't work like Excel spreadsheets . . . I don't know much about Google sheets TBH).

So the advantage of this is the file size is much smaller if colored cells are used in place of images.

(Again, if you could provide a link to one of your Google sheets, I can maybe get a better idea.)


----------



## qwr (Feb 7, 2021)

I have never seen a situation for which VBA was ever the right answer lmao


----------



## Christopher Mowla (Feb 7, 2021)

qwr said:


> I have never seen a situation for which VBA was ever the right answer lmao


I'm surprised at your comment. Not to mention rude, but you are in favor of scripts. VBA is scripts and has a lot of capabilities. There's also python in Excel too if that's more appealing.


----------



## qwr (Feb 7, 2021)

Christopher Mowla said:


> I'm surprised at your comment. Not to mention rude, but you are in favor of scripts. VBA is scripts and has a lot of capabilities. There's also python in Excel too if that's more appealing.



You are seriously suggesting using spreadsheet cells as pixels for images? Even if you don't bump up into excel's hard limits (it's not designed for this quantity of data), you may bring the program to a standstill. If you are willing to put in the energy to hack together a VBA method, why not just make a proper TikZ method that is so much more flexible and robust. It is moot anyway because I believe at this scale a spreadsheet is not the right answer - a proper document preparation system like TeX is much more appropriate. 

I am not even sure the colored cells would save space, given that excel's openoffice format as XML is not particularly space efficient. There exist tools to minify PNG files so a cube diagram could even be under one kilobyte for 3D and a few hundred bytes for 2D.


----------



## Christopher Mowla (Feb 8, 2021)

Again, I don't know exactly how his current sheet looks to be certain, *but what he was asking for does not sound like a PDF printout*. I am a huge fan of LaTeX myself. I wrote my 1,100 page textbook in it! And I even programmed a script to convert Microsoft Excel formulas -- of *any complexity* -- into parsable LaTeX code with VBA for the purpose of generating Engineering reports. (Here's the PDF documentation. If anyone is interested to actually view it, save to your machine and view with your PDF reader instead of in Google Docs to make the internal hyperlinks work.)

But the question is how is navigation for a specific case going to work in a PDF versus a database or a glorified (programmed) spreadsheet. For example, when I made my F3L PDF for K4, on *page 2* is a diagram of the pieces that I numbered so that one can use the search in their PDF viewer to search for "8-7" (without quotes) to quickly find a case that has those two pieces need to be inserted (in their respective slots). But that is painful to do for a large quantity of cases! You can use internal hyperlinks and the table of contents in the LaTeX PDF, but it's still not efficient to actually use. *When need a search engine*, which is possible with VBA (that's my search engine which mimics Google's, with autocomplete . . . in both directions . . . it can search a 2400+ page BIBLE in a manner of seconds . . . referring back to your example with spreadsheets failing to process large amounts of data as is in a book like LaTeX can).

Everything he's looking for (automatically create mirrors, inverses, etc.) can be easily done in a spreadsheet. And best of all, it can even be that the images can be dynamically created as the viewer is viewing the alg associated with the algorithms (rows) in the current view (in between the four corner cells visible in the current screen). So that absolutely no space is needed to store the images. (VBA can be used to do conditional formatting too.)

Any of the one to four versions (mirror, inverse, etc.) of a case need to be inputted in a given row. The other (three?) will be automatically calculated in the cells. And it can be that once there is some text in a cell, that Excel will not keep regenerating the move sequences. (It will only generate sequences in which all four cells in a row are not filled in . . . and it's easy to use Excel table filters to quickly find "incomplete rows" to fill. (Much much faster than a typical For loop.) So I'm sure he will run the code to generate the formulas. He can disable that code from running once he has it run once to generate all algorithms (so that it doesn't keep searching for "incomplete rows"). Then the user will use the search engine to pull up algorithms to cases that they describe some how with the search engine. Then as those rows come up, the images for those cases will be generated simultaneously as their corresponding algorithms come into view.

The main problem is people will have to have Microsoft Office installed to use this.

But if someone has a better idea, that's fine with me. But I don't like the idea of him having to depend on Lucas Garron (or anyone else's) software for the long-term. (alg.garron.us was taken down and replaced with alg.cubing.net, which completely wrecked years of posts which linked to it. So I don't think a big project like this should be "at the mercy" of anyone else's server. He's got to think *long-term*, so that he doesn't have to keep "adapting" his work to changing technology as time progresses.)



abunickabhi said:


> 1) Including alg.cubing like images in the database, which reads target stickers and generates an image. I pinged @Lucas Garron about generating images with just target stickers as input. eg. UF-UB-RD-RU-LB as input should give me View attachment 14853 as output.


I'm not sure if you ever thought about flat 3D images similar to visual cubes LL view like these, for example, but that's also an option. (And are more feasible to generate with cell pixel representations with my idea.)

And @qwr , I'm not "insisting" that this be the way to go (I saw that's what you wrote originally but reasonably changed it to "suggesting"), but I can't ignore the fact that he would have still been using Google Sheets if the data wasn't as large as it is now. This would be a way for him to continue to use his originally chosen form of medium.


----------



## qwr (Feb 8, 2021)

I agree that a PDF document is probably not the right medium for the sheer number of cases, and something like a specialized alg database would be better. For some reason I thought the OP asked for a PDF, like the cube root 1LLL PDF, but I see now that it is asking for a way to organize. The main issue is that I don't know how the BLD algs are organized; the 1LLL PDF is the only project I know of to accumulate many algorithms and it is only 85 pages. (1LLL is already considered not feasible currently so idk how compiling 4000 pages pages is even readable by humans, but then again I am not a BLD solver and my personal philosophy would limit myself to at most one or two sheets of paper for algs.)

@abunickabhi maybe you can ask Gil Zussman about adding bld algs to his speedcubedb.com site; Gil has recently added a megaminx algs section in consultation with some mega solvers. I've been pushing for him to make it open source and to post here so that people can fork and send in PRs, but he hasn't gotten around to doing so yet.

Anyhow I am not a fan of any solution that requires using Microsoft Office / VBA (StackOverflow's most "dreaded" language according to their latest survey of programmers). I believe it is especially not designed for the use cases of an actual database with search (just because you can, doesn't mean you should), such as SQLite or MySQL. My personal experience with VBA is very limited but gave me a bad impression (not to mention whenever I hear about it nowadays it's always in the context of malware and vulnerabilities).


----------



## Alexander (Feb 11, 2021)

qwr said:


> I have never seen a situation for which VBA was ever the right answer lmao



VBA Code

```
Sub colls()
Dim cell As Variant
Dim i As Integer
i = 1
For Each cell In Range("A1:A41")
PicPath = "http://cube.crider.co.uk/visualcube.php?stage=coll&fmt=png&size=100&view=plan&case=" & cell.Value & ""
With ActiveSheet.Pictures.Insert(PicPath)
    With .ShapeRange
        .LockAspectRatio = msoTrue
        .Width = 50
        .Height = 50
    End With
    .Left = ActiveSheet.Cells(i, 5).Left
    .Top = ActiveSheet.Cells(i, 5).Top
    .Placement = 1
    .PrintObject = True
End With
i = i + 5
Next cell    
End Sub

Sub wvolls()
Dim cell As Variant
Dim i As Integer
i = 18
For Each cell In Range("A1:A90")
PicPath = "http://cube.crider.co.uk/visualcube.php?stage=pll&fmt=png&size=100&view=plan&case=" & cell.Value & ""
With ActiveSheet.Pictures.Insert(PicPath)
    With .ShapeRange
        .LockAspectRatio = msoTrue
        .Width = 50
        .Height = 50
    End With
    .Left = ActiveSheet.Cells(i, 5).Left
    .Top = ActiveSheet.Cells(i, 5).Top
    .Placement = 1
    .PrintObject = True
End With
i = i + 3
Next cell
End Sub
```


----------



## Christopher Mowla (Feb 12, 2021)

Inserting images is rather slow compared to drawing cube images in Excel, but here's alternate code to do the same thing (with a few additional features for aesthetics):

EDIT:
I used @Roman's online Mosaic tool to effortlessly produce these sketches for the 3x3x3 and 4x4x4, for example. So it's not too tedious to actually draw the cube images with Excel with an aid such as that. Of course the images need to be touched up some before the cell addresses are made into sticker colors. The hardest part (*which is doable*) is to implement a Rubik's cube move parser. And you can dynamically show *ONE image* at a time, for the currently selected algorithm cell. That way, you can make a very high resolution image and not require more than one row per algorithm.) And I'm not insisting or suggesting this be done, but this is a way to show _how_ it can be done and why it would be advantageous.



But anyway, continuing on . . .

To run the code,

Open Microsoft Excel
Navigate to: File -> Open -> Trust Center -> Trust Center Settings -> Macro Settings
Dot in *Enable all macros (not recommended; potentially dangerous code can run)*
Click OK twice
Press [alt] + [F11] (to open the VB editor window (VBE))
Press [ctrl] + [R] (to show the left pane, if it isn't showing already)
Right click anywhere in the white beneath *ThisWorkbook*
Navigate to Insert -> Module
Copy this code and paste it.
Click in a *NEW blank sheet*
With the VBE still open, left click anywhere inside of Sub Test_colls_v2()
Press [F5] (or click the play arrow button in the toolbar) to run.
*And . . . *when you go to Save As, be sure to save as .xlsm, not as .xlsx.
(And these instructions apply to running Alexander's code as well.)

(And note that commented lines in VBA begin with a ')


```
Option Explicit

Sub Test_colls_v2()

'Manually input algorithms into these cells.
Range("D1").Value = "R2 B2 F"
Range("B3").Value = "R2"
Range("B4").Value = "U2 F2"
Range("B5").Value = "D' R"

'Call the sub.
Call colls_v2(ActiveWorkbook, ActiveSheet.Name, "D1,B3:B5")

End Sub
Sub colls_v2(book As Workbook, sheetName As String, rangeAddress As String)

Application.ScreenUpdating = False

'url parameters:
    Dim startOfEveryURL As String
    startOfEveryURL = "http://cube.crider.co.uk/visualcube.php?"

    Dim stage As String
    stage = "&stage=pll"

    Dim picFormat As String
    picFormat = "&fmt=png"

    Dim imageSize As String
    imageSize = "&size=100"

    Dim cubeSize As String
    cubeSize = "&pzl=3"

    Dim view As String

    Dim alg As String
    Dim url As String


Dim rng As Range
Set rng = book.Sheets(sheetName).Range(rangeAddress)

'For each cell in the range,
    Dim cell As Range
    For Each cell In rng
    
        'Change size of cells in the range where images are to be inserted.
        With cell
            .RowHeight = 80
            .ColumnWidth = 15
        End With
    
        alg = cell.Value
    
        'Change the background color and font color of cells to the immediate LEFT of the cells where images are to be inserted.
        With cell.Previous
            .ColumnWidth = 35
            .Interior.Color = RGB(225, 225, 225) 'light shade of gray background color
            .Font.Color = RGB(255, 0, 0) 'red font
            .Font.Size = 16
            .Font.Name = "Times New Roman"
            .Value = alg
            .HorizontalAlignment = xlLeft
            .VerticalAlignment = xlCenter
        End With
    
        'Just for fun, make even rows have FULL view and odd rows have last layer view.
        If Modulous(cell.Row, 2) = 0 Then
            view = "&view=full"
        Else
            view = "&view=plan"
        End If
            
        url = startOfEveryURL & stage & picFormat & imageSize & cubeSize & view & "&alg=" & alg
    
        'Put a medium border around both cells (for appearance)
        Call Cell_Border(book, sheetName, cell.Address)
        Call Cell_Border(book, sheetName, cell.Previous.Address)
    
        'Now insert the images
        Call URLPictureInsert(url, book, sheetName, cell.Address)
    
    Next cell

rng.ClearContents

Application.ScreenUpdating = True

MsgBox "Program Complete!", vbInformation, "VBA Macro by Christopher Mowla"

End Sub


Sub TestURLPictureInsert()

Dim url As String
url = "http://cube.crider.co.uk/visualcube.php?stage=pll&fmt=png&size=100&pzl=3&view=plan&alg=R2F2R2"

Call URLPictureInsert(url, ActiveSheet.Name, "A5")
End Sub
Sub URLPictureInsert(url As String, book As Workbook, sheetName As String, cellAddressToInsert As String)
'Code is originally from https://www.extendoffice.com/documents/excel/4212-excel-insert-image-from-url.html
'Also check out Edit #2 of https://superuser.com/questions/940861/how-can-i-display-a-url-as-an-image-in-an-excel-cell

Dim xRg As Range
Set xRg = Range(cellAddressToInsert)

Sheets(sheetName).Pictures.Insert(url).Select

Dim Pshp As Shape
Set Pshp = Selection.ShapeRange.Item(1)

With Pshp
    .LockAspectRatio = msoFalse
    .Top = xRg.Top + 0.5
    .Left = xRg.Left + 5
End With

Set Pshp = Nothing

End Sub


Sub Test__Cell_Border()
Call Cell_Border(ActiveWorkbook, ActiveSheet.Name, ActiveCell.Address)
End Sub
Sub Cell_Border(book As Workbook, sheetName As String, rangeAddress As String)
With book.Sheets(sheetName).Range(rangeAddress)
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeLeft).Weight = xlMedium

    .Borders(xlEdgeRight).LineStyle = xlContinuous
    .Borders(xlEdgeRight).Weight = xlMedium

    .Borders(xlEdgeTop).LineStyle = xlContinuous
    .Borders(xlEdgeTop).Weight = xlMedium

    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Borders(xlEdgeBottom).Weight = xlMedium
End With
End Sub


Sub TestModulous()
MsgBox Modulous(5, 2)
End Sub
Function Modulous(a As Variant, b As Variant)
Modulous = a - b * Floor(a / b)
End Function


Sub TestFloor()
'MsgBoxP Floor(3.21), Floor(-3.21)
End Sub
Function Floor(number As Variant)
    'Code from here: https://www.mrexcel.com/board/threads/floor-function-in-vba-code.218947/#post-1069232
    Floor = Int(number) - 1 * (Int(number) > number)
End Function
```


----------



## Cubing Forever (Feb 12, 2021)

abunickabhi said:


> The problem with visualcube images is that they are not good for representing BLD cases. In BLD the side and the back stickers also need to be visible. I found alg.cubing images to be better representation, as only BL,BD and DB edge stickers are not visible.


A bit late but VisualCube allows for a transparent view which enables the side and back stickers to be visible.
You just have to set the view parameter to view=trans.


----------



## abunickabhi (Feb 12, 2021)

Cubing Forever said:


> A bit late but VisualCube allows for a transparent view which enables the side and back stickers to be visible.
> You just have to set the view parameter to view=trans.


I tried that for a while. The images were not clear to be able to see the all the 5 edge piece swap.

Fun fact: there is transparent cube also in alg.cubing V2 which is quite similar to the graphics of transparent visualcube image.


----------



## Cubing Forever (Feb 12, 2021)

abunickabhi said:


> I tried that for a while. The images were not clear to be able to see the all the 5 edge piece swap.
> 
> Fun fact: there is transparent cube also in alg.cubing V2 which is quite similar to the graphics of transparent visualcube image.


But you probably shouldn't be dependent on ACN for long term since in the next 7-8 years, ACN might face the same fate as alg.garron.us


----------



## abunickabhi (Feb 12, 2021)

Cubing Forever said:


> But you probably shouldn't be dependent on ACN for long term since in the next 7-8 years, ACN might face the same fate as alg.garron.us


Do not worry, I have maintained a local copy of ACN. 

I have even tweaked the software a bit to identify target stickers, as it was not there in the original code, although it is not perfect right now. Identifying target stickers is crucial in making blindsolving algs.


----------



## Christopher Mowla (Feb 12, 2021)

abunickabhi said:


> Do not worry, I have maintained a local copy of ACN.
> 
> I have even tweaked the software a bit to identify target stickers, as it was not there in the original code, although it is not perfect right now. Identifying target stickers is crucial in making blindsolving algs.


There is https://cubing.net/twisty.js/ (Have *Cubies* and *Sticker Border* unchecked.) That will literally show all of the pieces of the cube, and it looks pretty neat. (Reminds me of Ryan Heise's online cube simulator for speedsolving comps.) (Link retrieved from https://cubing.net/. So it's Lucas' project as well.)

And if you have modified Lucas' alg.cubing.net source code for your local machine, if you can get a file path for an image generated by an algorithm, the VBA code that Alexander and I wrote will run much faster, because the images would be pulled from your own computer (not from the web). But I know this digresses from the main objective of being able to house more than 10,000 images. *And I don't know what your current Google worksheet looks like to know how the file size compares*. If you have neglected to show your sheets _because they are unpublished_, I understand completely. But if they are accessible online somewhere, can you provide us a link to see what you have?


----------



## qwr (Feb 12, 2021)

@abunickabhi what you must tell us is if by sheet you mean spreadsheet or more like searchable database. Because at the scale of data you are proposing, a spreadsheet may become hard to navigate.


----------



## abunickabhi (Feb 13, 2021)

Christopher Mowla said:


> There is https://cubing.net/twisty.js/ (Have *Cubies* and *Sticker Border* unchecked.) That will literally show all of the pieces of the cube, and it looks pretty neat. (Reminds me of Ryan Heise's online cube simulator for speedsolving comps.) (Link retrieved from https://cubing.net/. So it's Lucas' project as well.)
> 
> And if you have modified Lucas' alg.cubing.net source code for your local machine, if you can get a file path for an image generated by an algorithm, the VBA code that Alexander and I wrote will run much faster, because the images would be pulled from your own computer (not from the web). But I know this digresses from the main objective of being able to house more than 10,000 images. *And I don't know what your current Google worksheet looks like to know how the file size compares*. If you have neglected to show your sheets _because they are unpublished_, I understand completely. But if they are accessible online somewhere, can you provide us a link to see what you have?



Yes, the algsheet is there in my signature called My algs, the signature is there after every post.

Otherwise the sheet is at, https://docs.google.com/spreadsheets/d/158F-jyu8ld8kbdD4I_Lqy4fsX5vvp_MQOq7Ofg8NdSI/edit?usp=sharing

I asked stackoverflow, the limit for google sheets has been reached at 10k images, the only way I can add more images is via link (imgur links say), and that will be a manual process + it will take time to load on the google sheet.



qwr said:


> @abunickabhi what you must tell us is if by sheet you mean spreadsheet or more like searchable database. Because at the scale of data you are proposing, a spreadsheet may become hard to navigate.


Yes I agree spreadsheet is not the best solution at the scale of 126k rows.
The only plus point is that we can share the google sheet easily online.

Ultimately, I want to have a local searchable database for big algorithm sheet as that will be productive and save time.


----------



## Christopher Mowla (Feb 13, 2021)

abunickabhi said:


> Yes, the algsheet is there in my signature called My algs,


I couldn't download a stable version of it as a .xlsx or view it in the latest version of FireFox. The file I downloaded is 286 MB but with no images. (And hardly any algorithms.) Excel notified me when I opened it that it found a problem with the file and asked if I wanted to recover as much as possible before allowing me to view.



abunickabhi said:


> I asked stackoverflow, the limit for google sheets has been reached at 10k images, the only way I can add more images is via link (imgur links say), and that will be a manual process + it will take time to load on the google sheet.


That's precisely what I thought, and I'm thinking that not all images will load for every user (even with sufficient time) because wireless internet connections are unstable, for example.

But anyway, if you're interested to see what I can try to do, can you provide a download link to an Excel file with just the *UF5* sheet/tab with maybe just 1,000 rows where all cells in those rows have every bit of information (algorithms, images, etc.)? *EDIT: Never mind. I happened to see what I was looking for around row 62,000*.

And is this just for the 3x3x3 (I can't tell at the moment), or would you like me to find a resolution that can be used for other cube sizes (and if more than just the 3x3x3, can you state which cube sizes you cover -- or will cover -- in your sheets?)?


----------



## abunickabhi (Feb 13, 2021)

Christopher Mowla said:


> I couldn't download a stable version of it as a .xlsx or view it in the latest version of FireFox. The file I downloaded is 286 MB but with no images. (And hardly any algorithms.) Excel notified me when I opened it that it found a problem with the file and asked if I wanted to recover as much as possible before allowing me to view.
> 
> That's precisely what I thought, and I'm thinking that not all images will load for every user (even with sufficient time) because wireless internet connections are unstable, for example.
> 
> ...


The sheet is mainly for the 3x3, so the cube images will be required only for a 3x3. You are correct about not images being loaded up even when user gives sufficient time.

I do not know a way of sharing the offline .xlsx file. I do all the work online, and do not have an offline copy. Since the sheet is huge, export option of google sheets does not work, and some workaround with google app scripts has to be done.

I will try to get a download link for the UF5 tab and then mail it to you.


----------



## Christopher Mowla (Feb 14, 2021)

Okay, I did a little more "research" and have come up with a proposal of what I'm thinking to do (and have already done), if you like what you see (and hear) in that video . . . including the fact that users will have to have Microsoft Excel installed on their computers (not just online versions of Office).


----------



## abunickabhi (Feb 14, 2021)

Christopher Mowla said:


> Inserting images is rather slow compared to drawing cube images in Excel, but here's alternate code to do the same thing (with a few additional features for aesthetics):
> 
> EDIT:
> I used @Roman's online Mosaic tool to effortlessly produce these sketches for the 3x3x3 and 4x4x4, for example. So it's not too tedious to actually draw the cube images with Excel with an aid such as that. Of course the images need to be touched up some before the cell addresses are made into sticker colors. The hardest part (*which is doable*) is to implement a Rubik's cube move parser. And you can dynamically show *ONE image* at a time, for the currently selected algorithm cell. That way, you can make a very high resolution image and not require more than one row per algorithm.) And I'm not insisting or suggesting this be done, but this is a way to show _how_ it can be done and why it would be advantageous.
> ...



Is Pete's Spreadsheet code similar or different to the one mentioned above?
The idea of drawing images in the excel sheet itself is a good solution, and as you said in your video, it will not affect the quality that much. It is a much better solution compared to inserting images, in order to not make the sheet heavier.



Christopher Mowla said:


> Okay, I did a little more "research" and have come up with a proposal of what I'm thinking to do (and have already done), if you like what you see (and hear) in that video . . . including the fact that users will have to have Microsoft Excel installed on their computers (not just online versions of Office).



The video made a lot of things clear. I give the *approval *for going ahead with this idea. Since most of the cube images in my sheet are Orange front and Yellow top (z2 y transform to the template image you have chosen), generating the images via Excel formulas using that orientation will be preferable. Also Orange front and Yellow top has been historically the main orientation for blindsolving a decade back.

Currently I translate all the algorithms into Yo notation externally via this code httpbs://github.com/abunickabhi/5-style/blob/master/yonotation.py .I do not know how to implement this into excel formulas. I think it can be done by using regex operations in Excel, but I am more comfortable with re library in python.


----------



## abunickabhi (Feb 14, 2021)

Also I am fine with the grey pixels in the background of the template, if it would not be too hard to remove, it can be preferably removed.
Also I am fine with the cube angle of the template, with UF/UFR piece shown in focus (top right of the 3D cube), but like I said above I would prefer z2 y over the cube and have Orange front and Yellow top.

I have asked Pete to share his solver which he used here, in the video he made 2 years back. I think he must have constructed a Singmaster parser in excel itself. I do not know how, but I hope I understand the approach on how it can be done via VBA/excel macros.


----------



## Christopher Mowla (Feb 14, 2021)

abunickabhi said:


> Is Pete's Spreadsheet code similar or different to the one mentioned above?


They are different. (I did not contact Pete for his code, and my code will not allow you to turn the cube, as it will just be an image.)



abunickabhi said:


> The idea of drawing images in the excel sheet itself is a good solution, and as you said in your video, it will not affect the quality that much.


I first mentioned to reduce 800x800 pixels to 400x400, but by the way it looks, I don't have to reduce the quality at all. And since the actual size of the images in the spreadsheet is independent of the actual file size that they are, we can simply have the cells that they are placed on be larger so that the images are large enough for the user to see.



abunickabhi said:


> It is a much better solution compared to inserting images, in order to not make the sheet heavier.


It's like driving on the highway at night. You can only see what's a few hundred feet in front of you anyway. *And if you want a print to PDF feature (to print ALL cases), that's perfectly straight forward to do*. (Images can be created as they are added to each new PDF page -- in theory. But I guess that comes later.)



abunickabhi said:


> Since most of the cube images in my sheet are Orange front and Yellow top (z2 y transform to the template image you have chosen), generating the images via Excel formulas using that orientation will be preferable. Also Orange front and Yellow top has been historically the main orientation for blindsolving a decade back.


Understandable.  What I will do is set that color orientation as the default, but allow the user to literally choose _any_ RGB they want for the sticker colors by coloring six cells on the separate "search engine sheet" that I mentioned.



abunickabhi said:


> Currently I translate all the algorithms into Yo notation externally via this code httpbs://github.com/abunickabhi/5-style/blob/master/yonotation.py



I wrote code to translate SiGN to WCA in another language before, and therefore when I saw these lines of code, it kind of threw a red flag (if my understanding of this code is correct).

```
string = re.sub(r'(M )(?!\')', 'm', string)
string = re.sub(r'(M\' )(?!\')', 'n', string)
string = re.sub(r'(M2 )(?!\')', 'o', string)
```

And also the code:

```
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D2,"U","a"),"U’","b"),"U2","c"),"L","g"),"L’","h"),"L2","i"),"R","j"),"R’","k"),"R2","l"),"D","d"),"D’","e"),"D2","f"),"F","v"),"F’","w"),"F2","x"),"M","m"),"M’","n"),"M2","o"),"S","s"),"S’","t"),"S2","u"),"E","p"),"E’","q"),"E2","r")
```
Basically, if you are going to substitute (replace) both *R' *and R with something else, you need to first substitute something for *R'* (and also *R2*) first, then just plain *R*!

(But I will follow the instructions on pages 2-5 in this document.)



abunickabhi said:


> .I do not know how to implement this into excel formulas. I think it can be done by using regex operations in Excel, but I am more comfortable with re library in python.


I don't think regular expressions are as fast to use in Excel as a replacement command like Rick's, for example. (So to use his approach in our case, one would make a copy of the column of Singmaster notation and do replacements in that column/range only.) But I will probably write a function which does full translation to each individual cell (and express it as an Excel formula, and then FillDown that formula to the entire column -- which is again a copy of the Singmaster notation column.) Because this works pretty fast also, and is my "style" of coding in VBA.

But I did use a regular expression for checking if the user inputted the case correctly in the search bar or not (whether the user used only the English letters L,R,U,D,F,B in each of the two-letter edge piece identifiers (like UB, for example)).



abunickabhi said:


> Also I am fine with the grey pixels in the background of the template, if it would not be too hard to remove, it can be preferably removed.


Yes, certainly I will remove the background checkerboard pattern. But I might also add in an option to change the background color to something other than white.



abunickabhi said:


> Also I am fine with the cube angle of the template, with UF/UFR piece shown in focus (top right of the 3D cube),


Okay, as long as you're sure about that! (I don't want to do this more than once!)



abunickabhi said:


> but like I said above I would prefer z2 y over the cube and have Orange front and Yellow top.


And as I mentioned above, I will make this the default color orientation but also allow the user to change it.



abunickabhi said:


> I have asked Pete to share his solver which he used here, in the video he made 2 years back. I think he must have constructed a Singmaster parser in excel itself. I do not know how, but I hope I understand the approach on how it can be done via VBA/excel macros.


It only took me an hour to both figure out and code a functions (each its own) to do apply the moves F and F', reset the cube, and simplify (determine) the net piece orientations. So doing the remaining moves should be easy. The only "challenge" now is to associate the moves with the stickers.


----------



## Habsen (Feb 14, 2021)

I recently started to build an alg sheet generator based on python and latex. Maybe this is of interest for you.

I maintain my algs in plain text files that only contain the alg name and the alg itself, e.g.:

```
Ua    R U' R U R U R U' R' U' R2
Ub    R2 U R U R' U' R3 U' R' U R'
H    M2 U M2 U2 M2 U M2
Z    M2 U M2 U M' U2 M2 U2 M'
```

My python script reads these files from a given directory, applies the inverse of the alg on a solved cube, and generates a tikz description of the cube. Finally, everything is put into a latex template which can be build with pdflatex. I have attached my PLL list to illustrate the result.

I intend to implement multiple extensions that support hierarchical directories, different cube visualizations (optional LDB face visibility, U-face view for LL algs, remove color from stickers that are not relevant for the alg set), and fix some minor issues (rotations, ...).

In general, this approach should scale up to 100k algs. The python part is sufficiently fast. pdflatex isn't when the pdf is built from scratch. However, the cube images don't need to be rebuilt every time the pdf is updated.

Let me know if you can use this and I will keep you updated.


----------



## Christopher Mowla (Feb 15, 2021)

Okay. My hands are hurting. I just spent like 3 hours in Microsoft paint getting rid of all shades of colors except for 7 in the image (including the background color.) This is the image I started with, and this is the image that I ended with. (Although it's not really part of the program, if someone wants to simply color the stickers of this cube in Microsoft Paint, for example, it's very easy to do so.)

So, besides the image that I "ended with" being 9.4 times smaller (file size wise, *but the same pixel density*) is the quality lost?

(And I had to rotate the cube a little from the one that I showed in my video because the DB edge wasn't showing, but now all piece stickers are showing!)


----------



## qwr (Feb 15, 2021)

Christopher Mowla said:


> Okay. My hands are hurting. I just spent like 3 hours in Microsoft paint getting rid of all shades of colors except for 7 in the image (including the background color.) This is the image I started with, and this is the image that I ended with. (Although it's not really part of the program, if someone wants to simply color the stickers of this cube in Microsoft Paint, for example, it's very easy to do so.)
> 
> So, besides the image that I "ended with" being 9.4 times smaller (file size wise, *but the same pixel density*) is the quality lost?
> 
> (And I had to rotate the cube a little from the one that I showed in my video because the DB edge wasn't showing, but now all piece stickers are showing!)



Manual labor is never the right answer! The transparency background is probably generated by the program itself. It may have been a one line change...
If not, it can be done in 30 seconds in photoshop by selecting by color (since the white does not match the background)



Christopher Mowla said:


> And also the code:
> 
> ```
> =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D2,"U","a"),"U’","b"),"U2","c"),"L","g"),"L’","h"),"L2","i"),"R","j"),"R’","k"),"R2","l"),"D","d"),"D’","e"),"D2","f"),"F","v"),"F’","w"),"F2","x"),"M","m"),"M’","n"),"M2","o"),"S","s"),"S’","t"),"S2","u"),"E","p"),"E’","q"),"E2","r")
> ```



This cannot be the best way to do things right?


----------



## Christopher Mowla (Feb 15, 2021)

qwr said:


> This cannot be the best way to do things right?


Probably not. (That's not my code. It was in the Word document describing the notation for memorization that I linked to in my post.) If you are interested to see how I decide to do it, I will provide the code when it's done.


----------



## Alexander (Feb 15, 2021)

Christopher Mowla said:


> Code
> string = re.sub(r'(M )(?!\')', 'm', string)
> string = re.sub(r'(M\' )(?!\')', 'n', string)
> string = re.sub(r'(M2 )(?!\')', 'o', string)




```
sub replace()
 Range("A1:Z36").Replace "M", "m"
 Range("A1:Z36").Replace "M'", "n"
 Range("A1:Z36").Replace "M2", "o"
End sub
```


----------



## abunickabhi (Feb 15, 2021)

Christopher Mowla said:


> Okay. My hands are hurting. I just spent like 3 hours in Microsoft paint getting rid of all shades of colors except for 7 in the image (including the background color.) This is the image I started with, and this is the image that I ended with. (Although it's not really part of the program, if someone wants to simply color the stickers of this cube in Microsoft Paint, for example, it's very easy to do so.)
> 
> So, besides the image that I "ended with" being 9.4 times smaller (file size wise, *but the same pixel density*) is the quality lost?
> 
> (And I had to rotate the cube a little from the one that I showed in my video because the DB edge wasn't showing, but now all piece stickers are showing!)


Its fine if the some checkered pixels do remain in the background. All the pieces are visible in the new template, so it will a good image representation for BLD algs. Its fine if the image is 9.4 times smaller in size too. User being able to change orientation by some toggle setting in the sheet is also a good idea.

Working on drawing images itself is a big relief for me, that such an idea exists. I thought I had to manually enter setup moves in alg.cubing and get the images for every case.

Thanks @Alexander , for the regex equivalent in excel. I hope it works.


----------



## Christopher Mowla (Feb 15, 2021)

@abunickabhi
Okay, I took care of the pixilized cube in Excel. I used this online tool with these settings. (And I manually -- which was not a big deal, due to what I did previous to the image -- colored the stickers (of the image that I dragged into that tool) to the exact RGB of the color palette selection from that online tool to hopefully give the best result.)

The online tool (which can clearly be used to create Rubik's Cube Mosaics) could only produce a 500 width x 523 height pixilized version of the cube in Excel, but this is *an actual drawing*! (This is the final result of what it's going to look like.)

I am using conditional formatting (which I coded with VBA to be set automatically) to color the stickers. Even though conditional formatting in Excel is very fast, when you have 500*523 = 261,500 cells to color, it's slow. (It took about 5 seconds to color the stickers!) But I thought to merge cells as much as I could. *Now,* it takes less than a second to color the stickers. (Coloring the stickers is a part of the algorithm parser.)

Please take a look at the image very carefully and let me know if the cube stickers are acceptable. (Again, you can choose any RGB color shade of the colors of the stickers _and the background_. So just the sticker's shape.)

In the meantime, I will resume the algorithm parser code.

*EDIT:*
Here's what was bothering me about the picture. (Both stickers of midge FR and the top sticker of corner UBR.) Fixed.

*EDIT2:*
The algorithm parser is complete. It takes all possible moves of Singmaster notation. (It auto corrects the format of algorithms which are not strictly moves separated by a single space except for when you wrote F'2 instead of F2 or F2', or if there is a character that doesn't below.)

Now I just have to tie the algorithm parser and sticker coloring feature together.


----------



## Habsen (Feb 16, 2021)

I did some tests with my python/latex-based alg sheet generator to find out if it's suitable for 100k algs.

I used a 1k alg set and built the alg sheet on my laptop (Core i7-6500U). Please note, that a modern desktop CPU should easily be 3x-4x faster.
Here are my results:
1. Generating the .tex and .tikz files with the python script takes less than a second.
2. Building the pdf file with pdflatex takes a bit more than four minutes when the pdf is built from scratch.
3. Building the pdf file with pdflatex takes only a few seconds when the cube images are already generated.

In conclusion, this approach will take a few hours when a 100k alg sheet is built for the first time, but it is sufficiently fast when the sheet is built progressively or requires only minor modifications.

I hope to finish the implementation of a stable version by the end of the week. When this is done, I will put the code and templates on github.


----------



## Christopher Mowla (Feb 16, 2021)

@Habsen,
I am assuming that you have read the thread before posting (and have watched my video) and still believe that a large PDF is better for users to use than an interactive search engine spreadsheet.

Can you explain why your PDF output would be better? (If you didn't read all of the posts, note that @abunickabhi, @qwr, and I already agreed that a large PDF is not the solution, because it's not easy to search for cases. Either a database or what I'm doing is practical to use to find cases.)

All in all, I think you should start a new thread about your software, as it definitely deserves attention (and doing so will attract those interested in such software to you). It can be used for solution guides and future cubing books (may I be bold to say "textbooks"?) for sure! But unless you can make the PDF _*interactive*_, I don't think it would be good for anything other than producing printouts.


----------



## Habsen (Feb 16, 2021)

Christopher Mowla said:


> @Habsen,
> I am assuming that you have read the thread before posting (and have watched my video) and still believe that a large PDF is better for users to use than an interactive search engine spreadsheet.
> 
> Can you explain why your PDF output would be better? (If you didn't read all of the posts, note that @abunickabhi, @qwr, and I already agreed that a large PDF is not the solution, because it's not easy to search for cases. Either a database or what I'm doing is practical to use to find cases.)
> ...



My approach is not supposed to solve the maintenance problem for the alg set. I just provided a lightweight way to generate high-quality cube images from a single line of text (containing the alg). Let us just ignore that I put all images in one pdf. The generated images can be used separately.
In my opinion, cube images are not necessary for the UF5 alg set. Every person interested in these types of algs (even 3-Style) should be able to know what happens to the cube when we use the UF-UR-LB 3-cycle for example, without visualization. But the OP defined the image generation as one of the main problems, and for big alg sets in general this is a valid assumption, which is why I wanted to share my approach here, especially after reading about images generated from an array of colored excel cells, etc..

My approach is platform-independent, it doesn't require commercial software, and it doesn't depend on external tools. It is reasonable to expect that python and latex are still available in a couple of years. My approach is also quite fast and easy to use, which makes it especially useful for very large alg sets.


----------



## Christopher Mowla (Feb 16, 2021)

Habsen said:


> In my opinion, cube images are not necessary for the UF5 alg set. Every person interested in these types of algs (even 3-Style) should be able to know what happens to the cube when we use the UF-UR-LB 3-cycle for example, without visualization.


So you're posting in a thread to help someone by saying that what they are specifically asking for isn't necessary? How is that help? Your posts so far seem more of advertising your software which you happened to be working on before this thread existed. I advised to start your own thread to do just that: advertise it.



Habsen said:


> But the OP defined the image generation as one of the main problems,


Housing a lot of images was the problem, not generating them. Perhaps if the images are put into a folder which is linked to a FREE spreadsheet software (like Open Office) such that the images are loaded into view as the user scrolls down the spreadsheet, this could be another solution. *But the images you show don't show edge DB*. @abunickabhi wants to see _all_ piece stickers.



Habsen said:


> and for big alg sets in general this is a valid assumption, which is why I wanted to share my approach here, especially after reading about images generated from an array of colored excel cells, etc..


We are not short of software to create cube images. The point of this is to be able to house the images. Yes, a PDF is the best option to hold the images, but it's not user-friendly to search it.



Habsen said:


> My approach is platform-independent, it doesn't require commercial software,


The most basic versions of Microsoft Office all include Excel. If someone doesn't have any version of Microsoft Excel in 2021 (my software can probably work on Excel 2003), I don't think they have an internet connection, to be quite frank.



Habsen said:


> and it doesn't depend on external tools. It is reasonable to expect that python and latex are still available in a couple of years.


I don't disagree with you there. But Microsoft is like Coca Cola. They are definitely not going anywhere (unless we enter another ice age).


----------



## qwr (Feb 16, 2021)

Christopher Mowla said:


> The most basic versions of Microsoft Office all include Excel. If someone doesn't have any version of Microsoft Excel in 2021 (my software can probably work on Excel 2003), I don't think they have an internet connection, to be quite frank.


I use Ubuntu on my main laptop and I don't have Excel because I don't need to use Excel for anything I do on a daily basis. In 2021 I think a lot of people have actually moved away from MS Office to online tools like Google Sheets or viable alternatives like Libre Office or whatever Mac users use.


----------



## Christopher Mowla (Feb 16, 2021)

@qwr, what's with the nitpicking? What is your objective? Is it just your hobby to debate with people? And I'm not just talking about this reply. You seem to do this everywhere.

(But back to this topic: Sure, they're exceptions to the rule, but no, unless I get an un-biased statistic convincing me that the majority of the younger generation doesn't have Office, I'm not convinced.) And Microsoft Office is available on Mac.)


----------



## Habsen (Feb 16, 2021)

Christopher Mowla said:


> So you're posting in a thread to help someone by saying that what they are specifically asking for isn't necessary? How is that help? Your posts so far seem more of advertising your software which you happened to be working on before this thread existed. I advised to start your own thread to do just that: advertise it.
> 
> The most basic versions of Microsoft Office all include Excel. If someone doesn't have any version of Microsoft Excel in 2021 (my software can probably work on Excel 2003), I don't think they have an internet connection, to be quite frank.
> 
> I don't disagree with you there. But Microsoft is like Coca Cola. They are definitely not going anywhere (unless we enter another ice age).



I said that images are not necessary for the UF5 alg set (which is the main project of the OP), but as the thread is about big alg sets in general, images are definitely required. And this is where I offered to help.

I am not interested in advertising my software. I am developing it for myself to build alg sheets that I couldn't find anywhere else. And I know that publishing software to the community involves a lot of additional work, e.g. for ensuring that it runs on different platforms, checking user inputs that I would never do, etc..

And finally, your opinion about the availabilty of Microsoft Office is super annoying. There are many people that don't want to use Microsoft Windows, myself included.


----------



## qwr (Feb 16, 2021)

It's not nitpicking. I believe a platform independent solution that doesn't depend on commercial software is an important consideration. I also believe that a solution with MS Office does not scale on a fundamental level (my experience with opening a giant excel spreadsheet, created by people who only know excel). Bear in mind, many users here are programmers and students who use Linux or Mac regularly. However, since you've made good progress on the VBA solution, I'm not going to tell you to stop or discourage you or post any more about it.


----------



## Christopher Mowla (Feb 18, 2021)

I finished the image generator in Microsoft Excel yesterday. It consists of several parts. *Here is a video demonstrating it*. If there is still interest in me continuing with this project, let me know and I can try to increase the speed some more if I can. (But I have to take a break from this until the weekend, as I have other programming to do.)

EDIT:
I mentioned in a previous post that I was using conditional formatting to dynamically color the cells for each scramble, but it turns out that the convert_cells_to_image functionality in Excel (via copy and paste) made the program slow when combined with copying cells that are not actually the color that you see that they are (conditional formatting). So I was looking for a workaround, but didn't find one anywhere. But I figured out one for myself. Point being, I saw *this post* in one of the threads I was hoping to find a solution. (It was about 2 side PLL recognition! It's a small world!)


----------



## abunickabhi (Feb 19, 2021)

Christopher Mowla said:


> I finished the image generator in Microsoft Excel yesterday. It consists of several parts. *Here is a video demonstrating it*. If there is still interest in me continuing with this project, let me know and I can try to increase the speed some more if I can. (But I have to take a break from this until the weekend, as I have other programming to do.)
> 
> EDIT:
> I mentioned in a previous post that I was using conditional formatting to dynamically color the cells for each scramble, but it turns out that the convert_cells_to_image functionality in Excel (via copy and paste) made the program slow when combined with copying cells that are not actually the color that you see that they are (conditional formatting). So I was looking for a workaround, but didn't find one anywhere. But I figured out one for myself. Point being, I saw *this post* in one of the threads I was hoping to find a solution. (It was about 2 side PLL recognition! It's a small world!)


Hello,

The image generator in Micosoft Excel looks good. It is fine with 6 colours, the back stickers are distinguishable to a trained eye, no need of having 8 or more colours to represent the image.

Speeding up for longer algorithms is not necessary, since it will be a search engine based excel sheet, so only one case will be shown at a time, right?

Thanks for all the time and effort you have spent over the past 2 weeks, Chris, this problem I could never find a solution for many months. I just pasted cube images manually into cells, which also made the spreadsheet big.

Its fine if you take a break, I will be continuing this project for a while, and I have a couple of big algsets that I want to complete, so there is no short time deadline that I have.


----------



## Christopher Mowla (Feb 19, 2021)

abunickabhi said:


> The image generator in Micosoft Excel looks good. It is fine with 6 colours, the back stickers are distinguishable to a trained eye, no need of having 8 or more colours to represent the image.


Oh, okay. After I mentioned that in the video, I think that can be taken care of even by making the background color darker (whereby I would then make the default D face color exactly RGB(255,255,255) -- pure white). But it's definitely a relief that you're okay with that!

If for any reason you want to have the ability to create your own cube image template (pixilized cube), I have a part of that already done. (But it's just 3x3x3 only right now.)



abunickabhi said:


> Speeding up for longer algorithms is not necessary, since it will be a search engine based excel sheet, so only one case will be shown at a time, right?


Correct. And I actually made two "mistakes" before I filmed that video. The first is that I didn't have "Application.ScreenUpdating = False". That speeds up the program AND I wrote two completely different subroutines to apply the sticker colors. The one I happened to use in the video is the slower of the two! So with these two changes, it's about 15% faster now (at least).



abunickabhi said:


> Thanks for all the time and effort you have spent over the past 2 weeks, Chris, this problem I could never find a solution for many months. I just pasted cube images manually into cells, which also made the spreadsheet big.


Oh, this is fun! Roughly 2,000 lines of code for everything so far. (Probably won't get much larger . . . unless I decide to do the 4x4x4 and up. *(Another advantage to pulling up one case at a time is to be able to zoom in on the image as much as possible . . . this allows for viewing very large cubes . . . and this zoom can be done automatically for you!)*



abunickabhi said:


> Its fine if you take a break, I will be continuing this project for a while, and I have a couple of big algsets that I want to complete, so there is no short time deadline that I have.


Oh, okay. I will do what I can to fulfill my promise and post a video presenting it when it's done.

But I have a few questions:

Do you want the program to also complete the *Cube Target* and *Speffz* columns for you too? (Very easy to do in comparison to what I did with the images, especially that that's dependent on an algorithm parser.)
I already know that you want it to be able to convert to *Yo Notation* and to *Singmaster* (both directions). That is, if you feel like typing in an algorithm in either notation, the sheet will automatically write the algorithm in the other notation.
*Alg Count* column is very easy to do also (because I was *lazy* and implemented my algorithm parser to just break algorithms up into quarter turns. So if you type in the move "F2", it will literally do the move F twice. So it's easy to count the number of turns. If you would like this in different move metrics, state which ones you like. (But if you're wondering what's the easiest, STM for sure, because it's just counting spaces between moves . . . assuming that the algorithms are typed correctly, not like F F R2 B' B.)


----------



## abunickabhi (Feb 19, 2021)

Christopher Mowla said:


> Correct. And I actually made two "mistakes" before I filed that video. The first is that I didn't have "Application.ScreenUpdating = False". That speeds up the program AND I wrote two completely different subroutines to apply the sticker colors. The one I happened to use in the video is the slower of the two! So with these two changes, it's about 15% faster now (at least).


Good to hear about the speedup. I have a silly question. Does the execution of the code that makes the image depend on the RAM capacity? I do have 16GB RAM, but I was just curious to see if RAM capacity can optimize the problem.



Christopher Mowla said:


> Oh, this is fun! Roughly 2,000 lines of code for everything so far. (Probably won't get much larger . . . unless I decide to do the 4x4x4 and up. *(Another advantage to pulling up one case at a time is to be able to zoom in on the image as much as possible . . . this allows for viewing very large cubes!)*


Woah 2k lines of code is a lot. Do you have any personal projects of yours where you will be requiring a 4x4 cube image to be drawn in excel. For me, a 3x3 cube image will suffice.



Christopher Mowla said:


> Do you want the program to also complete the *Cube Target* and *Speffz* columns for you too? (Very easy to do in comparison to what I did with the images, especially that that's dependent on an algorithm parser.)


It will be good if the VBA code does the Cube Target and Speffz column as well. Although I am fine just pasting values in the column, and after them via the substitute formula



Christopher Mowla said:


> I already know that you want it to be able to convert to *Yo Notation* and to *Singmaster* (both directions). That is, if you feel like typing in an algorithm in either notation, the sheet will automatically write the algorithm in the other notation.


I tried to do a bit yesterday in excel, using the REGEXEXTRACT formula, I would like to figure that problem on my own I guess. On the other hand, typing the Yo notation is super fast for me, and it is revision for me as well, so I do not mind if they are not automatically generated.



Christopher Mowla said:


> *Alg Count* column is very easy to do also (because I was *lazy* and implemented my algorithm parser to just break algorithms up into quarter turns. So if you type in the move "F2", it will literally do the move F twice. So it's easy to count the number of turns. If you would like this in different move metrics, state which ones you like. (But if you're wondering what's the easiest, STM for sure, because it's just counting spaces between moves.)


I prefer the STM metric for sure. The algorithm length is 10.58 STM for the current algset. I am with the STM metric of expression.


----------



## Christopher Mowla (Feb 19, 2021)

abunickabhi said:


> Good to hear about the speedup. I have a silly question. Does the execution of the code that makes the image depend on the RAM capacity? I do have 16GB RAM, but I was just curious to see if RAM capacity can optimize the problem.


See this screen recording of my Windows Task Manager during program execution. So it looks like it's not a RAM issue. I actually took care of what could have been a RAM issue by choosing to create a pre-defined table of sticker pixel cell address (as opposed to using conditional formatting to find them), because when I broke the program into two pieces (everything but the last part, where the last part was literally just copying and pasting the cells as an image), if executed separately, both were completed very fast. But when together, it was literally like 15 seconds for one image! I just timed the program (with the first 5 scrambles from the other video) with "exact timing code". Video. (And yeah, my screen is dim. It's late!)



abunickabhi said:


> Do you have any personal projects of yours where you will be requiring a 4x4 cube image to be drawn in excel.


Probably not.



abunickabhi said:


> It will be good if the VBA code does the Cube Target and Speffz column as well. Although I am fine just pasting values in the column, and after them via the substitute formula


VBA can automatically (like I mentioned in that 17 minute video, I believe) apply that formula for you. (If you meant that, I apologize.) But it's really not a big deal.

But I noticed something when looking at your *Cube Target* column. Regarding how you write UL somettimes and then LU. I pulled out my "Handbook of Cubik Math" by Singmaster himself, and he mentioned that you call them by how they are positioned relative to the cube slot that they are in. Is that what you're doing? Or are you assuming that UL is oriented (because U is first, not because of how it is positioned in the slot that it's in) and LU is not? Because if so (I really don't care either way, but I want to code this to your preference!), I am confused about the two bold abbreviations I put under the unoriented column. (You assigned those two abbreviations in some rows to edges that were both unoriented.)

OrientedUnorientedULLUURRUUBBUFDDFBDDBLFFLRBBR*FR**RF*



abunickabhi said:


> I tried to do a bit yesterday in excel, using the REGEXEXTRACT formula, I would like to figure that problem on my own I guess.


I wrote a commutator and conjugate expander in Excel in 2013. (Which also finds inverses, by definition.) Would you like that integrated into your sheet? I never did (nor do I think *anyone* has done the reverse . . . expressing an algorithm as a commutator), but if you're interested for me to try to write a function that does that, let me know. (The function probably will come up with more than one representation for longer sequences which are not clearly commutators at first without cyclic shifts and extra/redundant turns introduced, but I can't help that. I will just have to tell it which of the choices to display to the user/put in the cell.)



abunickabhi said:


> On the other hand, typing the Yo notation is super fast for me, and it is revision for me as well, so I do not mind if they are not automatically generated.


Okay. What I can do is code it in, but add some more buttons in the *Settings* tab for you to turn these things off or on as you please. (What I showed with the *Settings* is just the start.)



abunickabhi said:


> I prefer the STM metric for sure. The algorithm length is 10.58 STM for the current algset. I am with the STM metric of expression.


Okay. I probably still need to use the algorithm parser to count the moves + an algorithm simplification program (which I have written in another language -- Mathematica. So if time permits, I can translate that into VBA and use it to guarantee that more move counts are accurate.)

--------------------------
Lastly, I know we talked about this before, but you want to have three additional columns for mirrors and inverses? (And for VBA code to find them if you type in the algorithm into any one of the four columns?) If so, to make it simple for me, you want me to just "learn from" Lucas Garrons ACN regarding mirroring about M and S (and of course, along with inverses)?


----------



## abunickabhi (Feb 19, 2021)

Christopher Mowla said:


> But I noticed something when looking at your *Cube Target* column. Regarding how you write UL somettimes and then LU. I pulled out my "Handbook of Cubik Math" by Singmaster himself, and he mentioned that you call them by how they are positioned relative to the cube slot that they are in. Is that what you're doing? Or are you assuming that UL is oriented (because U is first, not because of how it is position in the slot that it's in) and LU is not? Because if so (I really don't care either way, but I want to code this to your preference!), I am confused about the two bold abbreviations I put under the unoriented column. (You assigned those two abbreviations in some rows to edges that were both unoriented.)


In blindsolving, the target stickers imply a different case, so the alg to shoot to LU will be different for the alg used to shoot to UL, so there are 22 possible targets that the edge piece can be shot to, (12x2 -2(excluding the buffers)). So there is no concept of orientated and unorientated in modern day blindsolving, it is all about target stickers, and UL and LU are different targets and hence different cases.




Christopher Mowla said:


> I wrote a commutator and conjugate expander in Excel in 2013. (Which also finds inverses, by definition.) Would you like that integrated into your sheet? I never did (nor do I think *anyone* has done the reverse . . . expressing an algorithm as a commutator), but if you're interested for me to try to write a function that does that, let me know. (The function probably will come up with more than one representation for longer sequences which are not clearly commutators at first without cyclic shifts and extra/redundant turns introduced, but I can't help that. I will just have to tell it which of the choices to display to the user/put in the cell.)


Interesting. All the algorithms in the sheet do not have square brackets and are not in commutator form, so I think it will not be used for this sheet, as there are no algs expressed within square brackets.

Okay. What I can do is code it in, but add some more buttons in the *Settings* tab for you to turn these things off or on as you please. (What I showed with the *Settings* is just the start.)


Christopher Mowla said:


> Okay. I probably still need to use the algorithm parser to count the moves + an algorithm simplification program (which I have written in another language -- Mathematica. So if time permits, I can translate that into VBA and use it to guarantee that more move counts are accurate.)


Okay cool.



Christopher Mowla said:


> Lastly, I know we talked about this before, but you want to have three additional columns for mirrors and inverses? (And for VBA code to find them if you type in the algorithm into any one of the four columns?) If so, to make it simple for me, you want me to just "learn from" Lucas Garrons ACN regarding mirroring about M and S (and of course, along with inverses)?


I would love if the mirrors and inverses are also added up as extra columns. The mirror along the M slice is only relevant, as the mirrors across S slices are not fingertrickable.


----------



## Christopher Mowla (Feb 20, 2021)

Okay, I think this 25 sec video shows my progress. I think it is now how fast I hoped it would be! The same 10 images/algorithms. (And this time I have the program read the algorithms that are in the cell -- as it will be "in practice".)

I actually have a faster version of it (image #2 is slightly over a second and the others are about 0.90 of a second), but it's unstable. Excel will sometimes give an error that the image couldn't be copied. But this code hasn't tripped up yet.

*EDIT*:
I noticed that there is a bug. (The sticker colors aren't correct with some of the images.) I will fix it tomorrow.


----------



## Christopher Mowla (Feb 20, 2021)

Hopefully this is the last post about the cube images, but in short:

It runs *a little faster* than the last video presentation,
The images are now probably at maximum resolution,
The sticker (algorithm parser, really, the stickers and coloring the stickers was just fine) bug is *fixed*.
For convenience, I have created an (unlisted) *YouTube playlist* of all of the videos I uploaded about this project so far (and I will of course continue to add any future videos to it as well). But *this is the latest video* (1 minute 50 seconds) of me showing it create images for the same 10 algorithms, along with a few last layer cases and a *long* algorithm (with every type of move and with some moves not perfectly spaced out) to show it off.

And for those who commented on my previous videos, I am going to reply to your comments after I post this!

Also, if there is interest, I can explain (in more detail) of how I did this. (But if so, please just comment in the videos to keep this thread on topic.) If there is interest, I can upload a video explaining precisely how I did this. (Explain all software modules, as well as show all of the Excel supporter sheets, explain how I made the pixilized 3x3x3 (step-by-step), etc.)

*EDIT*:
And it appears that its speed depends on how large you have your Excel window. (Annoying, but it is what it is.) So it ran a little faster than what I show in the above video when I just made the window enclose those two columns.


----------



## abunickabhi (Feb 21, 2021)

Christopher Mowla said:


> Hopefully this is the last post about the cube images, but in short:
> 
> It runs *a little faster* than the last video presentation,
> The images are now probably at maximum resolution,
> ...



Hello Chris, thanks for your time and energy. Good that you have made a Youtube playlist of all the videos and the progression. 5AlgSolve, CubeLang, BlindfoldChess, AbhiGo are all me, who were there in the comments section.

Yes, I would love to see how the sheet exactly works with all the software modules, and background about VBA and its potential. As you said, "VBA has a bad reputation in the software developer community, but I think it's pretty good if you accumulate a library of functions which do ONE THING each (and "forget everything you learned from recorded macros from the developer tab!)". I hope VBA can be used for more cubing projects in the future.


----------



## Christopher Mowla (Feb 21, 2021)

abunickabhi said:


> Hello Chris, thanks for your time and energy. Good that you have made a Youtube playlist of all the videos and the progression. 5AlgSolve, CubeLang, BlindfoldChess, AbhiGo are all me, who were there in the comments section.


You're very welcome. *And it's now down to 0.85 seconds average per picture (*the long alg took 1.39 seconds, but the others were fixed around 0.85*), completely stable (*it's no longer dependent on the window size*), and has the high picture resolution. *(I have three different approaches for the copy&paste portion of the image generation now!)



abunickabhi said:


> Yes, I would love to see how the sheet exactly works with all the software modules, and background about VBA and its potential. As you said, "VBA has a bad reputation in the software developer community, but I think it's pretty good if you accumulate a library of functions which do ONE THING each (and "forget everything you learned from recorded macros from the developer tab!)". I hope VBA can be used for more cubing projects in the future.


VBA isn't for everyone. But if you come from a background like me (starting with the TI-84 plus graphing calculator with programming), most of the cons of VBA are like that of TI-BASIC. Hardly any documentation, no API, etc. But there is a lot of help online.


----------



## Christopher Mowla (Feb 21, 2021)

Okay. This is on a completely different note, as I investigated what I proposed as an alternate solution to generating the images in Excel. I am speaking of what I wrote here. (Although I did it in Microsoft Excel).


Christopher Mowla said:


> Perhaps if the images are put into a folder which is linked to a FREE spreadsheet software (like Open Office) such that the images are loaded into view as the user scrolls down the spreadsheet, this could be another solution.


*Here is a < 4 minute video* showcasing *this* idea. In it, I explain the disadvantages and the scope of how we can use it. So it's your call. What I said before about using a search engine in the sheet can still apply here. It just will pull up images from a file (from a file path of your choice) instead of generating them. But if you are set on pulling up one image at a time, the previous idea would of course work as well.

But what I forgot to mention is that as you arrow down (or up), the previous image is *deleted*. So the spreadsheet will only have that one image (or 7-10 images) in it at all times. And of course another disavatange is that you have to generate the images somehow too. If @Habsen's software can generate the type of images you want, we can combine both of our software's capabilities to give you what you *really* want. (You can use my software to create images, but it will be about 8 times slower than @Habsen's (since he estimated that it takes a few hours to generate 100k images . . . where I take "few" to be 3 hours . . . hence an image every 0.1 seconds instead of mine which is one image every 0.85 seconds.)

Lastly, I don't know how fast scrolling up and down a sheet with this new idea will be (speaking in terms of displaying, say, 7 rows = 7 pictures to be inserted (and 7 images to be deleted) upon each keypress). I _assume_ it will be fast enough, even though it should be slower than running down a spreadsheet without code parsing upon every row change via a keyboard keypress. (But it will certainly be faster than running down a page with 10 images in it instead of 100k images in it!)

(In short, you can do A LOT with VBA. And this was just a few dozen lines of code total to do!)

*EDIT:*
Regarding what I said in the video that it would be "hard" to keep the images from the folder to correspond to the row that the algorithm is in, there are ways to do that programmatically -- keeping a table of two columns, where one column contains the images' names (the images in the folder/the source images) and the other column being a primary key of some kind -- perhaps the *Cube Target* column which is in the spreadsheet.

But even with that, there's always a risk. But here's an idea of how to make it work (with little to no risk). (This is sort of how telephone numbers, vehicle license plates, etc. are indexed.) Think of the full primary color palette. There are 0 to 255 for Red, Blue, and Green.

I have VBA code which can pixelize an image into an Excel spreadsheet. (Not my own.) It's *very slow* though. (Again, I didn't use it to pixelize the cube image that I used. I used the online software that I linked to, as it was instant.)
However, the cube images can be generated so that just the top-left pixel is a specific RGB color shade.
So I run the software to pixelize a cube image, but stop it as soon as it draws the first pixel (that is, gets the top-left pixel from the image from the source file). Then we have a _hidden_ column (or maybe three columns) in the spreadsheet which holds the RGB value. So each row has a different (unique) RGB value associated with it that corresponds to its image.
This way you can literally re-order the images, and *or remove* cases, and *NEVER* have to worry about renumbering the cases as images come in. (This is assuming that you keep the image assoicated with a case.) Reason: There are 256^3 = 16,777,216 possible RGB shades. So you can assign a unique shade to each image and can literally afford to redo the entire set of 100k algs 167 times if need be (where I don't think you would have to redo even the full set once . . . it doesn't make sense that you would) and still have a primary key number for "each image to case connection".
The two-column table index of the primary key can be run to "re-calibrate" the images with the data once in a while, but it certainly doesn't need to be done while viewing the images with the interface I proposed above. (And this is something that only you have to do, not your audience.)
I don't know exactly how *stable* the image-to-pixel VBA software code I have is (or how long it will take to get the top-left/first pixel of an image), but if it's reliable, then this could be an approach to doing "the impossible".


----------



## abunickabhi (Mar 5, 2021)

Christopher Mowla said:


> forgot to mention is that as you arrow down (or up), the previous image is *deleted*. So the spreadsheet will only have that one image (or 7-10 images) in it at all times. And of course another disadvatange is that you have to generate the i


Sorry for being late in replying. I missed the post notification. 

With your 4 minute video, only a few images will be called at once to the sheet, and then will be deleted when they disappear from the cells, right?

Also Habsen software runs on Latex code, where your software serves spreadsheets and Excel, so I am not sure how both the solutions can be combined. I will have to think about it.

I do not scroll through big algsheets, I try to use an advanced search, which finds the required case or algorithm in a specific range, and is quite fast to navigate. For example, to find case xyz in 100k rows, its takes me about a minute using a scroll button which is slow, on the other hand, what I usually do is that I have a control or match case function, that searches the alg within a second, and I can navigate the sheet easily.

Yes the cube target value from the column can be programmatically linked to the images in the folder.

I am not sure about the RGB indexing and how it works. I will have to read a bit more about it.
Keep us posted if there are any new tries in image-to-pixel VBA software code that you are currently fine-tuning.

Again, sorry for the late reply. I thought you were off on a short break, as you were focusing more on other programming projects.


----------



## Christopher Mowla (Mar 5, 2021)

abunickabhi said:


> Sorry for being late in replying. I missed the post notification.
> 
> With your 4 minute video, only a few images will be called at once to the sheet, and then will be deleted when they disappear from the cells, right?


Yes. It can be 1 if you want. (That's easiest for me to implement.) But I would say we could show 5-10 at a time if you prefer. (But any more than what the user can see on their screen at a close zoom would defeat the purpose of what we are trying to do. It would slow down the sheet. Again, one at a time would be lightning fast for sure, as you saw it in the 4 minute video.)



abunickabhi said:


> Also Habsen software runs on Latex code, where your software serves spreadsheets and Excel, so I am not sure how both the solutions can be combined. I will have to think about it.


I meant that the output of his software (the pictures) can be pulled into your sheet by my spreadsheet. (There is no actual combining of the software.) It's just that his software will have to name the images.

And about the image tagging proposal. If I generate the images with Excel, I can very easily tag them. (And, as I mentioned to you on Discord, you can literally run multiple instances of Excel at a time, and therefore reduce the required time my software takes by at least by a factor of 5. So it's a more comparable time with Habsen's software's speed.)



abunickabhi said:


> I do not scroll through big algsheets, I try to use an advanced search, which finds the required case or algorithm in a specific range, and is quite fast to navigate. For example, to find case xyz in 100k rows, its takes me about a minute using a scroll button which is slow, on the other hand, what I usually do is that I have a control or match case function, that searches the alg within a second, and I can navigate the sheet easily.


The way it sounds, you look for one case at a time. So, really, we can generate the image "on demand" with my first idea if you want. (Or, like I just said, we can pull in one image (and delete the image prior to that one) at a time.)



abunickabhi said:


> Yes the cube target value from the column can be programmatically linked to the images in the folder.


Again, this is a great idea because every cube target is different (and therefore all images will not be mistaken for another case). But since you want to do the cube targets *by hand* (and not with my software), if you make an error, the wrong image will pop up for its "corresponding algorithm". And if you change your mind about how you want to represent the cube target, then that throws everything off too. *(Both of these "warnings" are for when you want to pull in -- rather than "generate on demand" -- the images for a case into the sheet.)*



abunickabhi said:


> I am not sure about the RGB indexing and how it works. I will have to read a bit more about it.


I didn't read up about it anywhere. This was my own solution just in case something that you do from your end messes up the initial "link"/association that we create to get the spreadsheet to recognize which image to pull in. (But this doesn't apply to when images are "generated on demand". That's a fool proof way of guaranteeing that the image you see in the row represents what the algorithm that you see in the row generates on the cube.)



abunickabhi said:


> Keep us posted if there are any new tries in image-to-pixel VBA software code that you are currently fine-tuning.


There is nothing more I need to say. (Please reread what I wrote you on Discord. Maybe it will make more sense after reading these last two posts of mine in this thread.) Then decide on what you want to do.



abunickabhi said:


> Again, sorry for the late reply. I thought you were off on a short break, as you were focusing more on other programming projects.


I am taking a break. (But you also said that you were not in a rush . . . and now I am glad that I waited, because you weren't "up-to-date" with your options anyway.)


----------



## abunickabhi (Mar 17, 2021)

To summarise this thread, a lot of things have been thought out, and new ideas of having cube images in excel have been thought (at least new for me!). Also representing and referencing the algsheet via the cube targets, algorithms, specific translations of the algorithms were seen.

The idea of having move counter (in quarter turn or slice turn) from the Singmaster alg value in the excel was thought out. Till now, the move count was counted from the Yo notation. The implementation of inverses and mirrors of the alg in the algsheet itself was thought of, in the same column or in different column.

Decomposing the UF5 algs into shorter forms is an idea being explored. Integrating latex and excel sheet, to get quick PDFs was also thought of. The timing of generating of cube images was also seen and tried to be optimized by Chris. The algs were mainly for BLDers but many other big algsets like LSLL and 1LLL can also follow the same style of excel sheet as the one discussed in this thread.


----------



## Christopher Mowla (Mar 17, 2021)

abunickabhi said:


> Decomposing the UF5 algs into shorter forms is an idea being explored.


For those who are curious of why I am doing this, in @abunickabhi 's Yo Notation PDF, look at point *2.* on page 6.

As of right now, it can decompose a cyclically-shifted (single) commutator which was then conjugated (with additional moves) afterwards. (And all simpler cases which an algorithm can be in in this circumstance.)

*Example:
Input*: F B L R2 M' D U2 R U2 D' R' F U2 R' U2 F' R L' R2 M F' B'
*Output*: [F B L R2 M' D: [U2 R U2, D' R' F]]

The commutator was cyclically shifted _once_ in this case, but it can be cyclically shifted any number of times (and there can be any number of outer setup moves *and the order of the setup moves about the same axis does not matter* -- the program will recognize them).

So the point of this is to express algorithms which are already expanded into their decomposed form to *then* make the *shortcut* expression. (There will be a column next to the column with the algorithm. This column will contain such *shortcut* expressions for the users who prefer to memorize the shortcut versions of the algorithms.

(I know the example above shows a commutator in which both its X and its Y are more than one move, which kind of is overkill for @abunickabhi 's *shortcut* from my understanding (because he assumes either X or Y will be one move), but it was no additional effort to program it for the general case when X and Y can both be more than one move.)


----------



## abunickabhi (Oct 10, 2021)

Terribly sorry guys, no progress from my front on developing more software for maintaining big cubing algsheets.
I hope to get back to this project sometime soon.

Currently all my time goes into doing astrophysics research at a top institute.


----------



## abunickabhi (Mar 16, 2022)

https://htmlpreview.github.io/?https://github.com/nbwzx/Commutator/blob/main/index.html

A super cool tool made by Zixing to decompose algs.


----------

