mirror of
https://codeberg.org/ziglings/exercises.git
synced 2026-07-28 18:25:16 +00:00
Merge branch 'main' into fix_typo
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@ the current Zig snapshot, setup a copy of Ziglings, and knows
|
|||||||
common language building blocks (if/then/else, loops, and
|
common language building blocks (if/then/else, loops, and
|
||||||
functions) is ready for Ziglings.
|
functions) is ready for Ziglings.
|
||||||
|
|
||||||
Zigling's excercises are self-contained. If you can't solve
|
Zigling's exercises are self-contained. If you can't solve
|
||||||
an exercise from the information you've gleaned so far from
|
an exercise from the information you've gleaned so far from
|
||||||
Ziglings, then the exercise probably needs some additional work.
|
Ziglings, then the exercise probably needs some additional work.
|
||||||
Please file an issue!
|
Please file an issue!
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
//
|
//
|
||||||
// As with integers, you can pass a pointer to a struct when you
|
// As with integers, you can pass a pointer to a struct when you
|
||||||
// will wish to modify that struct. Pointers are also useful when
|
// wish to modify that struct. Pointers are also useful when
|
||||||
// you need to store a reference to a struct (a "link" to it).
|
// you need to store a reference to a struct (a "link" to it).
|
||||||
//
|
//
|
||||||
// const Vertex = struct{ x: u32, y: u32, z: u32 };
|
// const Vertex = struct{ x: u32, y: u32, z: u32 };
|
||||||
|
|||||||
@@ -37,6 +37,24 @@
|
|||||||
// self, others use a lowercase version of the type name, but feel
|
// self, others use a lowercase version of the type name, but feel
|
||||||
// free to use whatever is most appropriate.
|
// free to use whatever is most appropriate.
|
||||||
//
|
//
|
||||||
|
// "But hold on," you say, eyeing a() and b() suspiciously, "why
|
||||||
|
// does one take 'self' and another take '*self'?" Sharp eye!
|
||||||
|
//
|
||||||
|
// It all comes down to a single question: does the function need
|
||||||
|
// to CHANGE the struct?
|
||||||
|
//
|
||||||
|
// * Needs to change it? Take a pointer (*Bar). Without it you'd
|
||||||
|
// be scribbling on a COPY, and your changes would evaporate the
|
||||||
|
// instant the function returns. Poof.
|
||||||
|
// * Only reads it? Plain Bar is just fine.
|
||||||
|
// (For a big, bulky struct you might still write *const Bar to
|
||||||
|
// avoid copying it around, but for small ones a copy is cheap.)
|
||||||
|
//
|
||||||
|
// You'll see this below: zap() takes 'self: HeatRay' by value
|
||||||
|
// because it only reads the ray's damage, but it takes the alien
|
||||||
|
// as '*Alien' because zapping is supposed to HURT - and that means
|
||||||
|
// changing the alien's health for real, not on a throwaway copy.
|
||||||
|
//
|
||||||
// Okay, you're armed.
|
// Okay, you're armed.
|
||||||
//
|
//
|
||||||
// Now, please zap the alien structs until they're all gone or
|
// Now, please zap the alien structs until they're all gone or
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// In Exercises 84-91, we learned about Zig's Io interface for
|
// In Exercises 85-94 and quiz 95, we learned about Zig's Io interface for
|
||||||
// concurrent execution: io.async(), Group, Select, and Futures.
|
// concurrent execution: io.async(), Group, Select, and Futures.
|
||||||
// Under the hood, the Threaded backend manages a pool of real
|
// Under the hood, the Threaded backend manages a pool of real
|
||||||
// OS threads for you - including scheduling, cancellation, and
|
// OS threads for you - including scheduling, cancellation, and
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
// 1,000,000,000 partial values. And for each additional digit we have to
|
// 1,000,000,000 partial values. And for each additional digit we have to
|
||||||
// add a zero.
|
// add a zero.
|
||||||
// Even fast computers - and I mean really fast computers - get a bit warmer
|
// Even fast computers - and I mean really fast computers - get a bit warmer
|
||||||
// on the CPU when it comes to really many digits. But the 8 digits are
|
// on the CPU when it comes to a large number of digits. But 8 digits are
|
||||||
// enough for us for now, because we want to understand the principle and
|
// enough for us for now, because we want to understand the principle and
|
||||||
// nothing more, right?
|
// nothing more, right?
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
//
|
//
|
||||||
// A common activity in microcontroller programming is setting and clearing
|
// A common activity in microcontroller programming is setting and clearing
|
||||||
// bits on input and output pins. This lets you control LEDs, sensors, motors
|
// bits on input and output pins. This lets you control LEDs, sensors, motors
|
||||||
// and more! In a previous exercise (097_bit_manipulation.zig) you learned how
|
// and more! In a previous exercise (100_bit_manipulation.zig) you learned how
|
||||||
// to swap two bytes using the ^ (XOR - exclusive or) operator. This quiz will
|
// to swap two bytes using the ^ (XOR - exclusive or) operator. This quiz will
|
||||||
// test your knowledge of bit manipulation in Zig while giving you a taste of
|
// test your knowledge of bit manipulation in Zig while giving you a taste of
|
||||||
// what it's like to control registers in a real microcontroller. Included at
|
// what it's like to control registers in a real microcontroller. Included at
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
//
|
//
|
||||||
// We've already learned plenty about bit manipulation using bitwise operations
|
// We've already learned plenty about bit manipulation using bitwise operations
|
||||||
// in exercises 097 and 098 and in quiz 110. The techniques we already know work
|
// in exercises 100 and 101 and in quiz 113. The techniques we already know work
|
||||||
// just fine, but creating masks and shifting individual bits around can become
|
// just fine, but creating masks and shifting individual bits around can become
|
||||||
// quite tedious and unwieldy pretty quickly.
|
// quite tedious and unwieldy pretty quickly.
|
||||||
// What if there was a better, a more convenient way to control individual bits?
|
// What if there was a better, a more convenient way to control individual bits?
|
||||||
@@ -78,7 +78,7 @@ const FLG = packed struct(u8) {
|
|||||||
content_checksum: bool,
|
content_checksum: bool,
|
||||||
content_size: bool,
|
content_size: bool,
|
||||||
block_checksum: bool,
|
block_checksum: bool,
|
||||||
block_indepencence: bool,
|
block_independence: bool,
|
||||||
version: u2,
|
version: u2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// We've already learned about switch statements in exercises 030, 031 and 108.
|
// We've already learned about switch statements in exercises 030, 031 and 111.
|
||||||
// They also work with packed containers:
|
// They also work with packed containers:
|
||||||
|
|
||||||
const S = packed struct(u2) {
|
const S = packed struct(u2) {
|
||||||
@@ -51,11 +51,11 @@ comptime {
|
|||||||
//
|
//
|
||||||
// Try to make the float below negative:
|
// Try to make the float below negative:
|
||||||
|
|
||||||
/// IEEE 754 half precision float
|
// IEEE 754 binary16 floating-point format
|
||||||
const Float = packed union(u16) {
|
const Float = packed union(u16) {
|
||||||
value: f16,
|
value: f16,
|
||||||
bits: packed struct(u16) {
|
bits: packed struct(u16) {
|
||||||
mantissa: u10,
|
significand: u10,
|
||||||
exponent: u5,
|
exponent: u5,
|
||||||
sign: u1,
|
sign: u1,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- exercises/047_methods.zig 2023-10-03 22:15:22.122241138 +0200
|
--- exercises/047_methods.zig 2026-06-21 16:11:59.110876971 +0200
|
||||||
+++ answers/047_methods.zig 2023-10-05 20:04:07.056100214 +0200
|
+++ answers/047_methods.zig 2026-06-21 16:13:07.066363558 +0200
|
||||||
@@ -88,7 +88,7 @@
|
@@ -106,7 +106,7 @@
|
||||||
for (&aliens) |*alien| {
|
for (&aliens) |*alien| {
|
||||||
|
|
||||||
// *** Zap the alien with the heat ray here! ***
|
// *** Zap the alien with the heat ray here! ***
|
||||||
|
|||||||
Reference in New Issue
Block a user