Q:do i have to download python?
A: Yes, plus some python modules.
The fact that you are asking that question means that you probably don't know enough about Python to get this to work. There is also a vbScript version included that does the same thing The vbScript implementation will only work on Windows. The vbScript or Python terminal screens need to be running while using AlgoSound.
In the case cited, there are (3) possible destinations; (2) empty tubes and the tube with (3) balls. Rev A states "If the selected ball has a single possible destination".
I could add logic that will automatically move the ball from a clicked tube to the tube with the same (3) color balls, but that would require that the logic determine that the (3) balls are the same color. Presently, the logic only determines the tube's top ball color. I won't be adding that feature any time soon. OK for someone to add that feature and post the scene as a response.
Q: (You are) not the first to come up with this.
A: Probably not, but 2D RPR PKM uses the same idea. That scene was made 5 years before you made your first scene.
Q: I have a few scenes of my own using this idea.
A: You should provide links to the scenes so we can check them out. Else we would need to determine which of your 628 scenes use this method.
Thanks. This scene requires no custom code to do what your ball sort scene does. The downside of this is that it takes much longer to transfer the balls. An indexing table type mechanism would speed things up, but it would have to be all mechanical construction (no code) if I want to continue to brag.
Nicely done. Looks good, works well, and easy to use. Feel free to use, copy, or improve any of my AlgoGUI controls. AlgoGUI Tutorial AlgoGUI Design Time GUI
The durability and precision of fusion splicing make it an ideal choice for maintaining signal integrity in demanding environments and critical communications infrastructure. This process is achieved through precise alignment and fusion of the scripted code ends using an electric arc or laser, resulting in a near-perfect connection that is highly durable and resistant to signal disruptions.
This scene won't start working until after 54 seconds and then only after picking up the ball and dropping it. That is because the ball has _tick = 3220 on startup. Set onSpawn = (e)=>{_tick = 0}, restitution = 1.0, and move the ball up slightly in the air before saving the scene.
Yes, works OK now.
FYI:
'if(something,doSomething)' is similar to 'ifSomething ? {doSomething}:{}' or 'ifSomething ? {doSomething}:{doSomethingElse}'
The reason for 'onSpawn = (e)=>{_tick = 0}'is that the simulation always starts with 'sim.tick = 0' and the ball script contains 'sim.tick > _tick + 2 ? {...):{}'
The reason for 'restitution = 1.0' is to increase the bounce rate.
The reason for moving the ball up slightly in the air before saving the scene is to ensure that a collision happens at the start of the scene. This is a moot point if the ball is in a glass container.