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

with-love-from-siberia 20.02.2011 22:36

float,
значит надо переделать алгоритм, чтобы итераций было не больше чем символов в строке. Посмотрите мой пост выше.

B@rmaley.e><e 20.02.2011 22:37

with-love-from-siberia, приведите код, а я придумаю контрпример (не забудьте протестировать для начала на уже имеющихся примерах).

monolithed 20.02.2011 23:21

String.prototype.at = function(str) {
    var tl = this.length, sl = str.length;
    for(var i=j=0; i<tl; i++) {
        if(this[i] == str[j] && sl == ++j) return ++i-j;
    }
    return -1;
}

var s1 = 'aababababaO_o', l1 = 'ababaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';

alert([
    [s1.at(l1), s1.indexOf(l1)],
    [s1.at(l2), s1.indexOf(l2)],
    [s1.at(l3), s1.indexOf(l3)],
    [s1.at(l4), s1.indexOf(l4)]
].join('\n') );


:)

float 20.02.2011 23:33

String.prototype.at = function(str) {
    var tl = this.length, sl = str.length;
    for(var i=j=0; i<tl; i++) {
        if(this[i] == str[j] && sl == ++j) return ++i-j;
    }
    return -1;
}

var s1 = 'aababababaO_o', l1 = 'aabaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';

alert([
    [s1.at(l1), s1.indexOf(l1)],
    [s1.at(l2), s1.indexOf(l2)],
    [s1.at(l3), s1.indexOf(l3)],
    [s1.at(l4), s1.indexOf(l4)]
].join('\n') );

:)

B@rmaley.e><e 20.02.2011 23:34

String.prototype.at = function(str) {
    var tl = this.length, sl = str.length;
    for(var i=0, j=0; i<tl; i++) {
        if(this[i] == str[j] && sl == ++j) return ++i-j;
    }
    return -1;
}

var s1 = 'ababc', l1 = 'abac';

alert([
    [s1.at(l1), s1.indexOf(l1)]
].join('\n') );

monolithed 20.02.2011 23:41

String.prototype.at = function(str) {
    var tl = this.length, sl = str.length;
    for(var i=j=0; i<tl; i++) {
        if(this[i] == str[j] && sl == ++j && sl != i) return ++i-j;
    }
    return -1;
}

var s1 = 'ababc', l1 = 'abac', l2 = 'bc', l3 = 'aa', l4 = 'O_o';
 
alert([
    [s1.at(l1), s1.indexOf(l1)],
    [s1.at(l2), s1.indexOf(l2)],
    [s1.at(l3), s1.indexOf(l3)],
    [s1.at(l4), s1.indexOf(l4)]
].join('\n'));


:D

B@rmaley.e><e 20.02.2011 23:48

String.prototype.at = function(str) {
    var tl = this.length, sl = str.length;
    for(var i=j=0; i<tl; i++) {
        if(this[i] == str[j] && sl == ++j && sl != i) return ++i-j;
    }
    return -1;
}

var s1 = 'aabac', l1 = 'abac';
 
alert([
    [s1.at(l1), s1.indexOf(l1)]
].join('\n'));

float 20.02.2011 23:50

ааай. Ребят. Сложность в том, что при достаточной длине строки, на определённом этапе создаются перекрывания. Их число подстрока-1(так вроде), т.е. функция зависит от параметров.
monolithed
else блок там не для красоты стоит

with-love-from-siberia 21.02.2011 00:10

Цитата:

Сообщение от B@rmaley.e><e
приведите код

Давайте наоборот. Простите, но мне уже лениво сегодня заниматься задачками для 1-2 курса спецфак-та. Я привел неполное словесное описание алгоритма. Предлагаю форуму завершить его формулировку и все вопросы отпадут.

Ну может быть завтра напрягусь (-:

float 21.02.2011 00:34

Цитата:

Я привел неполное
Что-то в нём я не заметил путь обхода проблемы описанной выше.


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