В пролете

В пролете

Предыстория:

Наткнулся я недавно на забавную вакансию(не сказать, что я активно ищу работу, но на что-то интересное обращаю внимание) вот там были неплохие условия, обещали много чего показать, сделать весь проект "правильно", показать что из себя представляет React, а я с ним не работал, отсюда любопытство... ну и написал я им.

Отклик

Первый отклик от них пришел быстро отвечал некто Павел Пузиков - хз, настоящие ФИО или нет(вряд ли,ИМХО). Попросил помимо того, что в резюме сделать тестовое задание и рассказать о себе что-либо ценное/интересное и показать какие-нибудь свои работы. Я им отправил ссылку на битбакет свой и попросил подождать с тестовым, ибо свободного времени раньше чем чеерз день у меня не намечалось.

Само задание

привожу его как оно было представлено мне(решение ниже, если кто-то захочет порешать сам - в решение не подглядывайте сразу)

An integer X and a non-empty zero-indexed array A consisting of N integers are given. 
We are interested in which elements of A are equal to X and which are different from X. 
The goal is to split array A into two parts, such that the number of elements equal to X in the first part is the same as the number of elements different from X in the other part. 
More formally, we are looking for an index K such that: 0 ≤ K < N and the number of elements equal to X in A[0..K−1] is the same as the number of elements different from X in A[K..N−1]. 
For K = 0, A[0..K−1] does not contain any elements.
For example, given integer X = 5 and array A such that:
A = [5, 5, 1, 7, 2, 3, 5]
K equals 4, because:
 two of the elements of A[0..3] are equal to X, namely A[0] = A[1] = X, and
two of the elements of A[4..6] are different from X, namely A[4] and A[5].

 Write a function solution($X, $A); that, given an integer X and a non-empty zero-indexed array A consisting of N integers, returns the value of index K satisfying the above conditions. 
If more than one index K satisfies the above conditions, your function may return any of them. If there is no such index, the function should return −1.
For example, given integer X and array A as above, the function should return 4, as explained above.
Assume that:
 N is an integer within the range [1..100,000];
X is an integer within the range [0..100,000];
Each element of array A is an integer within the range [0..100,000].

 Complexity:
 Expected worst-case time complexity is O(N);
Expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments);
Elements of input arrays can be modified.

минут 10-15 пытался понять что от меня в итоге хотят, еще примерно минут 40 писал и дебажил решение

window.onload = function(){
    
    var n = 7,
    arr = get_arr(n),
    x = 5,
    k = get_answer(arr,x);

    console.log("массив: " + arr);
    console.log("x = " + x);
    console.log("k(ответ) = " + k);
}

function get_answer(arr, x){
    var all_с = cur_c = k = 0;

    for (var i = 0; i < arr.length; i++ ){
        if (arr[i] == x){
            all_с++;
        }
    }
    if (all_с == arr.length){
        return k;
    }

    var backSide = arr.length;
    for (var i = 0; i < arr.length; i++){
        backSide--;
        
        if (arr[i] == x){
            cur_c++;
        }

        if (backSide - (all_с - cur_c) == cur_c){
            k = i+1;
            return k;
        }
    }

    return -1;
}

function get_arr(n){
    var arr = [5, 5, 1, 7, 2, 3, 5];//можно вписать любые числа или вообще написать генератор случайных в функции(в n для этого длину массива и передаю желаемую)
    return arr;
}

решение легко подключается в любой html файл и срабатывает по автозагрузке(в консоль выводит результат), все это я запаковал в архив и отправил... На истину в первой инстанции не претендую, но работает оно неплохо, но, возможно, я просто не нашел каких-то ошибок)

Ожидание

Почему-то мне не спешили отвечать, подождав пару дней я о себе напомнил, попросили немного подождать, сославшись на большое количество желающих - ок, подождем)

Еще ожидание

Прошла еще неделька, мне так и не ответили

ИТОГ

Как итог хотелось бы сказать пару слов тем, кто нанимает/ищет программистов на работу.

Если вы попросили выполнить тестовое задание, а человек его выполнил(потратил свое время), то будьте добры хотя бы посмотрите его, и если он вам не подходит, прямо так ему об этом и напишите.

Сам я слегка ошибся в задании, точнее не до конца внимательно его прочел, в моем решении функция названа не так как они хотели, может поэтому на меня и забили?) Решили что человек решивший, но не на столько щепитильный им не подходит) ну так и написали бы, что читать надо внимательнее, у меня бы вопросов не было, а так хз почему пролетел.

Но я бы все равно хотел узнать есть ли ошибка в моем решении или нет, потому что сам сделать вариант когда оно не сработает/сработает не так как надо пока придумать не смог.

2015-02-20 22:56:00