Javascript.RU

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

Gtfuc,
замените www функцию на своё
Ответить с цитированием
  #12 (permalink)  
Старый 23.08.2017, 01:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от рони
замените www функцию на своё
исправлено менять не надо
Ответить с цитированием
  #13 (permalink)  
Старый 23.08.2017, 01:34
Интересующийся
Отправить личное сообщение для Gtfuc Посмотреть профиль Найти все сообщения от Gtfuc
 
Регистрация: 22.08.2017
Сообщений: 27

35
var arr = www(),
36
a = {r:0};
37
for (var i=0; i<arr.length; i++)  {
38
for (var j=i; j<arr.length; j++)  {
39
var n = arr[i] * arr[j];
40
if(n > a.r && palindrome(n))  {a.r = n; a.a = arr[i], a.b = arr[j] }
41
}
42
}

Можете объяснить проверку и работу с массивом через a{}? Возможно прикрутить к моему алгоритму? Запускал ваш код - 7 секунд
Ответить с цитированием
  #14 (permalink)  
Старый 23.08.2017, 01:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Gtfuc,
что тут обьяснять не понимаю -- если результат умножения больше эталона и является полиндромом --- меняем эталон на новый

от вашего 2 строки отличие
Ответить с цитированием
  #15 (permalink)  
Старый 23.08.2017, 01:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Gtfuc,
<!DOCTYPE html>

<html>
<head>
  <title>title</title>

</head>

<body> <p></p>
<script>

function sieve(n){

console.time("t")

    S=[];
    S[1]=0;
    for(k=2;k<=n; k++)
      S[k]=k;
    for(k=2;k*k<=n; k++){
      if(S[k]==k){
        for(l=k*k; l<=n; l+=k){
          S[l]=0;
        }
      }
    }
    var filterS = S.filter(function(filt){
      return filt!=0 && filt>10000;
    });
    var rev = filterS.reverse();
    var otv;

    function palindrome(num) {
    	var tmp = num, res = 0, dig;
    	while (tmp) {
        dig = tmp % 10;
        res = res * 10 + dig;
        tmp = (tmp - dig) / 10;
    	}
    	return res == num;
    }
   var a =[0];
    for (i=0; i<rev.length; i++){
      for (j=i; j<rev.length; j++){
        otv = rev[i]*rev[j];
        if(a[0]< otv && palindrome(otv) ){
          a =[otv, rev[i], rev[j]]
        }
        /*else {
          document.write("0");
        }*/
      }
    }
console.timeEnd("t")
   document.write(a);

}
  sieve(100000);


  </script>
</body>
</html>

Последний раз редактировалось рони, 23.08.2017 в 01:49.
Ответить с цитированием
  #16 (permalink)  
Старый 23.08.2017, 08:45
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

рони,
можно ещё ускорить, если помочь браузеру с типами - у меня в хроме за 2 секунды выполняет:

<!DOCTYPE html>
 
<html>
<head>
  <title>title</title>
 
</head>
 
<body> <p></p>
<script>
 
function sieve(n){
 
console.time("t")
 
    S=[];
    S[1]=0;
    for(k=2;k<=n; k++)
      S[k]=k;
    for(k=2;k*k<=n; k++){
      if(S[k]==k){
        for(l=(k*k); l<=n; l+=k){
          S[l]=0;
        }
      }
    }
    var filterS = S.filter(function(filt){
      return filt!=0 && filt>10000;
    });
    var rev = filterS.reverse();
    var otv = 0|0;
 
    function palindrome(num) {
        num = num|0;
        var tmp = +num, res = 0|0, dig = 0|0;
        while (tmp) {
        dig = tmp % 10;
        res = res * 10 + dig;
        tmp = (tmp - dig) / 10;
        }
        return res == num;
    }
   var a =[0];
    for (i=0; i<rev.length; i++){
      for (j=i; j<rev.length; j++){
        otv = rev[i]*rev[j];
        if(a[0]< otv && palindrome(otv) ){
          a =[otv, rev[i], rev[j]]
        }
        /*else {
          document.write("0");
        }*/
      }
    }
console.timeEnd("t")
   document.write(a);
 
}
  sieve(100000);
 
 
  </script>
</body>
</html>
Ответить с цитированием
  #17 (permalink)  
Старый 23.08.2017, 09:56
Интересующийся
Отправить личное сообщение для Gtfuc Посмотреть профиль Найти все сообщения от Gtfuc
 
Регистрация: 22.08.2017
Сообщений: 27

Белый шум, спасибо, вот только результат не является палиндромом.
рони, спасибо, суть сравнения я понимаю. Я имел такой вывод: {a.r = n; a.a = arr[i], a.b = arr[j] }
До этого в js не встречал, очень базовые вещи только знаю.

Последний раз редактировалось Gtfuc, 23.08.2017 в 10:11.
Ответить с цитированием
  #18 (permalink)  
Старый 23.08.2017, 11:04
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от Gtfuc Посмотреть сообщение
Белый шум, спасибо, вот только результат не является палиндромом.
блин, накосячил с типами - за счёт этого и было ускорение
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединить три конструкции проверки полей в одну golopogos Элементы интерфейса 0 27.01.2015 10:04
Не работает скрипт проверки полей bbmm Общие вопросы Javascript 2 06.08.2014 00:57
Замена запятой на точки для проверки цифр с дробью Telnet Общие вопросы Javascript 7 22.07.2013 11:33
вопрос по алгоритму проверки (для игры) cyber Общие вопросы Javascript 10 11.11.2012 01:15
Результаты проверки сервером формы ekkl jQuery 3 30.01.2010 14:29