You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.5 KiB
Zig
68 lines
1.5 KiB
Zig
const std = @import("std");
|
|
const warn = std.debug.warn;
|
|
|
|
pub fn main() anyerror!void{
|
|
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
|
defer arena.deinit();
|
|
|
|
const allocator = &arena.allocator;
|
|
|
|
//read data from file.
|
|
//each line is one number
|
|
var file = try std.fs.cwd().openFile("input1", .{});
|
|
defer file.close();
|
|
|
|
const file_size:u64 = try file.getEndPos();
|
|
std.debug.print("{0} \n", .{file_size});
|
|
|
|
var buffer = try allocator.alloc(u8, file_size);
|
|
var reader = file.reader();
|
|
|
|
var size = try reader.read(buffer);
|
|
|
|
std.debug.print("{0} \n", .{buffer});
|
|
|
|
//read from buffer
|
|
//put value in array
|
|
//is value 10?
|
|
//finish array, interpret as int32.
|
|
const numberArr: []u32 = try allocator.alloc(u32, 4);
|
|
var i:i32 = 0;
|
|
|
|
for(buffer) |byte|{
|
|
if(byte == 10){
|
|
i=0;
|
|
//std.debug.print("{0}", .{@as(i32,numberArr)});
|
|
|
|
}else{
|
|
//numberArr.push(byte);
|
|
}
|
|
i += 1;
|
|
}
|
|
|
|
// for(buffer) |byte|{
|
|
// if(byte == 10){
|
|
// std.debug.print("Newline!\n", .{});
|
|
// }else{
|
|
// std.debug.print("{0}", .{byte});
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
|
|
//what two numbers from the input file add up to 2020?
|
|
//once those two numbers have been found, multiply them
|
|
|
|
|
|
//naive:
|
|
//foreach number |num1|
|
|
//foreach number |num2|
|
|
//if(num1+num2 = 2020)
|
|
//return num1*num2
|
|
|
|
//v2
|
|
//foreach number |num1|
|
|
// if(number.contains(2020-num1))
|
|
// return num1*(num2;
|
|
} |