JavaScript Fundamentals - 07. Arrays Homework


0


Пускам тема за домашното с цел всичко около него да се дискутира тук



Отговори



0

Колеги, вече ще се побъркам. Каквото и да правя кода не връща отговор за 07. Binary search.

function solve(binary){ var myArray = +binary[0] len = binary[0], x = binary[binary.length -1], newArray = +binary[0], max = len - 1, min = 2, guess = 0; while (min < max) { guess = Math.floor((min + max) / 2); if (x == +newArray[guess]){ return guess; } else if (x < +newArray[guess]){ max = guess - 1; } else { min = guess + 1; } } }

А пък за 05. Selection sort ми изкарва както си трябва, но Bg Coder не ми го признава 0/100:

function solve(arr) { var myArray = arr[0].split('\n'), newArray = arr.slice(1), n = +arr[0], i, j, smaller; for (var j = 0; j < n; j += 1) { smaller = +newArray[j]; for (var i = j; i < n; i += 1) { if (+newArray[i] < smaller) { smaller = +newArray[i]; newArray[i] = +newArray[j]; newArray[j] = smaller; } } console.log(newArray[j]); } }


от srntclub (166 точки)


0
Колега не съм стигнала тази задача, но провери дали аутпута ти в желания формат.

от piperche (296 точки)

0
да, правилен е формата - изкарва всяко число на нов ред и са подредени

от srntclub (166 точки)



0

Относно 5. Selection sort

Предлагам едно доста лудо решение, НО... някой може ли да ми каже кои случаи не съм покрила та ми връща 70/100??? :(

function solve(args) { var i, ordered=[], output=[]; n = args[0].split('\n').map(Number).slice(0, 1), numbers = args[0].split('\n').map(Number).slice(1), currentN = 0, newPos = 0; for(i=0; i<n; i+=1){ currentN = numbers[i]; newPos = numbers[i]; ordered[newPos] = currentN; } for(j=0, len = ordered.length; j<len; j+=1){ if(ordered[j]){ output.push(ordered[j]); } } console.log(output.join('\n')); }


от piperche (296 точки)


1

И аз да се включа във въпросите за 07.Binary Search... 

Рефакторирах си кода от C#2 за същата задача, която там е 100/100, за да става за JS, само че тука BgCoder дава само 20/100 :-))))

Странното е, че нулевият тест при мен си дава '6' през NodeJS, а BgCoder упорито твърди, че връщам '-1' на него... :-)

Некви идеи за разминавката?


от jorosoft (945 точки)


0
На задачата Prime Numbers има ограничение за паметта 64MB(виж условието в Github: Memory limit: 64MB). Защо тогава при използвана памет 30.31MB BG Coder ми дава грешка Memory Limit? Използвам алгоритъма Sieve of Eratosthenes, както е по условие.

от todor_ia (132 точки)


1

В BgCoder ограничението е:

Позволена памет: 16.00 MB

Явно има разминаване с ограниченията по условието в github...


от jorosoft (945 точки)

2
Аз, използвайки указания алгоритъм, не се вмествам изцяло или в паметта, или във времето. Надявам се лекторите да уточнят какъв е точно лимита памет - 64 или 16MB?

от todor_ia (132 точки)



0

Само на мене ли след 7-ма задача ми следва 10-та задача или това е за всички.
В BGCoder.


от S.Valkov (0 точки)


1
за всички :)

от srntclub (166 точки)


0
  1. function solve(args){
  2.     function check(args){
  3.         var a = args[0],
  4.             b = args[1],
  5.             i = 0;
  6.         while(true){
  7.             if (a[i] === undefined){
  8.                 if (b[i] === undefined){
  9.                     return '=';
  10.                 }
  11.                 return '<';
  12.             }
  13.             else if (b[i] === undefined){
  14.                 return '>';
  15.             }
  16.             else if (a[i] > b[i]){
  17.                 return '>';
  18.             }
  19.             else if (a[i] < b[i])
  20.                 return '<';
  21.             i += 1;
  22.         }
  23.     }
  24.  
  25.     var res = check(args);
  26.     console.log(res);
  27. }
В bgcoder гърми с 
C:\Windows\TEMP\tmp643B.tmp:105
            else if (b[i] === u...
а през Node при мен работи, някакви идеи ?

от kolchakov96 (237 точки)


0

и при мен е така,пробвай да добавиш 

var args = args[0].split('\n');

преди var a= args[0];

(началото на функцията)


от HackNinja (0 точки)

0

Пак не става, втората дума я дава undefined 


от kolchakov96 (237 точки)



0

Здравейте колеги,

На 5-та зад. Selection Sort следвам дословно алгоритъма оттук, но въпреки това bgcoder ми дава само 30/100.

Надявам се някой от вас да открие проблемът:

function solve(args) { var i, j, indexMin, swap, input = args[0].split('\n'), n = +input[0], numbers = input.slice(1); for (i = 0; i < n - 1; i += 1) { indexMin = i; for (j = i + 1; j < n; j += 1) { if (numbers[j] < numbers[indexMin]) { indexMin = j; } } if (indexMin !== i) { swap = numbers[i]; numbers[i] = numbers[indexMin]; numbers[indexMin] = swap; } } console.log(numbers.join('\n')); }


от pepsi_555 (1932 точки)


1
function solve(args) { var j, i, minNumber, input = args[0].split('\n'), n = +input[0], // numbers.length numbers = input.slice(1); // copy the array from the first element => the numbers for(i = 0; i < n; i += 1 ){ minNumber = +numbers[i]; for(j = i + 1; j < input.length; j += 1){ if(minNumber > +numbers[j]) { minNumber = numbers[j]; numbers[j] = numbers[i]; numbers[i] = minNumber; } } } console.log(numbers.join('\n')); }
Така не работи ли ? Използвал съм същия алгоритъм, но с малко по-различен подход от твоя : )

от tabula (2134 точки)

0

Благодаря, Тошко. :) Така дава 100. И със j< n вместо j < input.length дава 100.

Чудя се защо при моя подход има проблем. Лошото е, че минават нулевите тестове и не виждам бъга.


от pepsi_555 (1932 точки)


0
Здравейте някави идей защо на 6 Ferquent Number ми минава нулевия тест и после ми дава само грешки. Пробвах с два варианта ако имаме еднакъв на брой повтарящи се числа. Първо да изкарам по-малко, след което да изкарам по-голямото, но и  в двата случая е 0/100
function frequent(input) { var compare=Number.MAX_SAFE_INTEGER, count=1, countMax=1; for (var i = 0; i < input.length; i+=1) { for (var k = 0; k < input.length; k+=1) { if(k!=i){ if(+input[i]==+input[k]){ count+=1; } } } if (count>=countMax) { countMax=count; if (compare< +input[i]) { }else{ compare=+input[i]; } count=1; }else{ count=1; } } console.log(compare+" ("+countMax+' times)'); }

06. Most frequent nu

06. Most frequent number

mber


от djingibi (99 точки)


0
Съвсем конкретна идея - защото в zero теста входът етакъв:

['13', '4', '1', '1', '4', '2', '3', '4', '4', '1', '2', '4', '9', '3'];

а във всички други тестове е такъв:

['13\n4\n1\n1\n4\n2\n3\n4\n4\n1\n2\n4\n9\n3']... ако не бъркам...


от AyrFX (948 точки)


0
function solve(args) { args.shift(); args.sort(function(a, b) { return a - b; }); } console.log(solve(['6', '3', '4', '1', '5', '2', '6'])););

На 5-та задача искам да пробвам да изкарам резултата с join('\n'); но не мога да се усетя как да го добавя след sort. :) (права го за кефа) ако може някои да ми даде насока ще е чудесно :)




0
function solve(args) { args.shift(); args.sort(function(a, b) { return a - b; }); console.log(args.join('\n')); } solve(['6', '3', '4', '1', '5', '2', '6'])

от vaskoelenkov (279 точки)


0

Може ли някой да погледне решението ми на задача 05. Selection sort и да ми каже защо BGCoder ми дава 40/100, при положение, че при мен всичко си излиза както трябва. Благодаря!

function selectionSort(args) {

    let numArr = args.map(Number),

        uniqArr = [...new Set(numArr)], // make new array with unique numbers - remove equal numbers

        smallest,

        i,

        j;

    for (i = 0; i < uniqArr.length - 1; i++) {

        smallest = uniqArr[i];

        for (j = i + 1; j < uniqArr.length; j++) {

            if (uniqArr[j] < smallest) {

                smallest = uniqArr[j];

                uniqArr[j] = uniqArr[i];

                uniqArr[i] = smallest;

            }

        }

    }

    console.log(uniqArr.join('\n'));

}

Като вход задавам: selectionSort(['6', '3', '4', '1', '5', '2', '6']);

Пробвах и с selectionSort(['6\n3\n4\n1\n5\n2\n6']);

като разбира се split-вам с '\n', но така BGCoder дори дава 0/100.


от Campo (85 точки)