Untitled

 avatar
unknown
plain_text
2 years ago
1.7 kB
2
Indexable
const textRepresentations = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
function getFirstDigit(str) {
    for(let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        const char = str.charAt(i);
        if(code >= 48 && code <= 57) {
            return char;
        } 
        if((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
            const substring = str.substring(i, i + 5);
            for(let t = 0; t < textRepresentations.length; t++) {
                if(substring.indexOf(textRepresentations[t]) === 0) {
                    return t;
                }
            }
        }   
    }
}
function getLastDigit(str) {
    let num = '';
    for(let i = 0; i < str.length; i++) {
        const code = str.charCodeAt(i);
        const char = str.charAt(i);
        if(code >= 48 && code <= 57) {
            num = char;
        } 
        if((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
            const substring = str.substring(i, i + 5);
            for(let t = 0; t < textRepresentations.length; t++) {
                if(substring.indexOf(textRepresentations[t])=== 0) {
                    num = `${t}`;
                }
            }
        }   
    }
    return num;
}
async function getCalibration() {
    let calibration = 0;
    const lines = (await (await fetch('https://adventofcode.com/2023/day/1/input')).text()).split('\n');
    lines.forEach((line) => {
        const num = Number(`${getFirstDigit(line) ?? ''}${getLastDigit(line) ?? ''}`);
        if(isNaN(num)) {
            console.log(line);
        }
        calibration += isNaN(num) ? 0 : num;
    });
    console.log('Calibration: ', calibration);
}
Editor is loading...
Leave a Comment