Skip to content

Instantly share code, notes, and snippets.

@ajile
Last active August 29, 2015 14:07
Show Gist options
  • Select an option

  • Save ajile/e97312a18bf1ebfa643c to your computer and use it in GitHub Desktop.

Select an option

Save ajile/e97312a18bf1ebfa643c to your computer and use it in GitHub Desktop.
Задача для собеседования (javascript)
// Условия задачи:
// Существует список чисел от 1 до 100, числа не повторяются и не упорядочены.
// Одно число пропущено. Требуется написать алгоритм поиска пропещенного числа.
//
// Список формируется следующим образом:
function shuffle(o){ //v1.0
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
function generate(min, max) {
// Сам список
var a = [];
// Пропущенный индекс
var lostindex = Math.round(Math.random() * 100);
for (var i = min; i <= max; i++) {
if (i === lostindex) continue;
a.push(i);
};
return shuffle(a);
}
var a = generate(1, 100);
/**
* Получится следующий список
*
* a = [66, 21, 85, 74, 41, 8, 23, 52, 87, 86, 43, 65, 88, 92, 78, 6, 12, 100, 42,
* 27, 63, 59, 94, 19, 30, 62, 57, 18, 45, 69, 47, 53, 80, 3, 20, 96, 68, 55,
* 70, 24, 97, 1, 37, 83, 93, 28, 54, 64, 46, 84, 36, 51, 33, 67, 40, 5, 14,
* 73, 15, 31, 2, 9, 17, 35, 48, 22, 60, 89, 90, 50, 95, 32, 99, 82, 75, 38,
* 77, 11, 26, 10, 7, 4, 16, 76, 34, 81, 98, 49, 79, 13, 58, 91, 61, 56, 29,
* 25, 39, 44, 71];
*/
// Решение задачи
var absoluteSum = 5050;
var sum = 0;
for (var i = 0; i < a.length; i++) {
sum += a[i] || 0;
}
var result = absoluteSum - sum;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment