Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
13
Task/Sierpinski-triangle/Zig/sierpinski-triangle-1.zig
Normal file
13
Task/Sierpinski-triangle/Zig/sierpinski-triangle-1.zig
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
const stdout = std.io.getStdOut().writer();
|
||||
const size: u16 = 1 << 4;
|
||||
var y = size;
|
||||
while (y > 0) {
|
||||
y -= 1;
|
||||
for (0..y) |_| _ = try stdout.writeByte(' ');
|
||||
for (0..size - y) |x| _ = try stdout.writeAll(if (x & y != 0) " " else "* ");
|
||||
_ = try stdout.writeByte('\n');
|
||||
}
|
||||
}
|
||||
12
Task/Sierpinski-triangle/Zig/sierpinski-triangle-2.zig
Normal file
12
Task/Sierpinski-triangle/Zig/sierpinski-triangle-2.zig
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
const std = @import("std");
|
||||
const Allocator = std.mem.Allocator;
|
||||
|
||||
pub fn main() !void {
|
||||
const stdout = std.io.getStdOut().writer();
|
||||
|
||||
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
||||
defer arena.deinit();
|
||||
const allocator = arena.allocator();
|
||||
|
||||
try sierpinski_triangle(allocator, stdout, 4);
|
||||
}
|
||||
3
Task/Sierpinski-triangle/Zig/sierpinski-triangle-3.zig
Normal file
3
Task/Sierpinski-triangle/Zig/sierpinski-triangle-3.zig
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
inline fn truth(x: u8) bool {
|
||||
return x == '*';
|
||||
}
|
||||
12
Task/Sierpinski-triangle/Zig/sierpinski-triangle-4.zig
Normal file
12
Task/Sierpinski-triangle/Zig/sierpinski-triangle-4.zig
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
fn rule_90(allocator: Allocator, evstr: []u8) !void {
|
||||
var cp = try allocator.dupe(u8, evstr);
|
||||
defer allocator.free(cp); // free does "free" for last node in arena
|
||||
|
||||
for (evstr, 0..) |*evptr, i| {
|
||||
var s = [2]bool{
|
||||
if (i == 0) false else truth(cp[i - 1]),
|
||||
if (i + 1 == evstr.len) false else truth(cp[i + 1]),
|
||||
};
|
||||
evptr.* = if ((s[0] and !s[1]) or (!s[0] and s[1])) '*' else ' ';
|
||||
}
|
||||
}
|
||||
16
Task/Sierpinski-triangle/Zig/sierpinski-triangle-5.zig
Normal file
16
Task/Sierpinski-triangle/Zig/sierpinski-triangle-5.zig
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
fn sierpinski_triangle(allocator: Allocator, writer: anytype, n: u8) !void {
|
||||
const len = std.math.shl(usize, 1, n + 1);
|
||||
|
||||
var b = try allocator.alloc(u8, len);
|
||||
defer allocator.free(b);
|
||||
for (b) |*ptr| ptr.* = ' ';
|
||||
|
||||
b[len >> 1] = '*';
|
||||
|
||||
_ = try writer.print("{s}\n", .{b});
|
||||
|
||||
for (0..len / 2 - 1) |_| {
|
||||
try rule_90(allocator, b);
|
||||
_ = try writer.print("{s}\n", .{b});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue