Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 31.08.2017, 12:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

j0hnik,
спасибо, но не может быть, чтобы мой цикл длиной скажем в 10 символов был медленнее вашего на 50.
var arr = [127,3627,65,58,8527,87,1365,1,27,47,7,89,55,11,2727,3636,4747,77,88,556,66,78,55,4747,6,8,47,7,5,67,47,36,475,678,4736,272747,56,7,5,36,27,47,3627,271,27,477,9547,88,3678,156,875,1275,1475,98,751,27547,2756,1547,785,1276,1477,2758,3669,4756,789,12736,12736,4758,785,1275,1475,6547,785,9547,789,156,12747,12747,12747,127547,178,1547,1547,78,69,75,12751,785,987,5477,5477,58,16,178,198,1477,1477,3657,5471,4747,47478,6476,87647,865,5477,587,87,9,6,5,47,8,5,536,568,6847,689,515,789,12756,1547,1475,7471,2758,63627,847,1275,627,58,86,476,127,5727,6547,1477,5366,27477,3669,1547,2775,471,275,98,87,547,271,3627,65,98,87,547,275,366,147,7478,58,96,59,475,65,81,581,1277,157,178,1475,1277,118,117,1477,1471,785,5477,1477,1478,1275,14747,1471,711,4771,4755,175,175,117,6547,1477,1477,7547,175,156,86,547,547,85,88,7,85,85,747,55,8475,75,475,85,87,7475,55,75,55];
function fn(d, e) {
    for (var f = [], b = {}, a, c = 0; c < d.length; c++)
    a = d[c], b[a] == e || (b[a]++ || (b[a] = 1), b[a] == e && f.push(a));
    return f
};
console.time("x")
var x = fn(arr, 3);
console.timeEnd("x")
alert(x);
function three(arr){
return arr.filter((el, i)=> {
var s = 0;
while (i--) if (el == arr[i]) s++;
return (s>1&&s<=2);
});
}
console.time("k")
var k = three(arr);
console.timeEnd("k")
alert(k);
Ответить с цитированием
  #22 (permalink)  
Старый 31.08.2017, 13:09
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
Я за честный спорт, ссылку на сервис вы мне сами когда то дали, им и пользуюсь =)
Ответить с цитированием
  #23 (permalink)  
Старый 31.08.2017, 13:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

j0hnik,
ок, видимо судья применил допинг (оптимизацию) для вашего кода
хорошо бы массив генерировать заново каждый раз.
а так смотрите результат забега в посте №21
Ответить с цитированием
  #24 (permalink)  
Старый 31.08.2017, 13:30
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
ну что вы!
var arr = [], i=100;
while(i--) arr.push(Math.floor(Math.random() * 100));

так честно?
все что, больше лучше ваш.
Ответить с цитированием
  #25 (permalink)  
Старый 31.08.2017, 13:37
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от j0hnik
return (s>1&&s<=2);
для целых чисел???
за такое сразу по рукам бить надо
Ответить с цитированием
  #26 (permalink)  
Старый 31.08.2017, 13:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

j0hnik,
function fn(d, e) {
    for (var f = [], b = {}, a, c = 0; c < d.length; c++)
    a = d[c], b[a] == e || (b[a]++ || (b[a] = 1), b[a] == e && f.push(a));
    return f
};
console.time("x")
for (var k=0; k<10000; k++)  {
var arr = [], i=100;
while(i--) arr.push(Math.floor(Math.random() * 100));
fn(arr, 3)

}
console.timeEnd("x")

function three(arr){
return arr.filter((el, i)=> {
var s = 0;
while (i--) if (el == arr[i]) s++;
return (s>1&&s<=2);
});
}
console.time("k")
for (var k=0; k<10000; k++)  {
var arr = [], i=100;
while(i--) arr.push(Math.floor(Math.random() * 100));
three(arr)
}
console.timeEnd("k")
Ответить с цитированием
  #27 (permalink)  
Старый 31.08.2017, 13:40
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Poznakomlus,
function three(arr){
			return arr.filter((el, i)=> { 
				var s = 0; 
				while (i--) if (el == arr[i]) s++; 
				return (s>1&&s<=2); 
			});
		}
		console.log(three([5.6,435,5,6,5.3,5.6,5.6]));


для любых
Ответить с цитированием
  #28 (permalink)  
Старый 31.08.2017, 13:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Poznakomlus,
точно return s == 2
Ответить с цитированием
  #29 (permalink)  
Старый 31.08.2017, 13:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

j0hnik,
небольшое изменение
function three(arr){
return arr.filter((el, i)=> {
var s = 0;
while (i--) {
    if (el == arr[i]) s++;
    if (s > 2)return false
}
return s == 2;
});
}
Ответить с цитированием
  #30 (permalink)  
Старый 31.08.2017, 13:49
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

рони,
спасибо, это я вчера экспериментировал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать что бы картинки с другого url отображались как свои zlodey Серверные языки и технологии 1 04.05.2015 21:30
Как проверить сайт клиента на установленный блок Alexmad Серверные языки и технологии 10 02.04.2015 20:03
как проверить, что введенные пользователем цифры - это действительно цифры? sana Общие вопросы Javascript 7 31.03.2015 21:16
как сделать что бы при открытии страницы сразу открылось большое фото oksanaweb Общие вопросы Javascript 1 05.06.2013 02:17
Как узнать что полоса прокрутки коснулся самого низа Грабовский Элементы интерфейса 3 15.01.2012 14:33