Comments (3)
You read my mind on this one! I've been pondering using zig fmt
since about exercise 30...
I'm really curious what these will look like after being fmted. Hopefully they change very little. Obviously, the top priority is making sure that it's still clear what needs to be done in each exercise, but,the more I think about it, yeah, they should definitely be in a canonical form because that would be best for everybody involved. This needs to be done.
If you're up for giving it a go, you'll probably want to make use of my new system for creating and testing these things.
Old and busted
What I used to do was:
- Write the exercise and make it work
- Break it
- Fix it manually any time I needed to make a change, test it, re-break it 😭
The new hotness
What I do now is:
- Write the working exercise
answers/66_foo.zig
- Copy to
exercises/66_foo.zig
and break it - Run
patches/gollum.sh 66
, which createspatches/patches/66_foo.patch
(output ofdiff
) - Run
patches/eowyn.sh
, which applies patches to all exercises and puts them inpatches/healed
and runszig build
to test all of the exercises inpatches/healed
|-- answers <-- NOT in repo
|-- exercises
|-- patches
| |-- healed <-- NOT in repo
| `-- patches
(See also the README in the patches dir.)
I've only just begun using this system, so only patches 1,2, and 45 (I think) have actual solutions. The rest are blank files.
I think the easiest way forward would be to (and keep in mind that this is off the top of my head, which doesn't always produce the best results):
- run
patches/eowyn.sh
(then don't run her again until you're all done!) - fix everything in
patches/healed
and do thezig fmt
on all of them too - test as you go with
zig build -Dhealed
- once that's done,
cp -r patches/healed answers
- and
cp answers/* exercises/
- break all the exercises again so they match the originals (within reason)
- run
patches/gollum.sh
in a loop (and remember, hissing is good 🤣 ) (untested:for ex in exercises/*.zig; do ex=($basename $ex); patches/gollum.sh $ex; done
) - finally, run
patches/eowyn.sh
again to see if it all worked! 😅
Am I missing anything?
Let me know if you plan on starting this. (That would be amazing.)
Otherwise, I was going to slowly go through and re-fix/break everything eventually anyway so the whole thing is testable with eowyn. I could do a zig fmt
at that time. But it might be a little while before I get to that because I'm chomping at the bit to create some more exercises. 🚀
Thanks!
from ziglings.
Thanks for the notes! I can get to work on this.
from ziglings.
That's fantastic. I'm really excited about that. Thanks!
from ziglings.
Related Issues (20)
- 078_sentinels 3 uses wrong signature HOT 1
- Ziglings for zig version 0.10 HOT 8
- excercise 60 line 32
- Use `role` instead of `class` for struct related exercises HOT 1
- error on build with latest zig 0.11.0-dev.4229 HOT 1
- 062_loop_expressions comptime-only type error HOT 1
- expected 2 arguments and 1 found HOT 6
- Explain abbreviation `lhs`
- 101: More details for SoA vs AoS HOT 4
- Exercise 18 fails in new version (0.12.0) HOT 2
- How do you prevent ziglings from running previously solved exercises? HOT 4
- Zigling 045 HOT 1
- [Exercise 48] Can anyone explain what is happening here? HOT 1
- Announcement! We've moved to Codeberg HOT 16
- Excercise to perform input via console HOT 1
- Ziglings broken by latest Master HOT 2
- Understanding Exercise 40 note
- Failing compilation for 0.12.0-dev.1632+acf9de376 HOT 2
- Set up GitHub mirror HOT 6
- Cannot build with "zig build" HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ziglings.