Microsoft рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдп



рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!

рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП Microsoft рдХреЗ рдСрдирд▓рд╛рдЗрди рдЖрдХрд▓рди 2019 рдореЗрдВ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рджрд┐рдП рдЧрдП рддреАрди JS рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред Microsoft рдХрд╛ рдСрдирд▓рд╛рдЗрди рдореВрд▓реНрдпрд╛рдВрдХрди

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрдпрди рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрдпрди рдореЗрдВ рдЙрддреНрддреАрд░реНрдг рд╣реЛрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдСрдирд▓рд╛рдЗрди рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА рдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдареАрдХ рдПрдХ рдШрдВрдЯрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИред

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдореИрдЯ рдХреНрд▓рд╛рд░реНрдХ

рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж ред рддреЛ рдЪрд▓рддреЗ рд╣реИрдВред



рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 1


рдПрдХ рд╕рдорд╛рдзрд╛рди рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ:

  • рдлрд╝рдВрдХреНрд╢рди рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдПрди рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрд╕ рд▓реЗрддрд╛ рд╣реИ
  • рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рддреАрди рд╕рдорд╛рди рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ
  • рд╕рдорд╛рд░реЛрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ S рд╕реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг:

  1. S = "eedaaad", рдлрд╝рдВрдХреНрд╢рди "eedaad" рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдХреНрд╖рд░ "a" рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. S = "xxxtxxx", рдлрд╝рдВрдХреНрд╢рди "xxtxx" рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА рдЕрдХреНрд╖рд░ рддреАрди рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд╣реАрдВред
  3. S = "uuuuxaaaaxuuu", рдлрд╝рдВрдХреНрд╢рди "uuxaaxuu" рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдорд╛рдиреНрдпрддрд╛рдУрдВ:

  • N рд░реЗрдВрдЬ рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ [рез.реи,режреж,режрежреж]
  • S рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рдЪрд▓реЗ рдЕрдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВ [az]

рдлреЗрд╕рд▓рд╛:
function solution(input) {
    let result = input.slice(0, 2);
    for (let i = 2; i < input.length; i++) {
        if (input[i] !== input[i - 1] || input[i] !== input[i - 2]) {
            result += input[i];
        }
    }
    console.log(result);
    return result;
}
solution('eedaaad'); // eedaad
solution('xxxtxxx'); // xxtxx
solution('uuuuxaaaaxuuu'); // uuxaaxuu

/*
:
-   result,       
-     :
    -           ,    result
    -      ,   ,   
-  result
*/


рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 2


рдПрдХ рд╕рдорд╛рдзрд╛рди рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ:

  • рд╕рдорд╛рд░реЛрд╣ рдПрди рд╕рд░рдгреА рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рд╕рд░рдгреА A рд▓реЗрддрд╛ рд╣реИ
  • рдлрд╝рдВрдХреНрд╢рди рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд░рд╛рд╢рд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдЕрдВрдХ рдЬрдм рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╕рдорд╛рди рд░рд╛рд╢рд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
  • рдпрджрд┐ рд╕рд░рдгреА рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди -1 рджреЗрддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг:

  1. A = [релрез, =рез, рез 17, рекреи], рдлрд╝рдВрдХреНрд╢рди реп рей рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рджреЛ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдВрдХ рдПрдХ рд╣реА рдпреЛрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: (релрез, рекреи) рдФрд░ (рез 71, .рез)ред рдкрд╣рд▓реА (рд╕рдмрд╕реЗ рдмрдбрд╝реА) рдЬреЛрдбрд╝реА рдХрд╛ рдпреЛрдЧ 93 рд╣реИред
  2. A = [рекреи, рейрей, ремреж], рдлрд╝рдВрдХреНрд╢рди резрежреи рджреЗрддрд╛ рд╣реИред рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдВрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╛рди рд░рд╛рд╢рд┐ рдорд┐рд▓рддреА рд╣реИред 42 + 60 = 102ред
  3. рдП = [релрез, рейреи, рекрей], рдлрд╝рдВрдХреНрд╢рди рез рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдВрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рддреНрд░рд╛ рдорд┐рд▓рддреА рд╣реИред

рдорд╛рдиреНрдпрддрд╛рдУрдВ:

  • N рд░реЗрдВрдЬ рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ [рез.реи,режреж,режрежреж]
  • рд╕рд░рдгреА A рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рд╕реАрдорд╛ рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ [1..1,000,000,000]

рдлреЗрд╕рд▓рд╛:
function sumDigits(num) {
    return String(num).split('').reduce(add);
}

function add(a, b) {
    return Number(a) + Number(b);
}

function descending(a, b) {
    if (a > b) {
        return -1;
    } else if (a < b) {
        return 1;
    } else {
        return 0;
    }
}

function extractHighestTwo(arr) {
    return arr.sort(descending).slice(0, 2);
}

function solution(arr) {
    let sums = {};

    arr.forEach(function(num) {
        sum = sumDigits(num);
        if (sums[sum]) {
            sums[sum].push(num);
        } else {
            sums[sum] = [num];
        }
    });

    result = Object.values(sums)
        .filter(nums => nums.length >= 2)
        .map(extractHighestTwo)
        .map(nums => nums.reduce(add))
        .sort(descending)[0];

    console.log(result || -1);
    return result || -1;
}
solution([51, 71, 17, 42]); // 93
solution([42, 33, 60]); // 102
solution([51, 32, 43]); // -1

/*
:
-   
-    
    -     
    -        :
        -         ,  
    -        :
        -    ,  ,  ,    
-      (   "",      )
-  ,    
-   ,    ,   ,  
-       
-           -1,     
*/

/*
   :
function solution(arr) {
    let sums = {};

    arr.forEach(num => {
        sum = String(num).split('').reduce((a, b) => Number(a) + Number(b));
        
        sums[sum] ? sums[sum].push(num) : sums[sum] = [num];
    });

    result = Object.values(sums)
        .filter(nums => nums.length >= 2)
        .map(nums => nums.sort((a, b) => b - a).slice(0, 2))
        .map(nums => nums.reduce((a, b) => a + b))
        [0]

    console.log(result || -1);
    return result || -1;
}
solution([51, 71, 17, 42]); // 93
solution([42, 33, 60]); // 102
solution([51, 32, 43]); // -1
*/


рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 3


рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдПрди рдЕрдХреНрд╖рд░ "рдП" рдФрд░ / рдпрд╛ "рдмреА" рд╕реЗ рдорд┐рд▓рдХрд░ред рдПрдХ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдХреНрд╖рд░ рдХреЛ рд╡рд┐рдкрд░реАрдд ("a" рд╕реЗ "b" рдпрд╛ "b" рд╕реЗ "a") рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рд╕рдорд╛рдзрд╛рди рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ:

  • рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ S рд▓реЗрддрд╛ рд╣реИ
  • рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рддреАрди рд╕рдорд╛рди рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ

рдЙрджрд╛рд╣рд░рдг:

  1. S = "baaaaa", рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ 1. рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рддреАрди рд╕рдорд╛рди рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ ("рдмрд╛рдмрд╛") рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  2. S = "baaabbaabbba", рдлрд╝рдВрдХреНрд╢рди 2 рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдЖрдк рдЪрд╛рд░ "рд╡реИрдз" рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "bbaabbaabbaa"ред
  3. рдПрд╕ = "рдмрд╛рдмрд╛рдм", рдлрд╝рдВрдХреНрд╢рди 0 рджреЗрддрд╛ рд╣реИред

рдорд╛рдиреНрдпрддрд╛рдУрдВ:

  • N рд░реЗрдВрдЬ рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ [0..20000]
  • рд╕реНрдЯреНрд░рд┐рдВрдЧ S рдореЗрдВ рдХреЗрд╡рд▓ "a" рдФрд░ / рдпрд╛ "b" рдЕрдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВ

рдлреЗрд╕рд▓рд╛:
function numberOfMovesForStreak(streak) {
    let length = streak.length - 2;

    while (length % 3 !== 0) {
        length++;
    }

    return length / 3;
}

function solution(input) {
    const streaks = [];
    let temp = '';

    for (let i = 0; i < input.length; i++) {
        if (input[i] === input[i - 1]) {
            temp += input[i];
        } else {
            if (temp.length > 2 && temp.length !== 0) {
                streaks.push(temp);
            }
            temp = input[i];
        }
    }
    if (temp.length > 2) {
        streaks.push(temp);
    }

    console.log(streaks.map(numberOfMovesForStreak).reduce(((a, b) => a + b), 0));
    return streaks.map(numberOfMovesForStreak).reduce(((a, b) => a + b), 0);
}
solution('baaaaa'); // 1
solution('baaabbaabbba'); // 2
solution('baabab'); // 0

/*
 ,      :
   3-5   ,   1 
 6-8   - 2 
 9-11  - 3 
:
-     ,   3     
-  ,   3     ,  
    - ""   :
        -   
        -  2
        -     ,  3
        -   3   
    -   
*/


рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╣реИрдкреНрдкреА рдХреЛрдбрд┐рдВрдЧ!

All Articles