Git Product home page Git Product logo

magictile's People

Contributors

chrisbroome avatar roice3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magictile's Issues

Condense log files with macros

Requested from Eduard on the 4d_cubing group. He wrote:

What about a MagicTile Version which doesn't put all moves in the log-file but only the calls of the macro where a macro is used? Or is there already a newer version which does this? In the HOF the log-file-lenght could also be used instead of number of moves.

Undo and half-turn metric

I'm using MagicTile_v2_09-29-16 . This problem is recurring in all three puzzles in the "start here" section : the rubik's cube, the torus rubik, the klein bottle and the hyperbolic rubik. I conjecture it still holds for the other puzzles.

When doing a move or a face, then undoing it by turning it in the other direction, the software counts two moves, but this sequence has no effect whatsoever on the puzzle. While this is coherent with a "no-cancellation" style of solving, there is a ctrl+z button that contradicts this philosophy... It would be interesting to make such a succession of move cancel itself instead of counting two.

A sub-issue would be to be able to use the "half-turn" metric : every sequence of turns of the same face (++-+-+++...) counts one turn if the state of the puzzle is different after and before the sequence, and zero if it is the same.

Suggestion: Search box above puzzle tree

This was a nice suggestion from Melinda. She writes:

Searching for simple string containment would be more than enough. Probably preparing with String.trim() of white space and String.toLower() for both strings. Just an idea.

Example of how to move across or traverse a 2D tessellation like HyperRogue?

I just asked How to "move" or "traverse" the hyperbolic tessellation in MagicTile? on StackOverflow, but not sure anyone is going to be able to handle that since it's so specific. Is there a way in MagicTile or any of the central libraries to "move" or "traverse" the 2D hyperbolic tessellation, like HyperRogue?

Screenshot 2023-01-19 at 5 22 13 AM

I'm curious how you would figure out how to construct the new tiles on the fly as you "traverse" the tessellation, I'm having a hard time imagining how to solve that, hoping you might have some deeper insight. If it's not possible in MagicTile, how would you think about solving it?

Also out of curiosity, what is meant by "stickers" in the code base? I can't figure it out.

Support a beginner starting mode

From Burkard

Maybe have a separate “start with these” or “for beginners" folder which just contains a handful of puzzles that you recommend people should look at first. At the moment I think what may put off quite a few people who stumble across the program is the sheer number of puzzles to explore. A bit more guidance is I think the way to go here. Also, if the aim is to actually suck people in who are not mathematicians, having the Klein quadric one as the default is probably not the ideal choice.

Android version please

Great software, would be really nice to have it on android, In the current version there is much use of key commands as well as mouse - with left & right click, how to map all this onto just the touch screen would have to be worked out on top of the coding necessary.

Idea: Cooperative solving of huge puzzles

I have a idea for the next big eSport (well, maybe not big eSport, but I would watch it). Imagine a puzzle with a huge number of faces (say 200 faces). Each team of 2 to 20 people gets an instance of this puzzle, and whoever solves it first wins! The two instances of the puzzle are also shown on a huge TVs!

You could also imagine a 10,000 face puzzle, and have the viewers of a youtube channel (such as Mathologer) solve it together.

How it would work is that someone can setup a server, and people connect to it (you can either filter the connections, like in the first example, or not in the second (moderators could disable connections in the second case though)). People can then rotate the puzzle (which only occurs on their own screen) and make moves (which occurs on all the screens).

You would also want to label the faces with pairs of Greek letters (or some other symbols), because many of the colors will be similar.

This could theoretically be done with elliptic, euclidean, or hyperbolic puzzles. Although I think hyperbolic would the funniest for the participants (since there is less distance to move the cubies), euclidean would be the best spectator sport. For elliptic, you would need something like this, but bigger. For hyperbolic, the audience would need to don their head set and hop into Hyperbolic VR. For Euclidean, you can just have a normal flat display.

Table view of puzzles

It'd be nice to have columns of genus, num colors, orientable, etc., so we aren't slaved to a single organization in a tree. Melinda suggested this to me and had this to say...

"I think a table would be a better view, especially with a "search" filter. (Actually, search is useful regardless of view type.) Then if you remember the order in which column sorts have been performed, you can use the previous column as the secondary sort, the one before that the tertiary sort, etc. That way people can choose their own organization and you won't need to impose a single organization. Even when they don't realize how that works (which will likely be the case most of the time), they'll often get the results they want anyway."

View freezing.

Version

I am using version 2. The file download name was MagicTile_v2_09-29-16

The problem

Using the program eventually leads the view box to freeze. It will freeze mid rotation and the view ceases to respond. The rest of the program works and even the internal puzzle representation seems to work. The twists and total number change when the solve button is clicked and I can still save the current puzzle to xml. Collapsing the side panel causes the view to turn black.

Recreating

This happened numerous times during my solve of the Klein bottle and Torus cubes. I did not test this with other puzzles.

Potential Solutions

I have not looked at the code.

Attachments

magictile_2
magictile_3
magictile_1

No puzzles

I was trying to run MagicTile on Ubuntu 16.04, and although it kind of worked, I realized it has no puzzles:

screenshot 2018-03-28 at 8 01 45 pm

The default puzzle works, but Tetrahedron does not load (and it says there are 0 puzzles in the bottom right).

Command line dump, in case its helpful:

$ xiwi -T wine MagicTile.exe 
...
Cannot open /sys/class/tty/tty0/active: No such file or directory
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:wincodecs:PngDecoder_Block_GetCount 0x166fbc0,0x33eec8: stub
fixme:wincodecs:PngDecoder_Block_GetCount 0x166fbc0,0x33eec8: stub
fixme:wincodecs:PngDecoder_Block_GetCount 0x166fbc0,0x33eec8: stub
MainForm initialized.
Missing method System.String::Format(IFormatProvider,string,object) in assembly C:\windows\mono\mono-2.0\lib\mono\4.5\mscorlib.dll, referenced in assembly Z:\home\theking\Downloads\MagicTile_3-27-18\MagicTile.exe
Menus built.
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
MainForm constructed.
fixme:win:EnumDisplayDevicesW ((null),0,0x33d180,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),1,0x33d180,0x00000000), stub!
Building Puzzle...
creating underlying tiling...
fixme:gdiplus:GdipGetLineSpacing ignoring style
fixme:gdiplus:GdipGetLineSpacing ignoring style
precalculating identification isometries...
adding in cells...
analyzing topology...
marking cells for state calcs...
slicing up template tile...
adding in stickers...
setting up texture coordinates...
preparing twisting...
preparing surface data...
loading and preparing irp data...
calculating fundamental domain boundary...
Number of colors:24
Number of tiles:5000
Number of cells:4877
Number of stickers per cell:15

Support for truncated, rectified, etc. tilings.

Unsure how difficult this would be to implement, but being able to generate these tilings with more than one face type would definitely add a lot more interesting and potentially difficult puzzles to the program, much like in MagicPuzzleUltimate. Support for any uniform tiling would be extra awesome, but I imagine that would be much more complicated to do.

xml puzzle format

I'd love to make different turning circles on pre-existing tilings, but you have documented the format

Idea: Implement a TNoodle like algorithm

TNoodle scrambles a rubix cube by randomly shuffling cubies and then checking for solvability. This ensures a uniform distribution over solvable puzzles. It might be interesting if MagicTile had a similar algorithm to scramble puzzles.

Support Jumbling Puzzles

Had a few folks request this. A jumbling Klein bottle puzzle seems totally possible, and I'd love to see it implemented. A few questions that pop to mind are:

  • How to control it? For example, an edge twist may no longer be just 180 degrees. What would be an intuitive way to let the user apply partial twists?
  • Collision detection. I suspect this will be quite difficult to implement generally and will represent a major change to the program. This looks like a non-issue on some puzzles, e.g. the {4,4} Harlequin.

Please give input on these questions if you have them, esp. the first.

In the past, I've implemented one-off puzzles (for example the Klein Quartic "Earthquake" puzzle) that I thought were worth going after, with less consideration for doing it generically. A jumbling Klein bottle that avoided the collision problem would be a good candidate.

Add a license

There seems to be no license for MagicTile, which means people need explicit private permission from the author to even use MagicTile without infringing on the copyright. Is this intended?

See http://choosealicense.com/no-license/ for what it means to host code on GitHub with no license, and the problems it causes.

Macros don't always transform over the tiling correctly

I noticed this doing my Klein Bottle solve, and Melinda reported it as well.

In some cases, this is unavoidable, but I think I've found some cases that should be doing a better job moving to a different location.

One worry is breaking existing log files, but I think that should be ok since the log files enter all the moves verbosely (rather than pointing to the macro), and altering the behavior for transformed macros won't affect the originally defined ones.

Multiplatform support?

Hi,

I just found this amazing project, and wanted to try it out. I have access to OS X and Debian Linux. Is there any way to compile and run the Magic Tile in any of these platforms?

Mono support

Hi,
I saw Mathologgers video and wanted to give this program a shot under Linux/Mono.
I first tried with the binary download from the website. I'm running on Debian testing with Mono 4.2 and OpenTK 1.1.4 installed. The program gives the following messages:

MainForm initialized.
Menus built.
Failed to load settings.
Could not find file "/home/johannes/.config/MagicTile v2/settings.xml".
ExceptionHandler caught: Object reference not set to an instance of an object
^C

The window never appears. I tried compiling from source, which kind of worked (with many warnings), but the resulting binary gives the same error. I'm not a C#/.NET programmer so I'm not sure how to proceed.
Cheers!

Allow the faces to be arbitrary images

Being able to put images on the faces would be interesting. This would not simply be a cosmetic change: it actually changes how solving works (both because it gives you more information, and because everything needs to be in the correct orientation (which is especially tricky if the surface is non-orient-able)).

You could have a default mode where it just uses some generic logo (such as a MagicTile logo), or let the user insert images from their computer (so for example you could use the Mathologer logo).

To make the feature fully general, it would also be interesting if images have certain symmetries. For example, maybe a given image has rotational symmetry, in which case it would be the same as a regular rubik's cube. Or partial rotational symmetry, in which case it would be between a normal rubik's cube and the random picture one. Or maybe you could give two faces the same picture (meaning that you could interchange their pieces and it would still be considered solved). Or you could give all the center stickers the same picture (like a Void Cube). It might be hard to make the feature this general though.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.