Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Задачка на сообразительность (https://javascript.ru/forum/offtopic/15269-zadachka-na-soobrazitelnost.html)

Matre 19.02.2011 18:10

Задачка на сообразительность
 
Написать функции для поиска подстроки в строке (аналог String.prototype.indexOf) и разделения строки на массив по разделителю (аналог String.prototype.split). Встроенные функции использовать запрещено, за исключением String.prototype.charAt. Использовать только один цикл.

with-love-from-siberia 19.02.2011 18:17

А сами Вы уже не можете? Вон и звание у Вас - Профессор.

Matre 19.02.2011 18:26

Могу. Только какой смысл сразу выкладывать всё.

Gvozd 19.02.2011 18:58

а в чем смысл-то?
это задачи не на сообразительность

Kolyaj 19.02.2011 19:02

Это задачи первого курса специализированного факультета.

Matre 19.02.2011 19:13

О да, умные люди из интернета опять меня сделали. Мешок вам на голову и в гараж.

Интересно получается: я выкладываю задачу, дебил не может её решить, говорит мне, что это я дебил и в итоге я и правда с точки зрения остальных выгляжу дебилом. Обратите внимание, что я никого конкретно не назвал дебилом, так что не сочтите за грубость.

P. S. я уже неделю не пью рисперидон!

with-love-from-siberia 19.02.2011 19:38

Это типовая задача для студента-прикладника. Здесь нет и намека на задачу на сообразительность.

Matre 19.02.2011 19:48

Повторю свою вторую любимую цитату (конечно, после гаражей и мешка на голове).

Это просто слова. Я тоже могу говорить слова. А вы сделайте что-нибудь.

Vulkan 19.02.2011 20:25

Задачки то конечно не на сообразительность, а на лёгкий экзамен. Быстренько состряпал, возможно что-то не учёл, но результаты не отличаются от стандартных функций:
function TestSplit(string, sep) {
    var words = [],
        word = '',
        char = '';
    string = string + sep;
    for (i = 0; i < string.length; i++) {
        char = string.charAt(i);
        if (char == sep) {
            words.push(word);
            word = '';
        } else {
            word += char;
        }
    }
    return words;
}

alert((TestSplit('1 2 3 4 5', ' ')).join(' - ')); // мой вариант
alert(('1 2 3 4 5'.split(' ')).join(' - ')); // стандартный вариант


function TestIndexOf(string, s) {
    var char = '';
    for (i = 0; i < string.length; i++) {
        char = string.charAt(i);
        if (char == s) {
            return i;
        }
    }
}

alert(TestIndexOf('1 2 3 4 5', '4')); // мой вариант
alert('1 2 3 4 5'.indexOf('4')); // стандартный вариант

Kolyaj 19.02.2011 20:54

Vulkan,
параметры sep и s могут быть произвольной длины.


Часовой пояс GMT +3, время: 21:19.