Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/40: Рейтинг темы: голосов - 40, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 23.09.2018
Сообщений: 11

В одномерном массиве найти количество повторяющихся последовательностей символов с длиной больше или равной двум

11.11.2018, 23:55. Показов 8775. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие : В одномерном массиве символов найти количество повторяющихся последовательностей символов с длиной больше или равной двум. Например, в строке «abcdbabcba» ответ: «ab», «bc», «abc», «ba». Не использовать строковые функции.

Подскажите, пожалуйста, как можно это реализовать для последовательностей с длиной больше 2 символов, и как правильно подсчитать количество повторяющихся последовательностей?

Прикрепляю набросок кода:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let a = prompt("Введите символьный массив");
let result = [];
let count = 0;
for(let i = 0; i < a.length-1; i++)
{
    result.push(a[i] + a[i+1])
}
for(let i = 0; i < result.length; i++)
{
    for(let j = 0; j < result.length; j++)
    {
        if(result[i] == result[j])
            count ++;
    }
}
 
alert(count);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2018, 23:55
Ответы с готовыми решениями:

В одномерном массиве символов найти количество повторяющихся последовательностей символов
В одномерном массиве символов найти количество повторяющихся последовательностей символов с длиной больше или равной двум. Например, в...

В одномерном массиве символов найти количество повторяющихся последовательностей символов
Добрый вечер! Есть такая программа:В одномерном массиве символов найти количество повторяющихся последовательностей символов с длиной...

В одномерном массиве символов найти количество повторяющихся последовательностей символов
В одномерном массиве символов найти количество повторяющихся последовательностей символов с длиной больше или равной двум. Например, в...

60
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 07:00
Студворк — интернет-сервис помощи студентам
diadiavova, зачем тогда опять же выделять slice, если и так понятно в контексте какого метода описание?
Цитата Сообщение от diadiavova Посмотреть сообщение
а не просто слово из текста?
может быть и такое.
Только это мало что изменит. Ну по крайней мере для моего понимания спецификации.

Цитата Сообщение от diadiavova Посмотреть сообщение
Каким образом это может пролить свет на обсуждаемый вопрос?
Да боже ж ты мой!
В общем интерфейсе и интерфейсе зависимого объекта, полиморфным агентом запросто может стать условие на треклятый this.
Общий интерфейс => проверка на this => Array ? бла-бла : String ? бла-бла : throw new Error('unsupported object');
https://codepen.io/qwerty_wasd/pen/qQqzXz
JavaScript
1
2
3
4
5
6
7
8
9
10
11
Object.prototype.abc = function() {
  (this instanceof String) ?
    console.log('that method implemented String.prototype') :
  (this instanceof Array) ?
    console.log('that method implemented Array.prototype') :
  console.log('unsupported object');
}
let a ='abc';
// расскоментировать ниже
//a=[1,2,3];
a.abc();
Добавлено через 2 минуты
Цитата Сообщение от diadiavova Посмотреть сообщение
А ничего, что там this следует сразу за its
its this - "'это" указывая пальцем \ "'этот" подразумевая обсуждаемый предмет

Добавлено через 2 минуты
Цитата Сообщение от diadiavova Посмотреть сообщение
мы говорим о методах с разной сигнатурой
полиморфизм не подразумевает кстати собой идентичную сигнатуру. Такое может реализовываться. Ключевое слово может.

Добавлено через 6 минут
diadiavova, давайте заканчивать - Вы при своем, я при своем. Ну надоедает спорить
Ничего хорошего он(спор) все-равно не даст - проверено. Не знаю как Вы, а я очень эмоциональный - у меня стул горит, мебель жалко
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 08:15
Отвлекусь от вышеприведенного словоблудия.
В ответах товарищей klopp и diadiavova пока использовались строковые функции.
Надеюсь, товарищи эти недостатки устранят в обновленных версиях проектов.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
13.11.2018, 08:27
Цитата Сообщение от amr-now Посмотреть сообщение
ответах товарищей klopp и diadiavova пока использовались строковые функции.
в какой строке у меня такие функции?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 08:47
Для себя оставлю здесь на память:
ad hoc-полиморфизм — это полиморфизм, основанный на различении типов. Для различных типов аргументов используется разный код функции, но с одинаковым именем.

Один классический пример — это перегрузка (overloading) метода:
C#
1
2
3
4
5
class C
{
    public void f(int x) { Console.WriteLine("C.f(int)"); }
    public void f(string x) { Console.WriteLine("C.f(string)"); }
}
Здесь имя f привязано к двум различным методам, и компилятор выбирает тот или иной метод в зависимости от типа аргумента. Это пример статического ad hoc-полиморфизма: типы должны быть известны на этапе компиляции, и компилятор точно знает, который из методов будет выполнен.

Другой пример ad hoc-полиморфизма — это переопределение (overriding) виртуального метода:
C#
1
2
3
4
5
6
7
8
9
class B
{
    public virtual void f(int x) { Console.WriteLine("B.f(int)"); }
}
 
class D : B
{
    public override void f(int x) { Console.WriteLine("D.f(int)"); }
}
Здесь также происходит различение по типам, но на этот раз — по типу неявного нулевого аргумента this. Выбор переопределённого метода откладывается на момент выполнения; на момент компиляции компилятор точно не знает, какой из группы переопределённых методов будет выполнен.
Это пример динамического ad hoc-полиморфизма. Его другое название - полиморфизм наследования.

И вторая крупная форма полиморфизма - Параметрический полиморфизм - когда будет выполняться одна и та же функция вне зависимости от типов аргументов.
Параметрический полиморфизм является истинной формой полиморфизма, делая язык более выразительным и существенно повышая коэффициент повторного использования кода. Традиционно ему противопоставляется Ad hoc полиморфизм (мнимая форма).
Тривиальный пример для языков с наследованием (например, C#) — функция, работающая с объектом некоторого класса C, часто может без изменений работать с объектом порождённого от C класса (этот вид полиморфизма часто называют полиморфизм включения). Менее тривиальный пример — generic-методы, которые могут, в зависимости от generic-параметра, работать с разными типами объектов. Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
class Enumerable
{
    public T First(this IEnumerable<T> seq)
    {
        using (IEnumerator<T> en = seq.GetEnumerator())
        {
            if (!en.MoveNext())
                throw new InvalidOperationException();
            return en.Current;
        }
    }
}
Или внутри функции различать входные данные:
JavaScript
1
2
3
4
5
6
7
Object.prototype.abc = function() {
  (this instanceof String) ?
    console.log('that method implemented String.prototype') :
  (this instanceof Array) ?
    console.log('that method implemented Array.prototype') :
  console.log('unsupported object');
}
---------
Упомянули Subtype полиморфизм — это когда есть методы в разных классах которые делают то же самое, им надо дать одинаковое имя и сделать чтобы эти классы реализовывали единый интерфейс или наследовали единый абстрактный класс с этим абстрактным методом.
(Причем, насколько понимаю, здесь упор делается на соответствие интерфейсу, а не поиск того, является ли функция одной, или их несколько одноименных.)

Добавлено через 3 минуты
Наличие строковой функции:
Цитата Сообщение от klopp Посмотреть сообщение
JavaScript
1
2
for(let x = 2; x < str.length - 1; x++){
* * * * for(let i = 0, flag = false; i < str.length - x; i++, flag = false)
{
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 09:01
amr-now, здравствуй.
Цитата Сообщение от amr-now Посмотреть сообщение
Наличие строковой функции:
JavaScript
1
2
3
for(let x = 2; x < str.length - 1; x++){
   for(let i = 0, flag = false; i < str.length - x; i++, flag = false)
}
Здесь только свойство length. А речь в условии шла о методах.

Ни разу не брался за С# всерьез, консольные приложения не в счет, но мне кажется этот язык ближе к Java, чем к крестам. Хоть он и имеет корни от обоих. Не накладывает ли это отпечаток на реализации интерфейсов, классов и т.д.?

Насколько я знаю он не поддерживает множественное наследование.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 09:15
По поводу множественного наследования:
сейчас в языках программирования пошла мода костылить множественное наследования трейтами (миксинами).
Фактически они физически не внедряются в цепочку наследования класса.
Компилятор просто костыльно знает, что в случае чего при обращении к определенному якобы нестатическому методу класса надо обратиться к методу миксина.
Насколько понимаю, так реализовано в TypeScript, в интерфейсных методах по умолчанию в Java, и планируют включить интерфейсные методы по умолчанию в C#.
Это те же самые миксины. Они костыльно прицепляются к классу и якобы видны из класса.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
13.11.2018, 09:21
Цитата Сообщение от amr-now Посмотреть сообщение
Наличие строковой функции:
вы имеете ввиду str.length? или что? я не понял где там функцию вы увидели? это свойство, если че.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 09:29
klopp, в Javascript свойства делятся на две формы:
- свойства-значения.
- свойства-функции.
Насколько понимаю, str.length - типичный геттер, то есть явно строковая функция.

Кстати, прикольный момент - если в свойство, которое не геттер и не сеттер, толкнуть функцию, то свойство становится методом. То есть формально тоже членом-функцией класса
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 09:36
Цитата Сообщение от amr-now Посмотреть сообщение
сейчас в языках программирования пошла мода костылить множественное наследования трейтами (миксинами).
видимо в тех языках, где оно не поддерживается ? В C++ например производный класс может быть порождён из любого числа непосредственных базовых классов.
C++
1
2
3
class A {};
class B {};
class C : public A, public B {};
И это не синтаксический сахар.
Цитата Сообщение от amr-now Посмотреть сообщение
Компилятор просто костыльно знает
вот это не понял. В смысле знает? Он компонует и транслирует, он нифига не знает. Знает среда исполнения, как читать транслированный код. Если код транслируется сразу в машинный - средой исполнения станет железо.
Вы наверное имели ввиду, что в библиотеках, собираемых компоновщиком, так реализовано. Не знал, что именно так дело обстоит в С# и Java.

Добавлено через 3 минуты
amr-now,
Цитата Сообщение от amr-now Посмотреть сообщение
str.length - типичный геттер,
гетер он в контексте С++. Но в контексте JS это просто свойство, не метод.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 11:05
klopp, Qwerty_Wasd, да.
Именно в JavaScript str.length является свойством-значением.
JavaScript
1
2
3
        let str = "abc";
        let descriptor = Object.getOwnPropertyDescriptor(str, "length");
        console.log(descriptor);
Code
1
2
3
4
5
[object Object]: {configurable: false, enumerable: false, value: 3, writable: false}
configurable: false
enumerable: false
value: 3
writable: false
Так что действительно скрипт от klopp не содержит строковые функции.
Признаю, что я был не прав.

Добавлено через 10 минут
---
Хотя свойство-значение с запретом на запись по любому - геттер. Но в синтаксисе JS глубоко законспирированный геттер.
Формально можно считать якобы не геттером

Добавлено через 3 минуты
----
Хотя если среда выполнения просто всегда смотрит дескриптор, то отдельно выделенный геттер для свойства не нужен ))
Среда выполнения лезет в свойства с общим на всех пре-геттером и пре-сеттером.

Добавлено через 28 минут
https://ru.wikipedia.org/wiki/... нформатика)
В сообществе объектно-ориентированного программирования под термином «полиморфизм» обычно подразумевают наследование
Боже мой! Какую дикую чушь иногда пишут в Википедии. Это туши свет...
А потом спрашиваете, почему люди годами не могут разобраться в тонкостях видов полиморфизма...
1
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 11:19

Не по теме:

Цитата Сообщение от amr-now Посмотреть сообщение
В сообществе объектно-ориентированного программирования
Вы правы, логическая цепочка написанного и правда не прослеживается. А кстати что это за сообщество такое? Секта ООП?

0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 11:43
Qwerty_Wasd, ну как сказать "секта"?
ООП изобретали психически больные люди, обладающие различными комплексами неполноценности,
методом проб и ошибок.
Их трудно признать какой-то единой сплоченной сектой...

Сейчас есть современная тема интереснее - война сторонников DDD (ООП-связывания данных) со сторонниками реляционного связывания таблиц.
0
13.11.2018, 12:01

Не по теме:

amr-now, а в чем у них претензии к друг другу? С чего вдруг ООБД vs РБД батлл то начался? Обе модели существуют довольно давно вроде.

0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
13.11.2018, 12:22
----
По статье в Википедии расставлю точки над И.

Из парадигм ООП:
- ООП-наследование - это подвид параметрического полиморфизма - полиморфизм включения.
- ООП-полиморфизм (полиморфизм наследования) - это подвид Ad hoc - динамический полиморфизм с помощью переопределения (override) методов.

Ну и раз пошла такая пьянка,
- ООП-инкапсуляция - это объединение данных и функций для работы с этими данными в нечто единое. И уже потом как опция - возможное сокрытие этих данных.
Кстати при создании экземпляра как раз повторно используются одинаковые функции для работы с данными экземпляра.

Добавлено через 34 секунды
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
а в чем у них претензии к друг другу?
Это очень сложная тема. На несколько книг.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 12:44

Не по теме:

amr-now,

Цитата Сообщение от amr-now Посмотреть сообщение
Это очень сложная тема. На несколько книг.
ну тогда закопали :) А то мы тут реально увлеклись :)



loreleysatellit, соблюдая условия
Цитата Сообщение от loreleysatellit Посмотреть сообщение
В одномерном массиве символов найти количество повторяющихся последовательностей символов с длиной больше или равной двум. Не использовать строковые функции.
вот Вам еще вариант.


Найдет все возможные комбинации символов из строки и выведет в объекте кол-во повторений для каждого - https://codepen.io/qwerty_wasd/pen/XyNOLq
Ни одного метода String.prototype.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const string = 'abcdbabcba';
const getCount = str => {
  let arrChar = Array.from(str),
      incAChar = {}, tmp = [], res = [];
  Array.from(str, v => {
    tmp = [...Array(str.length + 1).keys()].map((e, i) => Array.from(arrChar).splice(0, i))
      .filter(e => e.length >= 2)
      .map(e => e.join``);
    res = [...res,...tmp];
    arrChar = arrChar.splice(1);
  });
  res = [...new Set(res)];
  for (let i = 0; i < res.length; i++) {
    let regex = new RegExp(res[i],'g');
    tmp = [];
    while (z = regex.exec(str) !== null) tmp.push(z.index);
    incAChar[res[i]]=tmp.length;
  }
  return incAChar;
}
console.log(getCount(string));
/*
Object {
  ab: 2,
  abc: 2,
  abcb: 1,
  abcba: 1,
  abcd: 1,
  abcdb: 1,
  abcdba: 1,
  abcdbab: 1,
  abcdbabc: 1,
  abcdbabcb: 1,
  abcdbabcba: 1,
  ba: 2,
  bab: 1,
  babc: 1,
  babcb: 1,
  babcba: 1,
  bc: 2,
  bcb: 1,
  bcba: 1,
  bcd: 1,
  bcdb: 1,
  bcdba: 1,
  bcdbab: 1,
  bcdbabc: 1,
  bcdbabcb: 1,
  bcdbabcba: 1,
  cb: 1,
  cba: 1,
  cd: 1,
  cdb: 1,
  cdba: 1,
  cdbab: 1,
  cdbabc: 1,
  cdbabcb: 1,
  cdbabcba: 1,
  db: 1,
  dba: 1,
  dbab: 1,
  dbabc: 1,
  dbabcb: 1,
  dbabcba: 1
}
*/
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
13.11.2018, 13:10
[/QUOTE]
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
зачем тогда опять же выделять slice, если и так понятно в контексте какого метода описание?
Затем, что при написании веб-версий любых нормативных документов используются определенные правила форматирования этих документов. Каковы правила, принятые у экмы - я не знаю, видимо на сайте где-то есть описание. Но в данном случае вполне очевидно, что особым образом выделяются элементы языка о которых идет речь и таким образом они отделяются от текста, который их описывает. Я заглядывал в код страницы, там для this даже специальный элемент используется, которого нет в стандартном наборе элементов хтмл.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
может быть и такое.
Только это мало что изменит.
Вообще-то это ключевой момент для понимания процитированного абзаца. Именно он объясняет, что имеется в виду под утверждением о том, что данный метод может применяться не только к массивам.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Да боже ж ты мой!
Полагаю, ты меня с кем-то путаешь
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
В общем интерфейсе и интерфейсе зависимого объекта, полиморфным агентом запросто может стать условие на треклятый this.
Общий интерфейс => проверка на this => Array ? бла-бла : String ? бла-бла : throw new Error('unsupported object');
При чем тут несколько интерфейсов с разрешением коллизий? Да и каким тут боком полиморфизм приплыл - я тоже не понял. Ну да ладно.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
its this - "'это" указывая пальцем \ "'этот" подразумевая обсуждаемый предмет
То есть фраза its this value - это нормальный английский? Ну ладно, не буду спорить, в конце концов, не так уж хорошо я его и знаю.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
полиморфизм не подразумевает кстати собой идентичную сигнатуру.
Если говорить о JavaScript, то тут конечно - делай что хочешь, но плюсы ведь статически типизированный язык? Или я ошибаюсь (плюсов я на самом деле не знаю)? Нет, я, конечно, понимаю, что при желании можно и такое реализовать, но я не понимаю зачем и из чего следует, что так оно и реализовано. Кроме того приведенный код проверяет тип this, а я уже показал, что слайс массива, если ему в качестве this передать строку, все равно вернет массив, в отличие от слайса строки.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Ну надоедает спорить
Ну так вообще-то споры не заканчивают. Нельзя написать что-то, что не может быть оставлено без ответа и сопроводить эту запись фразой "давай заканчивать".
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Ничего хорошего он(спор) все-равно не даст - проверено.
Ну почему же? Мне, например, просто интересно, что ты хотел сказать и как это обосновываешь. Что-то доказать для меня не принципиально, но, возможно что-то новое узнаю.
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
а я очень эмоциональный - у меня стул горит, мебель жалко
Поставил "спасибу" за ответ, но исключительно ради спасения мебели ))
Цитата Сообщение от amr-now Посмотреть сообщение
В ответах товарищей klopp и diadiavova пока использовались строковые функции.
Мне вообще-то тоже интересно где именно. Что касается первой версии решения, то там я сам об этом написал, во второй, насколько я помню, я вообще со строками не работал, так что непонятно где я их там использовал.
https://www.cyberforum.ru/post13054031.html

Добавлено через 11 минут
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Ни одного метода String.prototype.
То есть слайс нельзя, а регулярки и удаление дубликатов Set'ом можно? Надо же какой хитрец
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 13:14
diadiavova, Ну вот ! Ты опять поджигаешь мне стул))
Про спор - последнее слово я оставил за тобой, дальше я не продолжу.
Цитата Сообщение от diadiavova Посмотреть сообщение
регулярки и удаление дубликатов Set'ом можно
ну так ведь не String методы

Exec это метод RegExp.prototype и он не делегирован больше никому, Set конструктор Set.prototype. Вроде честно.
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,149
Записей в блоге: 43
13.11.2018, 13:35
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Вроде честно.
Ну формально - конечно. Но все-таки, если уж говорить по-чесноку, то подобные ограничения обычно вводятся для того, чтобы не использовались готовые удобные методы обработки строк. Формально методы регулярки - не есть методы строки, но они обрабатывают строки, причем даже более эффективно чем методы класса String, так что боюсь это жульничество. Что касается Set'а, то он выполняет сравнение строк для выявления дубликатов. Конечно можно сказать, что дескать, мало ли что там внутри, да и сравнивать можно с помощью оператора == и пр. Но как по мне, так это тоже жульничество, особенно после длинных рассуждений о том, как слайсы реализованы на плюсах(которые уж точно к вопросу отношения не имеют).

Добавлено через 7 минут
Еще пару слов относительно реализаций, содержащих полную информацию обо всех кобинациях, содержащихся в строке. Когда я первоначально обдумывал код, я рассматривал подобный вариант, но потом подумал, что будет, если массив окажется достаточно длинным. Там ведь комбинаций будет "вагон и маленькая тележка", они засрут всю память, причем объем занимаемой памяти будет расти лавинообразно по мере увеличения длины исходного массива. В первой реализации я эту проблему решил путем сохранения только самых длинных из повторяющихся комбинаций. Кроме того, там я вроде как решил еще одну проблему производительности, а именно - сбросил обход заведомо пустых кобинаций. Там есть еще над чем поработать, но в общем это должно работать неплохо. Единственное место где я в том коде "подговнял" - это то место где я интерпретировал результаты. Там где-то в подсчетах ошибся, в уме выполнял, хотя надо было расписать все. В принципе можно доработать, если не поленюсь(что вряд ли), то сделаю.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.11.2018, 14:09
diadiavova,
Цитата Сообщение от diadiavova Посмотреть сообщение
Формально методы регулярки - не есть методы строки, но они обрабатывают строки, причем даже более эффективно чем методы класса String....
......
Что касается Set'а, то он выполняет сравнение строк для выявления дубликатов.
Хм.. ты прав, в этом ключе я не подумал.
Цитата Сообщение от diadiavova Посмотреть сообщение
на плюсах(которые уж точно к вопросу отношения не имеют
все браузерные движки на сегодняшний день написаны на плюсах. Для того чтобы понимать как JS работает под капотом, я изучаю и его. Что и другим рекомендую.

Доступа к исходникам,где бы я посмотрел как именно реализован тот или иной интерфейс JS, у меня действительно нет. А в доке крайне мало инфы. И написана она в стиле - каждый понимает так как хочет. Еще раз в этом убедился.

При чем здесь полиморфизм и плюсы, понять не сложно - достаточно перечитать тему.

Цитата Сообщение от diadiavova Посмотреть сообщение
плюсы ведь статически типизированный язык? Или я ошибаюсь
нет не ошибаешься. Но это никак не связано с тем, что должен вернуть метод. Он вообще может ничего не вернуть для одного объекта и вернуть что угодно для другого. Почитай например о перегрузке или просто тему перечитай.

Пример что я приводил,
JavaScript
1
2
3
4
5
6
7
Object.prototype.abc = function() {
  (this instanceof String) ?
    console.log('that method implemented String.prototype') :
  (this instanceof Array) ?
    console.log('that method implemented Array.prototype') :
  console.log('unsupported object');
}
лишь абстрактный пример того что я имел ввиду, говоря о том, что метод может быть реализован в классе родителя, и благодаря параметризации делегироваться классам - потомкам. Упираю на это потому, что
Цитата Сообщение от ECMAScript® 2018
The slice function is intentionally generic;
В общем, как я и говорил, этому спору нет конца и края - потеря времени. Как всегда. Оставляю за тобой последнее слово и лично я - всё на этом.

Цитата Сообщение от diadiavova Посмотреть сообщение
В принципе можно доработать, если не поленюсь(что вряд ли), то сделаю.
Было бы супер Это не сарказм. Я серьезно.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
13.11.2018, 14:17
увы, прошлогоднего своего файла с решением подобной задачи я пока не нашёл ни на одном из компов
но точно помню, что в нём использовался метод join ()

уважаемые спорщики-полиморфинисты, Qwerty_Wasd и diadiavova, объясните, пожалуйста, можно ли отнести этот метод к недопустимым в данной задаче "строковым функциям", чтобы я точно знал, стоит ли мне тратить время на восстановление моего прошлогоднего решения, если файла я так и не найду?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2018, 14:17
Помогаю со студенческими работами здесь

В заданном одномерном массиве из n элементов найти количество повторяющихся чисел
В заданном одномерном массиве из n элементов найти количество повторяющихся чисел. Он выводит если например в массиве 1 1 1 3, то кол-во...

Найти количество элементов в одномерном массиве, абсолютная величина которых больше 10
Найти количество элементов в одномерном массиве, абсолютная величина которых больше 10. Можно просто нарисовать на листке схемой и...

составить программу определения числа одинаковых целых чисел к в серии длиной больше 1 в одномерном массиве Х=(х1,х2,…,хn)
type mas=array of integer; var mt,mD:mas; p,k,n,e:integer; begin write('n= '); readln(n); for p:=1 to n do readln(mt); ...

Найти количество повторяющихся последовательностей
В одномерном массиве символов найти количество повторяющихся последовательностей символов с длинной больше или равной двум.Напр. abcdbabcba...

Найти максимальную последовательность повторяющихся чисел в одномерном массиве
Вывести одномерный массив (30 элементов в интервале) и определить в нём максимальную последовательность повторяющихся чисел.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru