На хакатон пришли программисты, все сели на пуфики по 4 человека, но четверо осталось стоять. Подумав, программисты развернули пуфики, сели по 6 человек на каждый, и тогда 4 пуфика остались свободными.
Сколько всего людей пришло на хакатон?
Обозначим количество участников хакатона за x. Если на каждый пуфик сели по 4 человека и ещё четверо остались стоять, получается, что на пуфиках было x − 4 человека, а всего пуфиков было (x − 4) / 4.
С другой стороны, если после разворота пуфиков на каждый сели по 6 человек и 4 пуфика остались пустыми, получается, что всего пуфиков было (x/6 + 4).
Так как количество пуфиков неизменно, то мы можем приравнять обе формулы друг к другу:
(x/6 + 4) = (x − 4)/4
Решаем уравнение — умножим сначала обе части на 4, чтобы избавиться от деления:
4(x/6 + 4) = x − 4
2x/3 + 16 = x − 4
x − ⅔x = 16 + 4
⅓x = 20 → x = 20 × 3 = 60
Выходит, что на хакатон пришло 60 человек.
Сила компьютера в том, что он может быстро перебрать много вариантов решения и сразу найти нужный ответ. Всё, что нам нужно сделать, — объяснить в коде, как это сделать.
Напишем на JavaScript простой скрипт, который переберёт разное количество участников хакатона и по очереди проверит, подходит ли это число как решение или нет. Если подходит — выводим, если нет, то переходим к следующему. Проверку решения возьмём как в математическом решении — сравним обе части уравнения, и если значение совпадает, то это и есть верный ответ.
Для простоты представим, что в хакатоне участвует миллион программистов — компьютеру всё равно, сколько человек проверять, а нам будет спокойнее, что мы точно найдём решение.
// перебираем по очереди разное количество программистов на хакатоне
for (let x = 0; x <= 1000000; x++) {
// если обе части условия равны
if ((x / 6 + 4) == ((x - 4) / 4)) {
// то это значит, что мы нашли решение, поэтому выводим его на экран
console.log('В хакатоне участвовало ' + x + ' человек')
// останавливаем цикл, если нашли решение
break;
}
}