Giter Site home page Giter Site logo

Comments (3)

ratfactor avatar ratfactor commented on May 12, 2024 2

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:

  1. Write the exercise and make it work
  2. Break it
  3. Fix it manually any time I needed to make a change, test it, re-break it 😭

The new hotness

What I do now is:

  1. Write the working exercise answers/66_foo.zig
  2. Copy to exercises/66_foo.zig and break it
  3. Run patches/gollum.sh 66, which creates patches/patches/66_foo.patch (output of diff)
  4. Run patches/eowyn.sh, which applies patches to all exercises and puts them in patches/healed and runs zig build to test all of the exercises in patches/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 the zig 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.

quexxon avatar quexxon commented on May 12, 2024

Thanks for the notes! I can get to work on this.

from ziglings.

ratfactor avatar ratfactor commented on May 12, 2024

That's fantastic. I'm really excited about that. Thanks!

from ziglings.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.