Crystal blog post 2023/6/30
A new month is coming up with a new Crystal release.
New exercises
- Saddle Points, create saddle point logic.
I want to thank @ryanplusplus for creating (for the track) all of the following exercises:
- Rational Numbers, add methods for rational numbers.
- Queen Attack, check if a queen can go to a specific spot on a chessboard.
- Connect, calculate if one player’s stones connect from one side to the other.
- Alphametics, solves Alphametics puzzle which is converting letters to a numeric value.
Changelog
All tooling repos will start to have a changelog.md to log changes for tooling. This is currently only live on the test runner but the representer will get it later. Also to this will the changes be listed under the release tab on github.
Miscellaneous
- Various fixes to the README.md, which mostly includes spell fixes.
- Removed references to the exercism crystal repo in the test runner.
Next operation
With the next Crystal release only 10 days away so are the next operation moving closer and closer. A lot of work has been put into new content and more time will be spent in July. The plan is to have this operation go along Crystal 1.9.1 or 1.9.2 which is expected to be released late July.
Crystal 1.9
All toolings will be updated to Crystal 1.9, this release includes: improved Windows support, various fixes, and dark mode for the Api docs.
Representer
The representer was released during the last operation, and in this one, it will receive its first major revision. This includes a new debug mode in which to get the representer has to be given a compile flag, which means the representer run in the online environment won’t need the extra processing. The debug mode will give some extra info about the process and aims to make it faster to investigate bugs.
Some other notable changes:
- The source code was optimized to make it shorter and easier to maintain (as of writing is the representer file 100 lines less)
- The representer will output the error message if an error occurred when using the CLI mode.
- A bunch of bugs fixes
Generator
The generator will receive its first updates since its first release back in January. There are 2 major revisions to this update:
- Generator independence, before has the generator been dependent on that an exercise has tests on problem specs. This change will remove that requirement by allowing reading local json files, this change is done to allow exercises without conical data to still be templated.
- Generator plugins, some exercises require more complex logic to be templated, thereby a new system will allow for methods to be created to do the more complex logic. This will allow our last (possible) exercises to be templated.
Updates to old exercises
Some of the older exercises have it felt like their difficulty rating has been incorrect, and some exercise could benefit to get some extra thoughts.
This will also include some rearranging to make the list of exercises fully ordered by difficulty.
Note: These changes are subject to change!
Difficulty rating changes:
- largest series product: 1 → 3
- pascals triangle: 1 → 3
- sieve: 1 → 3
- space-age: 1 → 2
- forth: 3 → 4
- meetup: 3 → 4
- darts: 2 → 1
- Grains: 4 → 2
- Secret handshake: 5 → 2
- Perfect numbers: 4 → 2
Reworking:
- binary-search-tree:
- Updating test to match problem specs
- Templated, using an upgraded generator that can template the exercise
- rating: 1 → 6
- Proverb:
- Make the exercise as the Ruby & Python track to teach
Decomposition
. - rating: 4 → 3
- Make the exercise as the Ruby & Python track to teach
- roman-numerals:
- Make an extension explaining that the method is supposed to be extended from
Int
. - rating: 1 → 2
- Make an extension explaining that the method is supposed to be extended from
- Strain
- Make an extension explaining that the methods are supposed to be extended from
Array
. - Template the exercise
- rating 2 → 4
- Make an extension explaining that the methods are supposed to be extended from
Depreciating:
- Binary
Syllabus
My hope is that an initial version of the Syllabus can go along this, I can’t make any commits at the moment, but that is my current goal.