Skip to content

algorithmic tasks

garevna edited this page Mar 18, 2019 · 8 revisions

Алгоритмические задачи

1

FizzBuzz

Напишите функцию, которая выводит в консоль числа от 1 до n, где n — целое число, которое функция принимает в качестве параметра, при этом:

  • выводит fizz вместо чисел, кратных 3
  • выводит buzz вместо чисел, кратных 5
  • выводит fizzbuzz вместо чисел, кратных и 3, и 5

Ответ:

function showNumbers ( finalNum ) {
    var num = 0
    while ( num++ < finalNum ) {
        let x = ( num % 3 ? "" : "fizz" ) + ( num % 5 ? "" : "Buzz" )
        console.log (
           x.length ? x : num 
        )
    }  
}

2

Сколько раз в день часовая и минутная стрелки встречаются друг с другом ?

Ответ: за каждый 12-часовой период происходит 11 наложений


3

Есть вращающийся диск

В вашем распоряжении черная (Ч) и белая (Б) краски

На краю диска установлен датчик, который определяет цвет под ним и выдает результат в виде сигнала ( Ч/Б )

Как нужно раскрасить диск, чтобы можно было определить направление его вращения по показаниям датчика ?

Ответ:


4

Диск уже раскрашен на две половинки в черный и белый цвета

Допускается установка неограниченного числа фиксированных датчиков у края диска

Сколько датчиков необходимо для определения направления вращения ?

Ответ: два


5

Пользователь вводит натуральное число

Нужно вывести сумму цифр этого числа

Ответ:

JS
String ( x ).split("")
    .reduce ( ( sum, val ) => sum + Number ( val ), 0 )

6

Напишите функцию, находящую максимум двух чисел, ⚠️ не используя библиотечные функции и операторы сравнения

Ответ:


7

Напишите функцию, которая будет подсчитывать число двоек ( 2 ), используемых в записи чисел от 0 до n

Ответ:

JS

( только разряды )

function getNumberOfDigits ( num ) {
    let res = 1
    while ( --num > 0 ) res = res * 2 + 1
    return res
}

8

Дано 20 баночек с таблетками

В 19 баночках лежат таблетки весом 1 г, а в одной — весом 1.1 г.

Даны весы, показывающие точный вес

Как за одно взвешивание найти банку с тяжелыми таблетками ?

Ответ:

Возьмем одну таблетку из банки № 1, две таблетки из банки № 2, три таблетки из банки № 3 и т.д.

Взвесим этот набор таблеток

Если бы все таблетки весили 1 г, то общий вес был бы S = 210 г.

Однако S будет больше за счет банки с тяжелыми таблетками

Теперь номер банки можно вычислить по формуле: ( S — 210 ) / 0.1

Например, если S = 211.3 г, то тяжелые таблетки были в банке № 13


9

Из шахматной доски размером 8×8 в двух противоположных по диагонали углах вырезано по одному квадрату

Можно ли вымостить доску 31 костью домино, если каждая кость может закрыть два квадрата на доске ?

Ответ:

Шахматная доска делится на 32 черные и 32 белые клетки

После удаления клеток в противоположных углах ( окрашенных в один и тот же цвет ) остается 30 клеток одного и 32 клетки другого цвета

Предположим, осталось 30 черных и 32 белых клетки

Каждая кость будет занимать одну черную и одну белую клетку

Для размещенияя 31 кости домино необходимо 31 белых и 31 черных клеток

Вывод: разложить кости невозможно


10

Напишите функцию, меняющую местами значения переменных, ⚠️ не используя временные переменные

Ответ:

JS
function reverse ( x, y ) {
    x = x - y
    y = x + y
    x = y - x
    console.log ( x, y )
}

10

Страницы в книге пронумерованы от 1 до N

Если сложить количество цифр, содержащихся в каждом номере страницы, будет 1092

Сколько страниц в книге ?

Ответ:

На каждой из N страниц будет цифра на месте единиц ( последняя цифра в номере страницы )

Тогда всего последних цифр в номерах страниц будет N штук

На всех страницах, кроме первых 9-ти, числа будут как минимум двухзначными

Значит предпоследних цифр в номерах страниц будет N - 9 штук

На всех страницах, за исключением первых 99-ти, номера будут трехзначными

Тогда третьих с конца цифр в номерах страниц будет N - 99 штук

Суммируем полученные числа: N + ( N - 9 ) + ( N - 99 )

В результате должно плучиться число 1092

N + ( N - 9 ) + ( N - 99 ) = 1092

или:

3*N - 108 = 1092   =>   3*N = 1200

откуда N = 400

Т.е. в книге 400 страниц


11

У скольких целых чисел, лежащих в диапазоне от 1 до 1000, есть цифра 3 ?

Ответ:

Сначала узнаем, сколько чисел не имеют 3 в своей записи

Для этого на каждое место ставим 9 цифр, не включающие 3, т.е. 9 * 9 * 9 = 729

Если всего чисел 1000, то ответ 1000 — 729 = 271


12

Среди прохожих провели опрос

Был задан вопрос: «Какое домашнее животное у Вас есть?»

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

  • у 150 человек есть кошка
  • у 130 — собака
  • у 50 — птичка
  • у 60 человек есть кошка и собака
  • у 20 — кошка и птичка
  • у 30 — собака и птичка
  • у 70 человек вообще нет домашнего животного
  • у 10 человек есть и кошка, и собака, и птичка

Сколько прохожих приняли участие в опросе?


13

Дан числовой ребус

Разным буквам соответствуют разные цифры, одинаковым — одинаковые

Найдите все решения или докажите, что их нет

ЛИСА + ВОЛК = ЗВЕРИ

Решение:

Вариантов будет всего 2:

А В Е З И К Л О Р С
2 6 0 1 5 3 9 4 7 8
3 6 0 1 5 2 9 4 7 8
Л И С А
В О Л К
З В Е Р И
9 5 8 2
6 4 9 3
1 6 0 7 5
9 5 8 3
6 4 9 2
1 6 0 7 5

пусть x, y, z могут принимать только два значения: либо 0, либо 1

тогда запишем:

А + К = x * 10 + И

С + Л + x = y * 10 + Р

И + О + y = z * 10 + Е

Л + В + z = З * 10 + В

литера З может принимать значения либо 0, либо 1

вероятнее всего, это 1, поскольку иначе ее там вообще не было бы...

уточним этот момент:

З * 10 + В = Л + В + z

З = 0 <=> Л = 0, z = 0 => З = Л = 0, что противоречит условию

Отсюда получаем, что З = 1 => Л + z = 10 => Л = 9

Далее, А не равно 0 и К не равно 0

Далее, x не может быть 1, поскольку тогда

С + 9 + 1 = 10 + С = 10 + Р => С = Р,

что противоречит условию

Итак, x = 0

Тогда А + К < 10 ( А, К не равны 1 и 9 )

2 + 3 2 + 4 2 + 5 2 + 6 2 + 7 исключено, т.к. тогда Р = 9 3 + 4 3 + 5 3 + 6 исключено, т.к. тогда Р = 9 4 + 5 исключено, т.к. тогда Р = 9

Получаем набор вариантов значений А и К: { 2, 3, 4, 5, 6 }

  • { 2, 3 } => И = 5
  • { 3, 2 } => И = 5
  • { 2, 4 } => И = 6
  • { 4, 2 } => И = 6
  • { 2, 5 } => И = 7
  • { 5, 2 } => И = 7
  • { 2, 6 } => И = 8
  • { 6, 2 } => И = 8
  • { 3, 4 } => И = 7
  • { 4, 3 } => И = 7
  • { 3, 5 } => И = 8
  • { 5, 3 } => И = 8

Значит, возможные варианты значений И: { 5, 6, 7, 8 }

Теперь С + 9 = Р, причем С не равно 9 => вариант Р = 8 отпадает

С не может быть 0, поскольку тогда Р = 9, что противоречит Л = 9

Т.е. С попадает в диапазон от 2 до 8

Но при С = 2 значение Р будет 1 = З

Тогда С попадает в диапазон от 3 до 8

Значит, возможные варианты значений Р: { 2, 3, 4, 5, 6, 7 }

при этом y получает значение 1

И + О + 1 = 10 * z + Е, z = 1 => И + О + 1 = 10 + Е

И = 9 + Е - О

О - Е = 9 - И

возможные варианты значений И: { 5, 6, 7, 8 }

тогда О - Е : { 4, 3, 2 } ( вариант 1 отпадает ) =>

возможные варианты значений И: { 5, 6, 7 }

варианты значений О и Е ( О > Е ):

{ 8, 4 } { 8, 5 } { 8, 6 } { 7, 3 } { 7, 4 } { 7, 5 } { 6, 2 } { 6, 3 } { 6, 4 } { 5, 2 } { 5, 3 }


14

В ковре размером 4×4 метра моль проела 15 дырок

Всегда ли можно вырезать коврик размером 1×1, не содержащий внутри дырок?

( Дырки считаются точечными )

15

Обоснуйте решение

Только плохие люди обманывают или крадут

Катя — хорошая

а) Катя обманывает ( liar ) б) Катя крадет ( thief ) в) Катя не крадет ( !thief ) г) Катя обманывает и крадет ( liar && thief ) д) ни одно из вышеперечисленных

Плохие люди: liar || thief Хорошие люди: !liar && !thief

!( liar && thief ) = !liar || !thief

Правильного ответа ( !liar && !thief ) нет в списке

д) !liar && !thief && !!thief && !( liar && thief ) = false <= !thief && !!thief = false

© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав


Новая версия


1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19

Занятие 1

⤵️

Занятие 2

⤴️ ⤵️

Занятие 3

⤴️ ⤵️

Занятие 4

⤴️ ⤵️

Занятие 5

⤴️ ⤵️

Занятие 6

⤴️ ⤵️

Занятие 7

⤴️ ⤵️

Занятие 8

⤴️ ⤵️

Занятие 9

⤴️ ⤵️

Занятие 10

⤴️ ⤵️

Занятие 11

⤴️ ⤵️

Занятие 12

⤴️ ⤵️

Занятие 13

⤴️ ⤵️

Занятие 14

⤴️ ⤵️

Занятие 15

⤴️ ⤵️

Занятие 16

⤴️ ⤵️

Занятие 17

⤴️ ⤵️

Занятие 18

⤴️ ⤵️

Занятие 19

⤴️ ⤵️

⤴️

ico20 Дополнительно
dir-20 Справочная инфо

Clone this wiki locally