🌟 Advent of Code (AoC) 2021 🌟

PermalÀnk
Medlem
●

Första AOC för mig detta Äret. Blir i C#, nÀsta Är kanske jag utmanar mig sjÀlv lite med ett mer funktionellt sprÄk (F# kanske?)

internal class Puzzle1 : IPuzzle { public int PuzzleNumber => 1; private readonly List<int> _depths = File.ReadAllLines("Inputs/Puzzle1.txt") .Select(int.Parse) .ToList(); public int One() => GetMeasurementCounts(_depths); public int Two() { const int windowSize = 3; var windowSums = _depths .Where((_, idx) => idx <= (_depths.Count - windowSize)) .Select((_, idx) => _depths.GetRange(idx, windowSize).Sum()) .ToList(); return GetMeasurementCounts(windowSums); } private static int GetMeasurementCounts(IReadOnlyCollection<int> depths) { return depths .Zip(depths.Skip(1)) .Aggregate(0, (c, t) => t.Second > t.First ? c + 1 : c); } }

Dold text
PermalÀnk
Medlem ★
●
Skrivet av Ingetledigtnamn:

Varför behöver du dra bort ett?

För att den rÀknar första vÀrdet som en ökning pga att det inte finns nÄgot tidigare vÀrde.

Skulle detta vara en bÀttre / mindre förvirrande lösning?

def part_one(input): increase = -1 ... return increase def part_two(input): increase = -1 ... return increase

eller Àr det nÄgot annat jag inte tÀnker pÄ?

Visa signatur

AMD Ryzen 7 7800X3D ‱ ASUS TUF Gaming B650-Plus WiFi ‱ Noctua NH-D15
XFX Radeon RX 6950 XT Speedster MERC 319 ‱ MSI Optix MAG271CQR ‱ Dell UltraSharp U2515H
G.Skill 32GB DDR5 6000MHz CL30 ‱ WD Black SN750 NVMe SSD 1 TB ‱ Crucial P3 Plus NVMe SSD 1 TB
Phanteks P600S ‱ ASUS TUF Gaming 850W Gold ‱ Logitech Craft Keyboard ‱ Logitech MX Master 3

PermalÀnk
Medlem ★
●

Dag1
C++ Skippar och rÀkna summan pÄ part 2. Kör pÄ differensen mellan de tvÄ tal som skiljer sig istÀllet dÄ 2 av 3 Àr likadana.

int partOne(vector<int> result) { int largerThanPrev = 0; for(int i=1; i<result.size(); i++){ int prev = result[i-1]; if(result[i] > prev) { largerThanPrev += 1; } } return largerThanPrev; } int partTwo(vector<int> result) { int largerThanPrev = 0; for(int i=1; i<result.size()-2; i++){ int prev = result[i-1]; if(result[i+2] > prev) { largerThanPrev += 1; } } return largerThanPrev; } int main() { vector<int> result = readInput("day1.txt"); cout << partOne(result) << "\n"; cout << partTwo(result); }

Dold text
Visa signatur

10700K | NVIDIA RTX 3080

PermalÀnk
Medlem ★
●

Blir c# som vanligt. (sitter i LINQPad (https://www.linqpad.net/))

Tror pÄ det hÀr med arrayer och for-loopar

void Main() { Environment.CurrentDirectory = Util.CurrentQuery.Location; var p1 = File .ReadAllLines("day-01.txt") .Select(int.Parse) .ToArray(); var p2 = new int[p1.Length - 2]; for (int i = 0; i < p2.Length; i++) { p2[i] = p1[i] + p1[i + 1] + p1[i + 2]; } Sum(p1).Dump("Part 1"); Sum(p2).Dump("Part 2"); } int Sum(int[] x) { var s = 0; for (int i = 1; i < x.Length; i++) { if (x[i] > x[i - 1]) { s++; } } return s; }

Dold text

Edit; glömde [spoiler]

PermalÀnk
Medlem ★
●

Dag: 1
SprÄk: Javascript

const day1 = (input) => { let numberOfIncreases = 0; input.reduce((acc, curr) => { if (curr > acc) { numberOfIncreases++; } return curr; }); return numberOfIncreases; };

Dold text

const day1Part2 = (input) => { let numberOfIncreases = 0; let previousSum = 0; input.forEach((number, index, arr) => { const number1 = number; const number2 = arr[index + 1]; const number3 = arr[index + 2]; if (!number1 || !number2 || !number3) { return; } const sum = number1 + number2 + number3; if (!previousSum) { console.log(sum, "(N/A - no previous sum)"); } else if (sum > previousSum) { numberOfIncreases++; console.log(sum, "(increase)"); } else if (sum === previousSum) { console.log(sum, "(no change)"); } else { console.log(sum, "(decrease)"); } previousSum = sum; }); return numberOfIncreases; };

Dold text
Visa signatur

Mina poster Àr en illusion. Det som stÄr skrivet hÀr över stÄr i sjÀlva verket inte dÀr sÄ inget av det som du lÀser Àr sant. Inte ens den hÀr texten. Jag har sjÀlv ingen kunskap om det jag skriver och ingen bör sÄledes lÀsa eller ta in den information som stÄr skrivet.

PermalÀnk
Medlem
●

Dag: 1
SprÄk: C++
Lösning:

int solve_part1(vector<int> data) { adjacent_difference(data.begin(), data.end(), data.begin()); int count = count_if(data.begin()+1, data.end(), [](int i){ return i>0; }); return count; } int solve_part2(vector<int> data) { vector<int> sums(data.size()-2); for (int i = 0, n = sums.size(); i < n; i++) { sums[i] = accumulate(data.begin()+i,data.begin()+(i+3),0); } int count = solve_part1(sums); return count; }

Dold text

Eller kolla hÀr: https://github.com/gbroll/AoC-2021

PermalÀnk
●

Dag: 1
SprÄk: C++

template<typename Iterator> int compare(Iterator start, Iterator end, int i){ int count = 0; while(start+i != end){ if(*start < *(start+i)) count++; start++; } return count; } int main(){ std::vector<int> data = readInput("input.txt"); std::cout << compare(data.begin(), data.end(),1) << std::endl; std::cout << compare(data.begin(), data.end(),3) << std::endl; }

Dold text
PermalÀnk
Medlem ★
●
Skrivet av immutable:

För att den rÀknar första vÀrdet som en ökning pga att det inte finns nÄgot tidigare vÀrde.

Finns det kanske andra initialvÀrden sÄ att du inte fÄr en increase för första vÀrdet?

PermalÀnk
●

Dag 1
SprÄk : Python

Kanske onödigt komplicerad, första gÄngen jag testar pÄ AOC!

# Advent Of Code day 01 depth_num = [] prev_number = 0 count_inc = 0 with open('input.txt') as f: lines = f.read().splitlines() for i in lines: depth_num.append(int(i)) for i in depth_num: if prev_number < i: count_inc= count_inc + 1 prev_number = i print(count_inc - 1) # we dont want it to count the first number of the dive.

Dold text

Dag 1
SprÄk C#

using System; namespace adventofcode01 { class Program { static void Main(string[] args) { int prev_num = 0; int count_inc = -1; foreach (string line in System.IO.File.ReadLines("PATH/TO/FILE")) { int line_to_int = int.Parse(line); if (line_to_int > prev_num) { Console.WriteLine("Not bigger"); count_inc++; } prev_num = line_to_int; } Console.WriteLine(count_inc.ToString()); Console.ReadLine(); } } }

Dold text
lÀgger till c# ocksÄ
Visa signatur

[ -- Gaming -- ]
{ i5-9600k - RTX 3070 OC - 16GB - 3 x 1TB m.2 }
[ -- Workstation --]
{ i7-5960X | GTX 1660 6GB / Quadro | 48GB corsair dominator platinum | 20TB }
{ Lenovo T480S | i7-8650U | 16 GB | 512 GB }

PermalÀnk
Medlem ★
●
Skrivet av Ingetledigtnamn:

Finns det kanske andra initialvÀrden sÄ att du inte fÄr en increase för första vÀrdet?

Du menar prev_max = input[0] respektive prev_max = input[0] + input[1] + input[2]?

Visa signatur

AMD Ryzen 7 7800X3D ‱ ASUS TUF Gaming B650-Plus WiFi ‱ Noctua NH-D15
XFX Radeon RX 6950 XT Speedster MERC 319 ‱ MSI Optix MAG271CQR ‱ Dell UltraSharp U2515H
G.Skill 32GB DDR5 6000MHz CL30 ‱ WD Black SN750 NVMe SSD 1 TB ‱ Crucial P3 Plus NVMe SSD 1 TB
Phanteks P600S ‱ ASUS TUF Gaming 850W Gold ‱ Logitech Craft Keyboard ‱ Logitech MX Master 3

PermalÀnk
Medlem
●

Dag: 1
SprÄk: ytterligare en Python
Lösning: github

def fileReader(): input = [] with open('inputDay1.txt') as file: for depth in file: input.append(int(depth)) file.close() return input def day1_part1(input): increased = 0 prev = input[0] for depth in input: if (depth > prev): increased += 1 prev = depth return increased; def day1_part2(input): previousBlock = input[0] + input[1] + input[2] increase = 0 for index in range(1, len(input) - 2): currentBlock = input[index] + input[index + 1] + input[index + 2] if(currentBlock > previousBlock): increase +=1 previousBlock = currentBlock return increase print('Day One part 1:', day1_part1(fileReader())) print('Day One part 2:', day1_part2(fileReader()))

Dold text
PermalÀnk
Medlem
●

Dag: 1
SprÄk: Rust

fn main() { let input = std::fs::read_to_string("input.txt"); let res: Vec<_> = input .unwrap() .lines() .filter_map(|s| s.parse::<_>().ok()) .collect(); calc(&res); // 1342 calc(&res.windows(3).map(|s| s.iter().sum()).collect::<Vec<_>>()); // 1378 } fn calc(data: &[i32]) { let acc = data.iter().fold((-1, 0), |mut acc, &v| { acc.0 += (v > acc.1) as i32; (acc.0, v) }); println!("Svar: {}", acc.0); }

Dold text
Visa signatur

AMD Ryzen 3700X, Gigabyte Elite X570, 32GB Ballistix Sport, NH-D15S, SAPPHIRE NITRO+ RX 7900 XTX, Corsair AX760, LG OLED C2 42"

PermalÀnk
Medlem
●

Dag: 1
SprÄk: C# / .NET6

List<string> lines = File.ReadAllLines("./input.txt").ToList(); List<int> numbers = new List<int>(); foreach (var line in lines) { numbers.Add(int.Parse(line)); } int increamentPartA = 0; int increamentPartB = 0; for (int i = 1; i < lines.Count; i++) { if (numbers[i-1] < numbers[i]) { increamentPartA++; } if (i +2 < lines.Count) { int compareA = numbers[i - 1] + numbers[i] + numbers[i + 1]; int compareB = numbers[i] + numbers[i + 1] + numbers[i + 2]; if (compareA < compareB) { increamentPartB++; } } } Console.WriteLine("Part A: " + increamentPartA.ToString()); Console.WriteLine("Part B: " + increamentPartB.ToString());

Dold text
Visa signatur

Gaming: MSI X570 MPG Gaming Plus -- AMD Ryzen 9 5900X -- Sapphire Radeon RX 6800 XT NITRO+ -- G.Skill 32GB 3600MHz CL14 -- Samsung 960 EVO 1TB -- 2x ASUS MG278Q -- Arch-based EndeavourOS
VR: ASRock B550M-ITX/ac -- AMD Ryzen 5 5600G -- ASUS RTX 3070 -- Corsair 16GB 3600MHz CL18 -- Kingston A2000 250GB -- Windows 10

PermalÀnk
●

Dag 1
SprÄk: Rust
Lösning: Github

use std::fs; pub fn run() { let data = fs::read_to_string("dec_01.txt").expect("unable to read file"); let numbers: Vec<u32> = data.lines().map(|line| line.parse().unwrap()).collect(); println!("Part 1: {}", part1(&numbers)); println!("Part 2: {}", part2(&numbers)); } fn part1(numbers: &Vec<u32>) -> u32{ let mut count = 0; for i in 1..numbers.len(){ if numbers[i] > numbers[i-1]{ count += 1; } } count } fn part2(numbers: &Vec<u32>) -> u32{ let mut sum = u32::MAX; let mut count = 0; for n in 0..numbers.len() - 2 { if (numbers[n] + numbers[n + 1] + numbers[n + 2]) > sum { count += 1; } sum = numbers[n] + numbers[n + 1] + numbers[n + 2]; } count }

Dold text

Startar pÄ dag1 för en gÄngs skull :). Kör pÄ Rust i Är igen för att lÀra mig sprÄket bÀttre. Kodar annars Java/Kotlin till vardags. MÄlet Àr att hÀnga med första veckan iaf.

PermalÀnk
Medlem ★
●
Skrivet av ViLue:

Dag: 1
SprÄk: ytterligare en Python
Lösning: github

def fileReader(): input = [] with open('inputDay1.txt') as file: for depth in file: input.append(int(depth)) file.close() return input def day1_part1(input): increased = 0 prev = input[0] for depth in input: if (depth > prev): increased += 1 prev = depth return increased; def day1_part2(input): previousBlock = input[0] + input[1] + input[2] increase = 0 for index in range(1, len(input) - 2): currentBlock = input[index] + input[index + 1] + input[index + 2] if(currentBlock > previousBlock): increase +=1 previousBlock = currentBlock return increase print('Day One part 1:', day1_part1(fileReader())) print('Day One part 2:', day1_part2(fileReader()))

Dold text

With tar automatiskt hand om att stÀnga filen sÄ du behöver inte ha med file.close().

PermalÀnk
Medlem
●
Skrivet av pine-orange:

With tar automatiskt hand om att stÀnga filen sÄ du behöver inte ha med file.close().

Ooh, visste inte om det, Àr van att alltid skriva close() nÀr det gÀller filer.
Det Àr bra att veta tack!

PermalÀnk
Medlem ★
●

Dag: 1
SprÄk: go
lösning:

func main() { input, err := helpers.ReadInts(os.Args[1]) if err != nil { panic(err) } fmt.Printf("Solution p1: %v\n", CountIncreases(input, 1)) fmt.Printf("Solution p2: %v\n", CountIncreases(input, 3)) } func CountIncreases(input []int, num int) (count int) { for i := 0; i < len(input); i++ { if len(input)-i == num { return } else if SumSlice(input[i:i+num]) < SumSlice(input[i+1:i+num+1]) { count++ } } return } func SumSlice(s []int) (sum int) { if len(s) == 1 { return s[0] } for i := 0; i < len(s); i++ { sum += s[i] } return }

Dold text
PermalÀnk
Medlem
●

Första gÄngen jag Àr med (förutom lite testande utanför julsÀsongen).
Skrivet i dyalog APL
Jag Àr rÀtt mycket nybörjare pÄ APL sÄ det Àr kanske inte vÀrldens mest optimerade kod men den verkade i alla fall lösa uppgiften. Lite kul att testa nÄgot sprÄk som Àr vÀldigt annorlunda.

Är normalt ingen programmerare heller men har programmerat lite till och frĂ„n för husbehov genom Ă„ren.

dag1←⍎¹⊃⎕NGET'aoc2021\dag1.txt'1 aoc21_1←{+/⍔<1↓⍔,0} aoc21_1 dag1 aoc21_2←{+/(3+/⍔)<1↓(3+/⍔),0} aoc21_2 dag1

Dold text

EDIT: Ser pÄ jclrs lösning att man kan skippa paranteserna ocksÄ, var inte helt nöjd med att Àndra ordningen.
FÄr kÀmpa vidare med morgondagens uppgift ifall tiden rÀcker till.

PermalÀnk
●

Dag: 1
SprÄk: Kotlin
Lösning:

fun partOne() { val count = File("C:\\Users\\Lol\\Downloads\\input.txt") .readLines() .map { string -> string.toInt() } .zipWithNext { a, b -> b > a } .count { it } println(count) } fun partTwo() { val count = File("C:\\Users\\Lol\\Downloads\\input.txt") .readLines() .map { string -> string.toInt() } .windowed(3) { (a, b, c) -> a + b + c } .zipWithNext { a, b -> b > a } .count { it } println(count) }

Dold text
Visa signatur

CPU:i5 4670k |GPU: Gigabyte gtx 760 windforce r2 | RAM: 8GB 1600 Mhz | PSU: Fractal Design Integra r2 650w | Moderkort: Asus z87-a | Chassi: Fractal design core 3000 USB 3.0

PermalÀnk
Skrivmaskin ★
●

Dag:1
SprÄk: C++
Lösning:

int main() { vector<int> depthData = readfile("input.txt"); int t = 0; for (int b = 1; b < depthData.size(); b++) { if (depthData[b] > depthData[b-1]) { t++; } } cout << t << endl; vector<int> depthData = readfile("input.txt"); int t = 0; for (int b = 1; b < (depthData.size()-2); b++) { if ((depthData[b] + depthData[b+1] + depthData[b+2]) > (depthData[b-1] + depthData[b] + depthData[b+1])) { t++; } } cout << t << endl; return 0; }

Eller: https://github.com/wittwang98/Advent-of-Code-2021

Dold text

Haha, oj vad pinsamt lÄng tid det tog... TÀnkte göra det smidigt för mig genom att redan nu preppa med header-fil och inlÀsning, men att hitta ett bortglömt "&" tog en timme av försök Av nÄgon anledning hade jag ocksÄ problem med att initiera variabler enligt upplÀgget int a{}; (som vi uppmanas att göra i den C++-kurs jag lÀser nu). Kan det möjligtvis ha nÄgot med plattform eller version att göra? Genomför kursen via skolans Linux-system, medan Macbooken fick ta AOC

PermalÀnk
Medlem ★
●

Dag 1:
SprÄk: Dart
Lösning: GitHub

Har bestÀmt mig att ge fan i att försköna kod detta Är, jag mÄste ju ocksÄ ha ett liv. Om jag hÄller mitt löfte Àr dock en annan frÄga.

Visa signatur

| Mobo: Gigabyte X570 GAMING X | CPU: AMD Ryzen 9 3900X + Dark Rock 4 | RAM: 32GB @ 3000MHz | GPU: Gigabyte RTX 3080 OC | PSU: Seasonic GX 850W | Chassi: NZXT S340 Elite Matte Black | M.2: Samsung 970 Evo 500GB & 1000GB | HDD: 4TB | Monitors: Acer Predator X34 GS & Acer XB270HU |

PermalÀnk
Medlem ★
●

Kamrater, nu har jag kikat pÄ massor med lösningar och jag blir lite besviken pÄ de flesta av er. Om uttrycket ser ut som

A + B + C > B + C + D

kan man dÄ förkorta bort nÄgra variabler?

PermalÀnk
Medlem ★
●
Skrivet av Ingetledigtnamn:

Kamrater, nu har jag kikat pÄ massor med lösningar och jag blir lite besviken pÄ de flesta av er. Om uttrycket ser ut som

A + B + C > B + C + D

kan man dÄ förkorta bort nÄgra variabler?

Haha nu ska vi inte vara sÄ petiga man fÄr ju bara lÀgga nÄgra minuter pÄ lunchen pÄ detta.

PermalÀnk
Medlem ★
●
Skrivet av hultron:

Haha nu ska vi inte vara sÄ petiga man fÄr ju bara lÀgga nÄgra minuter pÄ lunchen pÄ detta.

Även om jag förstĂ„r att @Ingetledigtnamn var lite ironisk finns det ju ocksĂ„ en annan faktor: datan (inputen) kommer aldrig att förĂ€ndras. Till skillnad frĂ„n valfri produktionsapp.

Visa signatur

| Mobo: Gigabyte X570 GAMING X | CPU: AMD Ryzen 9 3900X + Dark Rock 4 | RAM: 32GB @ 3000MHz | GPU: Gigabyte RTX 3080 OC | PSU: Seasonic GX 850W | Chassi: NZXT S340 Elite Matte Black | M.2: Samsung 970 Evo 500GB & 1000GB | HDD: 4TB | Monitors: Acer Predator X34 GS & Acer XB270HU |

PermalÀnk
Datavetare ★
●

Började inte bra, har sett fram emot detta men var vÀldigt mycket annat som kom i vÀgen idag. Men blir sÀker bÀttre framöver

Dag: 1
SprÄk: Rust

struct Day1 { depths: Vec<u32>, } impl Solution for Day1 { fn part1(&self) -> String { num_depth_increases(&self.depths, 2).to_string() } fn part2(&self) -> String { num_depth_increases(&self.depths, 4).to_string() } } fn num_depth_increases(depths: &[u32], wnd_size: usize) -> usize { depths .windows(wnd_size) .filter(|wnd| wnd.first().unwrap() < wnd.last().unwrap()) .count() } pub fn new(input: &str) -> Box<dyn Solution> { let depths = input .lines() .filter_map(|depth| depth.parse::<u32>().ok()) .collect(); Box::new(Day1{ depths, }) }

TÀnker göra ett program som innehÄller alla lösningarna, anrop till Solution::part1() och Solution::part2(), inlÀsning av fil till strÀng, etc sker i en generell del som inte Àr med hÀr
Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

PermalÀnk
Hedersmedlem ★
●

Är det deadline varje dag, eller kan man köra i efterhand om man vill?
Jag rÀknar inte med att orka/hinna varje dag oavsett iofs.
Funderar pĂ„ att delta med TypeScript för att lĂ€ra mig det -- har programmerat i massvis med sprĂ„k genom Ă„ren, men i princip inget alls i JavaScript eller TypeScript. Är Ă€ven sugen pĂ„ att bidra till ett OSS-projekt i just TypeScript.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

PermalÀnk
Medlem ★
●
Skrivet av Thomas:

Är det deadline varje dag, eller kan man köra i efterhand om man vill?
Jag rÀknar inte med att orka/hinna varje dag oavsett iofs.
Funderar pĂ„ att delta med TypeScript för att lĂ€ra mig det -- har programmerat i massvis med sprĂ„k genom Ă„ren, men i princip inget alls i JavaScript eller TypeScript. Är Ă€ven sugen pĂ„ att bidra till ett OSS-projekt i just TypeScript.

Du kan köra Advent of Code frÄn 2015 om du vill.

Visa signatur

| Mobo: Gigabyte X570 GAMING X | CPU: AMD Ryzen 9 3900X + Dark Rock 4 | RAM: 32GB @ 3000MHz | GPU: Gigabyte RTX 3080 OC | PSU: Seasonic GX 850W | Chassi: NZXT S340 Elite Matte Black | M.2: Samsung 970 Evo 500GB & 1000GB | HDD: 4TB | Monitors: Acer Predator X34 GS & Acer XB270HU |

PermalÀnk
Hedersmedlem ★
●
Skrivet av Dave1080:

Fast man fÄr vÀl knappast poÀngen och sÄnt dÄ, eller?
Om nej, fÄr man poÀng för första december om man skickar in den tredje?

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

PermalÀnk
Medlem
●

Dag: 1
SprÄk: Carth

TÀnkte försöka anvÀnda mitt eget sprÄk lite grann det hÀr Äret. Behöver fÄ lite kÀnn för hur det faktiskt Àr att anvÀnda i praktiken, sÄ jag kan justera kursen i sprÄkets utveckling. Tror ocksÄ detta blir ett bra sÀtt att identifiera funktioner att lÀgga till i standardbiblioteket.

Första dagen gick bra. Men tror sprÄkets begrÀnsningar kommer göra sig hörda redan ganska snart.

(import std) (define main (do io/bind (<- inp (io/map unwrap! (read-file "inputs/day1.txt"))) (let1 depths (map (<o unwrap! parse-nat) (lines inp))) (display "Part 1:") (display (show-nat (count-increases depths))) (display "Part 2:") (display (show-nat (count-increases (map (<o sum array/iter) (windows (cast 3) depths))))))) (define (count-increases ns) (count (filter (fun ([a b]) (> b a)) (zip ns (skip (cast 1) ns))))) ;; Sliding windows over an iterator, each of width `n` (define: (windows n) (forall (a) (Fun Nat (Iter a) (Iter (Array a)))) (unfoldr (fun (xs) (let1 window (array/collect (take (cast n) xs)) (if (< (array/length window) n) ; At the end None (Some [window (skip (cast 1) xs)]))))))

Dold text
Visa signatur

Arbets- / Spelstation: Arch Linux - Ryzen 5 3600 - RX 7900 XT - 32G DDR4
Server: Arch Linux - Core i5-10400F - 16G DDR4

PermalÀnk
Medlem
●

Dag: 1
SprÄk: C#

static void Main(string[] args) { var input = File.ReadAllLines($"Day{DateTime.Now.Day}.txt").Select(int.Parse).ToList(); int One() => Day_1_Part_1(input); int Two() => Day_1_Part_2(input); Console.WriteLine($"Part One: {One()}\nPart Two: {Two()}"); Console.ReadLine(); } public static int Day_1_Part_1(List<int> input) { int count = 0; for (int i = 1; i < input.Count(); i++) { if (input[i] > input[i - 1]) count++; } return count; } public static int Day_1_Part_2(List<int> input) { int count = 0; int a = 0; int b = 0; for (int i = 0; i < input.Count(); i++) { if (i + 2 < input.Count()) a = input[i] + input[i + 1] + input[i + 2]; if (i + 3 < input.Count()) b = input[i + 1] + input[i + 2] + input[i + 3]; if (b > a) count++; } return count; }

Dold text