Inaczej nie potrafię tego nazwać – robimy naprawdę dziwną funkcję. Przyda się do późniejszych zadań. Przerabiamy tak, aby wyniki nie były ustawione „na sztywno”.

Ok, nasza funkcja, ma działać w ten sposób:

function weirdFunc(sum){
    if(sum === 0){
        return {
            num: 0,
            carry: 0
           };
    } else if(sum === 1){
        return {
          num: 1,
          carry: 0
        };
    } else if(sum === 2){
        return {
            num: 0,
            carry: 1
        };
    } else if(sum === 3){
        return {
            num: 1,
            carry: 1
        };
    }
        
}

Mamy wywalić wszystkie warunki i zostawić jeden return, który zwraca dobry wynik (pod warunkiem, że sum to liczba od 0 do 3 włącznie).

Zobaczmy, co możemy zrobić:

console.log(Math.floor(0/2)); //0

console.log(Math.floor(1/2)); //0

console.log(Math.floor(2/2)); //1

console.log(Math.floor(3/2)); //1

Wygląda na to, że sposób na carry już mamy. I nie jest ważne, przynajmniej na razie, czy to całkowicie rozumiemy czy metodą prób i błędów na to wpadliśmy. Robiąc takie ćwiczenia zrozumiemy koniec końców wszystko.

Ok, kolejna próba:

console.log(0 % 2); //0

console.log(1 % 2); //1

console.log(2 % 2); //0

console.log(3 % 2); //1

Czyli sposób na num też już mamy. Ok, funkcja do kupy:

function weirdFunc(sum){
    if(sum === 0){
        return {
            num: 0,
            carry: 0
           };
    } else if(sum === 1){
        return {
          num: 1,
          carry: 0
        };
    } else if(sum === 2){
        return {
            num: 0,
            carry: 1
        };
    } else if(sum === 3){
        return {
            num: 1,
            carry: 1
        };
    }
        
}

function weridFunc_v2(sum){
    return {
        num: sum % 2,
        carry: Math.floor(sum/2)
    }
}

Wytłumaczenie:

  • 2 i 3 dzielone bez reszty na 2 dają 1
  • liczby parzyste (0,2) dają zerową resztę z dzielenia przez 2
  • liczby nieparzyste (1,3) dają 1 jako resztę z dzielenia przez 2

Obiecuję, że w następnych lekcjach rozjaśni się nam po co to robimy…