Занимательные задачи JavaScript
788 subscribers
8 links
Ваша цель: решить задачу максимально изящно и просто. Предлагайте свои варианты решения в комментариях. Задачи выходят каждый день в 14.00.
Download Telegram
Задача 11
Транспонирование таблицы

Дана квадратная HTML таблица произвольного размера. По нажатию на кнопку транспонируйте ее. Поясню, что это значит: операция транспонирования заваливает таблицу на бок. Посмотрим на примере. Пусть у нас есть вот такая таблица:

01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16


После транспонирования она должна превратится в следующую:

01 05 09 13
02 06 10 14
03 07 11 15
04 08 12 16
Задача 12
Случайные неповторяющиеся числа

Сделайте функцию, которая будет выдавать случайные целые числа из заданного диапазона, но так, чтобы вызовы функции не выдавали два одинаковых числа подряд.
Задача 13
Ссылка на чужой сайт

Дана ссылка. Если ее href начинается на http:// или https:// и после стоит не наш домен, добавьте ссылке атрибут target="_blank".
Задача 14
Смена регистра всех букв

Дан текст. Поменяйте в нем регистр всех букв на противоположный.
Задача 15
Обратный отчет до даты

Сделайте обратный отчет до даты. Он должен выводить сколько времени осталось до заданной даты в следующем формате: 12 дней 15 часов 12 минут 58 секунд.
Задача 16
Одинаковые слова в строках

Даны две строки со словами без знаков препинаний. Выведите на экран те слова, которые встречаются и в одной, и во второй строке.
👍2
Задача 17
Перемещение блока наверх

Даны множество блоков с абсолютным позиционированием. По клику на блок сделайте так, чтобы он стал поверх других блоков.
🔥1
Задача 18
Удаление дублей из массива

Дан массив с элементами, например, вот такой:
[1, 2, 1, 3, 1, 1, 2, 4]

Удалите из массива дубли элементов, то есть элементы, которые повторяются два и более раз. В нашем случае мы должны удалить все единицы, кроме первой, и все двойки, кроме первой, получив вот такой массив:
[1, 2, 3, 4]
2
Задача 19
Удаление лишних дублей из массива

Дан массив с элементами, например, вот такой:
[1, 2, 1, 3, 1, 1, 5, 1, 2, 4]

Удалите из массива второй и последующие дубли. В нашем случае мы должны удалить все единицы, кроме первой и второй. А вот двойки мы удалять не должны, так как у нее есть только один дубль. В результате у нас должен получится следующий массив:
[1, 2, 1, 3, 5, 2, 4]
2
Задача 20
Обратный порядок элементов

Дан список ul, например, вот такой:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>

Сделайте кнопку, по нажатию на которую порядок пунктов списка поменяется на обратный. Физически, не через CSS.
🔥1
Задача 21
Дата масленницы

Определите дату ближайшей масленницы (последнее воскресенье зимы). Если в этом году она уже была - покажите за следующий год.
🫡1
Задача 22
Заглавные буквы в начале предложения

Дан текст. Сделайте заглавной первую букву каждого предложения в этом тексте.
🕊1
Задача 23
Второй по величине элемент

Дан массив. Найдите второй по величине элемент, после максимального.
Например, в следующем массиве это будет 4:
[1, 2, 3, 4, 5, 5]
🕊1
Задача 24
Перемешивание массива

Сделайте функцию, которая параметром будет принимать массив и перемешивать его элементы в случайном порядке, возвращая новый массив.
🕊1
Задача 25
Случайная выборка из массива

Дан массив без дублей. Получите из него массив из N случайных элементов, но так, чтобы элементы не повторялись.
🕊1🏆1
Задача 26
Разделение числа на случайную сумму

Дано целое число. Разбейте его на случайное количество целых чисел так, чтобы в сумме они давали это число. Пример: 100 можно разбить на 50+50, или 51+49, или 20+30+50. Количество фрагментов должно быть любым, случайным, сами фрагменты тоже должны быть случайными.
🕊1
Задача 27
Корректность времени

Дано время в формате часы:секунды. Проверьте то, что время является корректным: часы от 00 до 23, а минуты от 00 до 59.
🕊1
Задача 28
Разварот таблицы

Дана некоторая HTML таблица. Сделайте так, чтобы были видны первые N строк этой таблицы. А остальная таблица будет раскрываться по клику на нее.
👍2🕊1
Задача 29
Разбиение на слоги

Сделайте функцию, которая параметром будет принимать слово и возвращать массив его слогов.
🕊1
Задача 30
Нарастающее разбиение строки

Дана строка с любыми символами. Для примера пусть будет такая:
'1234567890'

Нужно разбить строку в массив таким образом:
['1', '23', '456', '7890']

И так далее, пока символы в строке не закончатся.
🕊1