What is the most commonly used software?

Programs which generate, solve, and analyze Sudoku puzzles

Re: What is the most commonly used software?

Postby RSW » Fri Feb 24, 2023 6:47 am

denis_berthier wrote:
RSW wrote:I wrote a Sudoku Solver app using a Rapid App Development system (RAD) several years ago. It runs natively on Mac, Linux and Windows. I update it to add new techniques as time permits, but it's certainly nowhere near as complete as YZF_Sudoku.

It's always interesting to have reports of real work. I have a few technical questions.
1) When you say "RAD system", are you talking of applying a RAD methodology or of using RAD tools (that automatically produce target code).
2) What's the target language (i.e., depending on the answer to question 1, the language of the code written manually or of the code produced by the RAD tools) ?
3) Does your software include a GUI and if yes, how do you or the RAD manage the different graphic libraries on Mac, Linux and Windows?
4) Does it still work with the recent versions of MacOS that have much higher security requirements?

Unrelated, but interesting in the present context:
5) Considering your experience in portable software, what do you think of making a system written in Visual Basic run on Unix/MacOS?
.


To be honest, I don't know the official definition of RAD. I use Xojo for my software development:
https://www.xojo.com
You can download a full working version from their site. You can create full featured applications with it. The only limitation is that if you want to build standalone applications, then you have to buy one of the paid versions. But otherwise, you can build, test, run and debug your application with the free version.

It has a code editor that uses syntax similar to Visual Basic, but it's considerably more advanced. It has a full framework for building user interfaces, and a nice window designer/editor.

Xojo automatically handles the different graphics libraries for Mac, Windows and Linux. You design the user interface once, in Xojo's graphical window editor using a large palette of window controls, and it automatically compiles it using the appropriate libraries for the target platform.

It will work with recent versions of MacOS, but if you want to have the users able to install it on their systems without the MacOS security getting in the way, then the application has to notarized and code-signed, which means you have to get a developer license from Apple. However, you can still ship an application without code-signing or notarization, but after downloading, the user will have to go into system preferences to authorize it to run. After that, it runs just like any normal program. (I don't have an Apple developer license.)

Regarding Visual Basic, I'm not sure exactly what you mean by making a system in Visual Basic to run on Mac/Linux. I don't believe that Visual Basic runs on either platform and won't build an application that will run on either platform. It was always my understanding that Visual Basic is Windows only. However, as I mentioned above, the Xojo development system itself will run on Mac/Windows/Linux, and any of these installations will build applications for all three platforms. I have Xojo installed on my Mac, and it builds applications for each of the three platforms. There's a set of checkboxes for choosing which platforms you want to build for. It also builds for mobile devices (iOS, and they are expected to add Android later this year). Since Xojo's language syntax is so similar to Visual Basic, there should be no problem for someone familiar with VB moving to Xojo.

My sudoku solver has a graphical interface with a grid display, but I don't yet have it set up to edit individual cells directly on the grid. However, you can drag and drop a sudoku puzzle in virtually any text format into the solver. And there is a means to change cells by entering into a text field commands such as:
3r1c3 - which sets the cell to the given value
-23r4c56 - which removes the candidates from the given cell(s)

At the moment, the solver has implemented these techniques:
- Singles
- Locked sets
- Locked candidates
- Simple wings
- n-Fish (n=2..8)
- Finned n-fish
- Sashimi n-fish
- X-chains
- XY-chains
- UR's - many variations, but some which involve externals are not included
- Generalized AICs - any pattern that produces a strong link (eg., UR's, ALS's) can be part of the chain
- Junior exocets
- Nishio style unidirectional chains
- Recursive trial and error option that can execute when all of the above techniques fail to find a solution

As can be seen, there are many techniques that are not yet implemented.

It also has a few other features based on an included brute force solver:
- Check if puzzle is valid, and find all of the solutions for puzzles that have more than one.
- Check if puzzle is minimal, and if not, give all of the possible minimal versions of the puzzle.
- Generate a list of anti-backdoors, double anti-backdoors, triple anti-backdoors, etc.

I could post a screen shot, but it has a huge number of extraneous buttons and checkboxes that I've been using for testing various sections of code. So, it looks like a mess.
RSW
 
Posts: 620
Joined: 01 December 2018
Location: Western Canada

Re: What is the most commonly used software?

Postby ghfick » Fri Feb 24, 2023 7:33 am

RSW wrote:Check if puzzle is minimal, and if not, give all of the possible minimal versions of the puzzle.

Your project looks really interesting. Exciting work! Impressive! I understand that non-minimal puzzles can have very long lists of minimal versions. Perhaps you create such list as a file for study? I recall that YZF had considered adding such a feature to his software but, since the list could be huge, he decided against its inclusion. In any case, such an addition to your project looks fascinating.

RSW wrote:you can still ship an application without code-signing or notarization, but after downloading, the user will have to go into system preferences to authorize it to run. After that, it runs just like any normal program.

I have been attempting understand the recent changes to security with the newer Mac OS's. I have been assisting YZF with his software and we have been dealing with compatibility matters. Your remarks on Mac are very interesting and helpful.
ghfick
 
Posts: 232
Joined: 06 April 2016
Location: Calgary, Alberta, Canada youtube.com/@gordonfick

Re: What is the most commonly used software?

Postby denis_berthier » Fri Feb 24, 2023 8:15 am

.
Hi, RSW, thanks for your detailed answer. Having no personal experience with this kind of tools, that's exactly what I was interested in.

RSW wrote:To be honest, I don't know the official definition of RAD. I use Xojo for my software development:https://www.xojo.com

Implicitly, this answers my 1st question: in the usual terminology, Xojo is a RAD tool (it automatically produces code).
I thought it might produce code in an intermediate language such a C or C++ but it seems that's not the case. It seems to be directly compiled for the target platform.

RSW wrote:You can download a full working version from their site. You can create full featured applications with it. The only limitation is that if you want to build standalone applications, then you have to buy one of the paid versions. But otherwise, you can build, test, run and debug your application with the free version.
It has a code editor that uses syntax similar to Visual Basic, but it's considerably more advanced. It has a full framework for building user interfaces, and a nice window designer/editor.
Xojo automatically handles the different graphics libraries for Mac, Windows and Linux. You design the user interface once, in Xojo's graphical window editor using a large palette of window controls, and it automatically compiles it using the appropriate libraries for the target platform.

That sounds great for developers.

RSW wrote:It will work with recent versions of MacOS, but if you want to have the users able to install it on their systems without the MacOS security getting in the way, then the application has to notarized and code-signed, which means you have to get a developer license from Apple. However, you can still ship an application without code-signing or notarization, but after downloading, the user will have to go into system preferences to authorize it to run. After that, it runs just like any normal program. (I don't have an Apple developer license.)

For the really recent versions of MacOS (i.e. 13.x), it may be a tad more difficult than this. Is your software available for testing?
denis_berthier
2010 Supporter
 
Posts: 3975
Joined: 19 June 2007
Location: Paris

Re: What is the most commonly used software?

Postby RSW » Sat Feb 25, 2023 7:53 am

I agree that with each new MacOS system release, it gets more and more difficult to install non code-signed non notarized software. However, I don't believe that Apple will ever make it impossible to do this, because it would give them a monopoly on software distribution, which would violate anti-competition laws in most countries. Even with notarized and code-signed software, there are some commercial software companies that are experiencing problems with Mac installations.

Xojo is certainly the most capable cross platform development system that I've ever used. If I hadn't discovered it several years ago, I doubt that I would ever attempt to build software having a graphical user interface. Of course, it has its limitations. For example, because of the user interface overhead, programs run slower than if they were programmed in C without a GUI.

denis_berthier wrote:Is your software available for testing?


I don't mind providing a copy of the current built application to anyone interested in testing it, and I don't mind sharing certain parts of the source code, but I won't share the full source code at this time. I may decide to open source the entire thing at some point in the future, but not at this time.

ghfick wrote:I understand that non-minimal puzzles can have very long lists of minimal versions. Perhaps you create such list as a file for study?

I hope I didn't overstate the capabilities of my software. The computation time increases probably exponentially with the total number of clues that can be removed before the puzzle is minimal. I haven't done much with this part of the software for a while, but as I recall, as long as no more than about 8 clues need to be removed to make the puzzle minimal, then it's not unacceptably slow. Although, what is or is not acceptable is open to interpretation. Here is an example non minimal puzzle from my local newspaper:

Input puzzle:
300810700004030020000052060040000000706040803000000090070320000090070400002098001

Program Output:

1 Solution found. 0.2 ms
325816749864937125917452368249183657756249813183765294571324986698571432432698571

Puzzle has 27 clues.
Puzzle is not minimal. Any one of the following clues may be removed:
-1r1c5 300800700004030020000052060040000000706040803000000090070320000090070400002098001
-3r2c5 300810700004000020000052060040000000706040803000000090070320000090070400002098001
-5r3c5 300810700004030020000002060040000000706040803000000090070320000090070400002098001
-4r5c5 300810700004030020000052060040000000706000803000000090070320000090070400002098001
-2r7c5 300810700004030020000052060040000000706040803000000090070300000090070400002098001
-2r9c3 300810700004030020000052060040000000706040803000000090070320000090070400000098001
-9r9c5 300810700004030020000052060040000000706040803000000090070320000090070400002008001

Testing combinations of up to 7 eliminations:

Combinations of 2 fewer clues:
-1r1c5 -3r2c5 300800700004000020000052060040000000706040803000000090070320000090070400002098001
-1r1c5 -2r7c5 300800700004030020000052060040000000706040803000000090070300000090070400002098001
-1r1c5 -2r9c3 300800700004030020000052060040000000706040803000000090070320000090070400000098001
-1r1c5 -9r9c5 300800700004030020000052060040000000706040803000000090070320000090070400002008001
-3r2c5 -4r5c5 300810700004000020000052060040000000706000803000000090070320000090070400002098001
-3r2c5 -2r7c5 300810700004000020000052060040000000706040803000000090070300000090070400002098001
-3r2c5 -2r9c3 300810700004000020000052060040000000706040803000000090070320000090070400000098001
-5r3c5 -2r7c5 300810700004030020000002060040000000706040803000000090070300000090070400002098001
-5r3c5 -2r9c3 300810700004030020000002060040000000706040803000000090070320000090070400000098001
-4r5c5 -2r9c3 300810700004030020000052060040000000706000803000000090070320000090070400000098001
-2r7c5 -9r9c5 300810700004030020000052060040000000706040803000000090070300000090070400002008001
-2r9c3 -9r9c5 300810700004030020000052060040000000706040803000000090070320000090070400000008001

Combinations of 3 fewer clues:
-1r1c5 -3r2c5 -2r7c5 300800700004000020000052060040000000706040803000000090070300000090070400002098001
-1r1c5 -3r2c5 -2r9c3 300800700004000020000052060040000000706040803000000090070320000090070400000098001
-1r1c5 -2r7c5 -9r9c5 300800700004030020000052060040000000706040803000000090070300000090070400002008001
-3r2c5 -4r5c5 -2r9c3 300810700004000020000052060040000000706000803000000090070320000090070400000098001

Combinations of 4 fewer clues:
-- None --

Minimal puzzle has 3 fewer clues.


The software generates the above output pretty much instantaneously, because no more than 3 clues need to be removed to find the minimal puzzles. For puzzles that need to have 7-8 clues removed it could take a minute or so and it gets much slower beyond that. I was trying to find a minimal+8 puzzle to try as an example, but I wasn't able to locate one quickly. If anyone can supply an example, I'll run it.

I don't want to hijack this thread any further. If there are more questions about this, maybe I should start another thread.
RSW
 
Posts: 620
Joined: 01 December 2018
Location: Western Canada

Previous

Return to Software