Wpis z mikrobloga

Drugi dzień Advent of Code. W danych wejściowych dostajemy zakresy kodów produktów do sprawdzenia. Trzeba dobrze zrozumieć zadanie. Błędny kod produktu to taki, w którym sekwencja powtarza się dokładnie 2 razy.

Poniżej będzie kod w JavaScript w Node.JS.

Powinien pojawić się dopiero po rozwinięciu wpisu.

A może komuś uda się rozwiązać to zadanie w Excelu?

Na pewno nie jest to kod optymalny, a zdolny matematyk roztrzaskałby to zadanie analitycznie.

const fs = require('fs');
const path = require('path');

// Ścieżka do pliku
const filePath = path.join(__dirname, '2.txt');
let data;

try {
data = fs.readFileSync(filePath, 'utf-8');
console.log('Zawartość pliku:');
console.log(data);
} catch (err) {
console.error('Błąd przy wczytywaniu pliku:', err);
return;
}

const ranges = data.split(',').map(str => str.split('-').map(x => parseInt(x)));

console.log('Ranges:', ranges);

let sum = 0;

for (const range of ranges) {
for (let code = range[0]; code <= range[1]; ++code) {
if (is_invalid(code)) {
console.log('Dodano:', code);
sum += code;
}
}
}

console.log('Wynik:', sum);

function is_invalid(code) {
// Jeśli liczba cyfr jest nieparzysta, to jej nawet nie sprawdzaj
// Można też użyć logarytmów
const text = String(code);
if (text.length % 2 == 1) return false;

const half = text.length / 2;
const left = text.substring(0, half);
const right = text.substring(half);

return left === right;
}

Użyłem ChatGPT tylko do wczytania pliku. Pozostała część kodu pisana ręcznie.

Druga część wieczorem w komentarzu.

#adventofcode #programowanie #programista15k
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W drugiej części szukamy takich kodów, które składają się z 2 lub więcej powtórzeń sekwencji cyfr.

Czyli:

111 - pasuje, bo składa się z 3x1
1212 - pasuje, bo składa się z 2x12
  • Odpowiedz