Hirdetés

Új hozzászólás Aktív témák

  • DopeBob

    addikt

    válasz axioma #84 üzenetére

    Hát ezt még emésztem :B

    const errorScores = {
    ')': 3,
    ']': 57,
    '}': 1197,
    '>': 25137
    }

    const autoCompScores = {
    '(': 1,
    '[': 2,
    '{': 3,
    '<': 4
    }

    const pairs = {
    ')': '(',
    ']': '[',
    '}': '{',
    '>': '<'
    }

    let syntaxtErrorScore = 0;
    const autoCompleteScores = [];

    sampleData.forEach((line) => {
    let i = 0;
    let valid = true;
    while (i<line.length && valid) {
    if (pairs.hasOwnProperty(line[i])) {
    if (line[i-1] === pairs[line[i]]) {
    line = line.slice(0,i-1) + line.slice(i+1)
    i-=2;
    } else {
    valid = false;
    syntaxtErrorScore+=errorScores[line[i]]
    }
    }
    if (i === line.length-1 && !pairs.hasOwnProperty[line[i]]) {
    let autoCompleteScore = 0;
    for(let i = line.length-1; i>=0;i--) {
    autoCompleteScore = autoCompleteScore * 5 + autoCompScores[line[i]];
    }
    autoCompleteScores.push(autoCompleteScore)
    }
    i++
    }
    })

    A mait így tudtam megcsinálni. Megkeresem az első 'bezáró' jelet, ha előtte a párja van, akkor törlöm őket visszalépek a törlés előtti pozira és megyek tovább, ha nem akkor az a bezárójel az érvénytelen.

    Innen a második rész már csak annyi volt, ha nem volt érvénytelen és nyitó jel van a végén, akkor ezt a maradék stringet lepontozom hátulról előre

Új hozzászólás Aktív témák