summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Barrett <tom@tombarrett.xyz>2021-03-13 11:39:00 +0100
committerTom Barrett <tom@tombarrett.xyz>2021-03-13 11:39:00 +0100
commitbd3f1a8ff8ddf83f6fa9da2b9911e414553ff48d (patch)
treece03a997311345c404487e282eb9cd069a952dc4
parent89d2501523560d71384b6b8d489654826ad65f82 (diff)
fixed up 4, finished 8, 9, 10, started 11
-rw-r--r--p1120
-rw-r--r--p820
-rw-r--r--src/main.zig166
3 files changed, 194 insertions, 12 deletions
diff --git a/p11 b/p11
new file mode 100644
index 0000000..4ac2451
--- /dev/null
+++ b/p11
@@ -0,0 +1,20 @@
+08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
+49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
+81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
+52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
+22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
+24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
+32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
+67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
+24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
+21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
+78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
+16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
+86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
+19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
+04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
+88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
+04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
+20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
+20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
+01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
diff --git a/p8 b/p8
new file mode 100644
index 0000000..dfd9153
--- /dev/null
+++ b/p8
@@ -0,0 +1,20 @@
+73167176531330624919225119674426574742355349194934
+96983520312774506326239578318016984801869478851843
+85861560789112949495459501737958331952853208805511
+12540698747158523863050715693290963295227443043557
+66896648950445244523161731856403098711121722383113
+62229893423380308135336276614282806444486645238749
+30358907296290491560440772390713810515859307960866
+70172427121883998797908792274921901699720888093776
+65727333001053367881220235421809751254540594752243
+52584907711670556013604839586446706324415722155397
+53697817977846174064955149290862569321978468622482
+83972241375657056057490261407972968652414535100474
+82166370484403199890008895243450658541227588666881
+16427171479924442928230863465674813919123162824586
+17866458359124566529476545682848912883142607690042
+24219022671055626321111109370544217506941658960408
+07198403850962455444362981230987879927244284909188
+84580156166097919133875499200524063689912560717606
+05886116467109405077541002256983155200055935729725
+71636269561882670428252483600823257530420752963450
diff --git a/src/main.zig b/src/main.zig
index 8966363..56c15fe 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -77,7 +77,7 @@ fn p3() void {
std.debug.warn("{}\n", .{biggest});
}
-fn p4() !void {
+fn p4() void {
var i: usize = 0;
var j: usize = 0;
var str: [6]u8 = undefined;
@@ -85,13 +85,16 @@ fn p4() !void {
while (i < 1000) : (i += 1) {
j = 0;
while (j < 1000) : (j += 1) {
- _ = try std.fmt.bufPrint(&str, "{}", .{i * j});
- if (i * j > largest and
- str[0] == str[5] and
- str[1] == str[4] and
- str[2] == str[3])
- {
- largest = i * j;
+ if (std.fmt.bufPrint(&str, "{}", .{i * j})) |val| {
+ if (i * j > largest and
+ str[0] == str[5] and
+ str[1] == str[4] and
+ str[2] == str[3])
+ {
+ largest = i * j;
+ }
+ } else |err| {
+ print("{}\n", .{err});
}
}
}
@@ -111,6 +114,7 @@ fn p5() void {
while (j != 0) : (j -= 1) {
if (i % j != 0) {
found = true;
+ break;
}
}
@@ -146,17 +150,155 @@ fn p7() void {
print("{}\n", .{i - 1});
}
+fn remove(str: []u8, c: u8) void {
+ var tmp: [1024]u8 = undefined;
+ var counter: u16 = 0;
+ for (str) |char| {
+ if (char != c) {
+ tmp[counter] = char;
+ counter += 1;
+ }
+ }
+
+ insert(str, &tmp);
+}
+
+fn insert(output: []u8, input: []const u8) void {
+ for (input) |_, i| {
+ output[i] = input[i];
+ }
+}
+
+fn len(str: []u8) usize {
+ var i: usize = 0;
+ for (str) |c| {
+ if (c < 128) {
+ i += 1;
+ } else {
+ break;
+ }
+ }
+
+ return i;
+}
+
fn p8() void {
- print("{}\n", .{1});
+ var largest: usize = 0;
+ if (std.fs.cwd().openFile("p8", .{ .read = true })) |file| {
+ var str: [1024]u8 = undefined;
+ if (file.read(&str)) |val| {
+ remove(&str, '\n');
+ var i: usize = 0;
+ while (i < len(&str) - 12) : (i += 1) {
+ var product: usize = 1;
+ for (str[i .. i + 13]) |c| {
+ var n: usize = c - 48;
+ if (n < 10) {
+ product *= c - 48;
+ } else {
+ break;
+ }
+ }
+ if (product > largest) {
+ largest = product;
+ }
+ }
+ } else |err| {
+ print("{}\n", .{err});
+ }
+ } else |err| {
+ print("{}\n", .{err});
+ }
+ print("{}\n", .{largest});
+}
+
+fn sqrt(x: f64) f64 {
+ var z: f64 = 1;
+ var i: u8 = 1;
+ while (i <= 10) : (i += 1) {
+ z -= (z * z - x) / (2 * z);
+ }
+ return z;
+}
+
+fn p9() void {
+ var c: usize = 1;
+ main: while (c <= 1000) : (c += 1) {
+ //var c2: usize = c*c;
+ //while (b
+ var b: usize = 1;
+ while (b < c) : (b += 1) {
+ var a: usize = 1;
+ while (a < b) : (a += 1) {
+ if (a * a + b * b == c * c and a + b + c == 1000) {
+ print("{}\n", .{a * b * c});
+ break :main;
+ }
+ }
+ }
+ }
+}
+
+//fn sum(array: []usize) usize {
+// var counter: usize = 0;
+// for (array) |i| {
+// counter += i;
+// }
+// return counter;
+//}
+
+fn p10() void {
+ const size: usize = 2_000_001;
+ var primes: [size]bool = undefined;
+ for (primes) |prime, i| {
+ primes[i] = true;
+ }
+
+ var i: usize = 2;
+ while (i < size) : (i += 1) {
+ if (primes[i]) {
+ var j: usize = 2;
+ while (j * i < size) : (j += 1) {
+ primes[j * i] = false;
+ }
+ }
+ }
+
+ var sum: usize = 0;
+
+ for (primes) |prime, num| {
+ if (prime and num != 1) {
+ sum += num;
+ }
+ }
+ print("{}\n", .{sum});
+}
+
+fn p11() void {
+ var array: [20][20]usize = undefined;
+
+ if (std.fs.cwd().openFile("p11", .{ .read = true })) |file| {
+ var str: [4096]u8 = undefined;
+ if (file.read(&str)) |val| {
+ print("{}", .{str[0]});
+ } else |err| {
+ print("{}\n", .{err});
+ }
+ } else |err| {
+ print("{}\n", .{err});
+ }
}
pub fn main() !void {
//p1();
//p2();
//p3();
- //_ = try p4();
+ //p4();
//p5();
//p6();
- p7();
- //p8();
+ //p7();
+ p8();
+ p9();
+ //p10();
+ //p11();
}