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.