Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов (https://javascript.ru/forum/misc/26673-sgenerirovat-2-posledovatelnosti-i-uznat-skolko-v-nikh-odinakovykh-ehlementov.html)

Ирина Владимировна 17.03.2012 19:08

Сгенерировать 2 последовательности и узнать сколько в них одинаковых элементов
 
Сгенерировать последовательность с помощью датчика случайных чисел и обработать задание:сколько соответствующих элементов двух последовательностей с одинаковым количеством элементов совпадают. Массивы не используются.

Помогите, пожалуйста, знаю как сравниваются числа, как считается количество элементов в последовательности, а вот как сравнить соответствующие элементы и узнать сколько их, что-то не могу понять.

Заранее спасибо!

nerv_ 17.03.2012 19:20

Будьте любезны, Ваш код.

рони 18.03.2012 02:47

Ирина Владимировна,
1 способ.Генерировать 2 последовательности и сравнивать последние добавленные элементы на равенство.
2.Превратить заранее сгенерированные последовательности в массивы с помощью str.split('') и затем последовательно сравнить элементы этих массивов.
3.Взять нужный элемент последовательности для сравнения с помощью str.substr(start, 1)

Ирина Владимировна 21.03.2012 17:16

nerv_,
var n=prompt("Введите количество чисел в последовательности:"," ");
n=n*1;
var a;
var b;
var i=1;
var j=1;
for(;i<=n;i++)
{a=Math.round(-100+201*Math.random());
document.write(a);
if (i<n) document.write(";");}
document.write("<br>");
for(;j<=n;j++)
{b=Math.round(-100+201*Math.random());
document.write(b);
if (j<n) document.write(";");}

генерирует 2 последовательности с одинаковым количеством элементов, как найти элементы которые совпадают не знаю.

Ирина Владимировна 21.03.2012 17:17

рони,
Спасибо, попробую, надеюсь получится.

рони 21.03.2012 19:46

Ирина Владимировна,
Вариант 1 ...
<!DOCTYPE html>
<html>
<head>
  <title></title>
<style type="text/css">
b{
  color: #FF0000;
}
</style>
</head>
<body>
<script type="text/javascript">
function f() {
var n=+prompt("Введите количество чисел в последовательности:","50");
for (var c = "", d = "", e = 0, g = 0; g < n; g++)
        var a = Math.round(9 * Math.random()),
        b = Math.round(9 * Math.random()),
        c = c + (a == b ? (e++, "<b>" + a + "</b>") : a),
        d = d + (a == b ? "<b>" + b + "</b>" : b);
        return c+"<br />"+d+"<br />"+e
};
document.write(f())
</script>
</body>
</html>

monolithed 22.03.2012 09:14

Генерирует два массива одинаков длины, заполненные радномными элементами.
Возвращается количество совпавших пар:

var compare_random_array = function(i) {
    var random = Math.random(),
        count = 0;

    (random * i).toFixed(i).slice(2).split('').every(function(i, j, array) { 
         i == array[j]*random|0 && count++;
         return true;
    });

   return count;
}

alert(compare_random_array(10));

Pavel M. 22.03.2012 10:00

Цитата:

Сообщение от monolithed
Генерирует два массива одинаков длины, заполненные радномными элементами.

а где два массива ?
вроде только один
(random * i).toFixed(i).slice(2).split('')

и что будет если вызвать не
compare_random_array(10)
а например
compare_random_array(30)

monolithed 22.03.2012 11:06

Цитата:

Сообщение от Pavel M.
а где два массива ?

var arrays = [];

var compare_random_array = function(i) {
    var random = Math.random(),
        count = 0;

    (random * i).toFixed(i).slice(2).split('').every(function(element, i, array) {
         var array2 =  random * i|0;
         arrays.push(element, ':', array2, '\n');
         element == array2  && count++;
          
         return true;
    });

   return count;
}

var count = compare_random_array(12);

alert(arrays.join('') + '\nсовпадений пар:' + count);


PS: писался пример для забавы, поэтому косяки править лень.

Pavel M. 22.03.2012 11:27

спасибо,
теперь понятно, что вы имели в виду под вторым массивом заполненным радномными элементами


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