Всем привет! Сегодня задача на вычисление факториала числа
Напишите программу на JavaScript для вычисления факториала числа.
В математике факториал неотрицательного целого числа n, обозначенного через n !, является произведением всех натуральных чисел, меньших или равных n. Например, 5! = 5 х 4 х 3 х 2 х 1 = 120
Решение
function factorial(x)
{
if (x === 0)
{
return 1;
}
return x * factorial(x-1);
}
console.log(factorial(5));
Ответ: 120
Напишите программу на JavaScript для вычисления факториала числа.
В математике факториал неотрицательного целого числа n, обозначенного через n !, является произведением всех натуральных чисел, меньших или равных n. Например, 5! = 5 х 4 х 3 х 2 х 1 = 120
Решение
{
if (x === 0)
{
return 1;
}
return x * factorial(x-1);
}
console.log(factorial(5));
Ответ: 120
Хай! Сегодня у нас задача Фибоначчи
Классическая задача, которую можно встретить на собеседованиях самого разного уровня. Стоит напомнить, что последовательность Фибоначчи — это ряд чисел, где каждое последующее является суммой двух предыдущих. Так, первые десять чисел выглядят следующим образом: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Постановка
Нужно написать функцию, которая возвращает n-ную запись в определенной последовательности, причем n — число, которое передается в качестве аргумента функции.
fibonacci(3) // --> 2
Эта задача включает прохождение по циклу такое количество раз, которое указано в аргументе, с возвратом значения на соответствующей позиции. Этот способ постановки задачи требует использования циклов. Если вместо этого вы используете рекурсию, это может понравиться интервьюеру и дать вам несколько дополнительных очков.
P.s Пять смайлов и скидываем решение)
Классическая задача, которую можно встретить на собеседованиях самого разного уровня. Стоит напомнить, что последовательность Фибоначчи — это ряд чисел, где каждое последующее является суммой двух предыдущих. Так, первые десять чисел выглядят следующим образом: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Постановка
Нужно написать функцию, которая возвращает n-ную запись в определенной последовательности, причем n — число, которое передается в качестве аргумента функции.
fibonacci(3) // --> 2
Эта задача включает прохождение по циклу такое количество раз, которое указано в аргументе, с возвратом значения на соответствующей позиции. Этот способ постановки задачи требует использования циклов. Если вместо этого вы используете рекурсию, это может понравиться интервьюеру и дать вам несколько дополнительных очков.
P.s Пять смайлов и скидываем решение)
Доброе всем утро! Давайте решим ещё одну задачку)
Задача:
Есть ферма животных, у всех животных есть имена и возраст. Животные бывают разных типов: Кошки, Собаки, Коровы. У каждого животного могут быть дети. Если животное является родителем этих детей, в свою очередь глубина семейного древа может достигать N либо 0.
Опишите структуры данных для фермы животных и напишите функцию, которая делает подсчёт всех возрастов животных и выводит общий возраст для всей фермы.
P.s Десять смайлов и скидываем решение)
Задача:
Есть ферма животных, у всех животных есть имена и возраст. Животные бывают разных типов: Кошки, Собаки, Коровы. У каждого животного могут быть дети. Если животное является родителем этих детей, в свою очередь глубина семейного древа может достигать N либо 0.
Опишите структуры данных для фермы животных и напишите функцию, которая делает подсчёт всех возрастов животных и выводит общий возраст для всей фермы.
P.s Десять смайлов и скидываем решение)
Готовый Код | Frontend
Доброе всем утро! Давайте решим ещё одну задачку) Задача: Есть ферма животных, у всех животных есть имена и возраст. Животные бывают разных типов: Кошки, Собаки, Коровы. У каждого животного могут быть дети. Если животное является родителем этих детей, в свою…
Решение:
// Родительский класс для всех животных
class Animal {
constructor(name, age, childs = null) {
this.name = name;
this.age = age;
this.childs = childs;
}
}
// Класс Cat - потомок класса Animal
// Имеет те же поля, что и Animal
class Cat extends Animal {
constructor(name, age, childs = null) {
super(name, age, childs);
}
}
// Класс Dog - потомок класса Animal
// Имеет те же поля, что и Animal
class Dog extends Animal {
constructor(name, age, childs = null) {
super(name, age, childs);
}
}
// Класс Cow - потомок класса Animal
// Имеет те же поля, что и Animal
class Cow extends Animal {
constructor(name, age, childs = null) {
super(name, age, childs);
}
}
// Рекурсивная функция для подсчета age
// Обходит все дочерние элементы
function getAnimalsAge(animals) {
let output = 0;
if (animals.length > 0) {
// Использование функции reduce для получения общего age
// https://learn.javascript.ru/array-iteration
output += animals.reduce((acc, current) => {
// Сумма age всех childs
let count = 0;
// Если childs пустой или его нет, тогда нет смысла пробегать по ним
if (current.childs && current.childs.length > 0) {
// Применение рекурсии
count += getAnimalsAge(current.childs);
}
// Возвращаем сумму аккумулятора, текущего животного, сумму age всех childs
return acc + current.age + count;
}, 0);
}
return output;
}
// Функция для получения определённого количества животных
function generateAnimals(type, count) {
let output = [];
for (let i = 0; i <= count; i++) {
let parameter = {
name:
age: i,
childs: []
};
let item = null;
switch (type) {
case "Cat":
item = new Cat(parameter.name, parameter.age);
break;
case "Dog":
item = new Dog(parameter.name, parameter.age);
break;
case "Cow":
item = new Cow(parameter.name, parameter.age);
break;
}
if (item) {
output.push(item);
}
}
return output;
}
// Добавление childs ко всем переданным животным
function addChildsTo(animals, count, type) {
animals.forEach(animal => {
if (!animal.childs) {
animal.childs = [];
}
// Обратите внимание, что массив - ссылка, поэтому изменяя здесь его поля
// мы меняем их глобально
animal.childs = generateAnimals(type, count);
});
}
let cats = generateAnimals("Cat", 5);
addChildsTo(cats, 10, "Cat");
let dogs = generateAnimals("Dog", 3);
addChildsTo(dogs, 3, "Dog");
let cows = generateAnimals("Cow", 7);
addChildsTo(cows, 1, "Dog");
// Использование оператора Spread (ES6)
// https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Spread_syntax
let animals = [...cats, ...dogs, ...cows];
console.log(getAnimalsAge(animals)) // 411
// Родительский класс для всех животных
class Animal {
constructor(name, age, childs = null) {
this.name = name;
this.age = age;
this.childs = childs;
}
}
// Класс Cat - потомок класса Animal
// Имеет те же поля, что и Animal
class Cat extends Animal {
constructor(name, age, childs = null) {
super(name, age, childs);
}
}
// Класс Dog - потомок класса Animal
// Имеет те же поля, что и Animal
class Dog extends Animal {
constructor(name, age, childs = null) {
super(name, age, childs);
}
}
// Класс Cow - потомок класса Animal
// Имеет те же поля, что и Animal
class Cow extends Animal {
constructor(name, age, childs = null) {
super(name, age, childs);
}
}
// Рекурсивная функция для подсчета age
// Обходит все дочерние элементы
function getAnimalsAge(animals) {
let output = 0;
if (animals.length > 0) {
// Использование функции reduce для получения общего age
// https://learn.javascript.ru/array-iteration
output += animals.reduce((acc, current) => {
// Сумма age всех childs
let count = 0;
// Если childs пустой или его нет, тогда нет смысла пробегать по ним
if (current.childs && current.childs.length > 0) {
// Применение рекурсии
count += getAnimalsAge(current.childs);
}
// Возвращаем сумму аккумулятора, текущего животного, сумму age всех childs
return acc + current.age + count;
}, 0);
}
return output;
}
// Функция для получения определённого количества животных
function generateAnimals(type, count) {
let output = [];
for (let i = 0; i <= count; i++) {
let parameter = {
name:
${type} ${i}
,age: i,
childs: []
};
let item = null;
switch (type) {
case "Cat":
item = new Cat(parameter.name, parameter.age);
break;
case "Dog":
item = new Dog(parameter.name, parameter.age);
break;
case "Cow":
item = new Cow(parameter.name, parameter.age);
break;
}
if (item) {
output.push(item);
}
}
return output;
}
// Добавление childs ко всем переданным животным
function addChildsTo(animals, count, type) {
animals.forEach(animal => {
if (!animal.childs) {
animal.childs = [];
}
// Обратите внимание, что массив - ссылка, поэтому изменяя здесь его поля
// мы меняем их глобально
animal.childs = generateAnimals(type, count);
});
}
let cats = generateAnimals("Cat", 5);
addChildsTo(cats, 10, "Cat");
let dogs = generateAnimals("Dog", 3);
addChildsTo(dogs, 3, "Dog");
let cows = generateAnimals("Cow", 7);
addChildsTo(cows, 1, "Dog");
// Использование оператора Spread (ES6)
// https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Spread_syntax
let animals = [...cats, ...dogs, ...cows];
console.log(getAnimalsAge(animals)) // 411
Какой минимальный набор языков для веб разработки?
Anonymous Poll
87%
HTML CSS JS
12%
HTML CSS JS PHP PYTHON
0%
JAVA PHP JS
1%
JS GO PYTHON C++
Привет сегодня задача Палиндром
Палиндром — слово, предложение или последовательность символов, которая абсолютно одинаково читается как в привычном направлении, так и в обратном. К примеру, “Anna” — это палиндром, а “table” и “John” — нет.
Постановка
Дана строка; нужно написать функцию, которая позволяет вернуть значение true, если строка является палиндромом, и false — если нет. При этом нужно учитывать пробелы и знаки препинания.
palindrome('racecar') === true
palindrome('table') === false
P,s Десять смайлов и скидываем решение)
Палиндром — слово, предложение или последовательность символов, которая абсолютно одинаково читается как в привычном направлении, так и в обратном. К примеру, “Anna” — это палиндром, а “table” и “John” — нет.
Постановка
Дана строка; нужно написать функцию, которая позволяет вернуть значение true, если строка является палиндромом, и false — если нет. При этом нужно учитывать пробелы и знаки препинания.
palindrome('racecar') === true
palindrome('table') === false
P,s Десять смайлов и скидываем решение)
Привет! Сегодня у нас будет задача "Фибоначчи"
Классическая задача, которую можно встретить на собеседованиях самого разного уровня. Стоит напомнить, что последовательность Фибоначчи — это ряд чисел, где каждое последующее является суммой двух предыдущих. Так, первые десять чисел выглядят следующим образом: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Постановка
Нужно написать функцию, которая возвращает n-ную запись в определенной последовательности, причем n — число, которое передается в качестве аргумента функции.
fibonacci(3) // --> 2
Эта задача включает прохождение по циклу такое количество раз, которое указано в аргументе, с возвратом значения на соответствующей позиции. Этот способ постановки задачи требует использования циклов. Если вместо этого вы используете рекурсию, это может понравиться интервьюеру и дать вам несколько дополнительных очков.
P.s Справился? Скидывай решение в комментариях) Десять смайлов и кидаем решение)
Классическая задача, которую можно встретить на собеседованиях самого разного уровня. Стоит напомнить, что последовательность Фибоначчи — это ряд чисел, где каждое последующее является суммой двух предыдущих. Так, первые десять чисел выглядят следующим образом: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.
Постановка
Нужно написать функцию, которая возвращает n-ную запись в определенной последовательности, причем n — число, которое передается в качестве аргумента функции.
fibonacci(3) // --> 2
Эта задача включает прохождение по циклу такое количество раз, которое указано в аргументе, с возвратом значения на соответствующей позиции. Этот способ постановки задачи требует использования циклов. Если вместо этого вы используете рекурсию, это может понравиться интервьюеру и дать вам несколько дополнительных очков.
P.s Справился? Скидывай решение в комментариях) Десять смайлов и кидаем решение)
Хай! Снова числа)
Ваша задача на сегодня это написать выражение, находящее только числа, записанные в стиле JavaScript. Оно должно поддерживать возможный минус или плюс перед числом, десятичную точку, и экспоненциальную запись 5e-3 или 1E10 – опять-таки с возможными плюсом или минусом. Также заметьте, что до или после точки не обязательно могут стоять цифры, но при этом число не может состоять из одной точки. То есть, .5 или 5. – допустимые числа, а одна точка сама по себе – нет.
Ваша задача на сегодня это написать выражение, находящее только числа, записанные в стиле JavaScript. Оно должно поддерживать возможный минус или плюс перед числом, десятичную точку, и экспоненциальную запись 5e-3 или 1E10 – опять-таки с возможными плюсом или минусом. Также заметьте, что до или после точки не обязательно могут стоять цифры, но при этом число не может состоять из одной точки. То есть, .5 или 5. – допустимые числа, а одна точка сама по себе – нет.
Привет! Пора решить задачу:
Напишите функцию JavaScript для преобразования метки времени Unix во время.
Решение:
function Unix_timestamp(t)
{
var dt = new Date(t*1000);
var hr = dt.getHours();
var m ="0" + dt.getMinutes();
var s ="0" + dt.getSeconds();
return hr+ ':' + m.substr(-2) + ':' + s.substr(-2);
}
console.log(Unix_timestamp(1412743274));
P.S. Наш канал с макетами -https://yangx.top/figma_makets
Напишите функцию JavaScript для преобразования метки времени Unix во время.
Решение:
{
var dt = new Date(t*1000);
var hr = dt.getHours();
var m ="0" + dt.getMinutes();
var s ="0" + dt.getSeconds();
return hr+ ':' + m.substr(-2) + ':' + s.substr(-2);
}
console.log(Unix_timestamp(1412743274));
Хай!
Сегодня мы напишем функцию создания генератора sequence(start, step). Она при вызове возвращает другую функцию-генератор, которая при каждом вызове дает число на 1 больше, и так до бесконечности. Начальное число, с которого начинать отсчет, и шаг, задается при создании генератора. Шаг можно не указывать, тогда он будет равен одному. Начальное значение по умолчанию равно 0. Генераторов можно создать сколько угодно
P.s Пять смайлов и скидываем решение)
Сегодня мы напишем функцию создания генератора sequence(start, step). Она при вызове возвращает другую функцию-генератор, которая при каждом вызове дает число на 1 больше, и так до бесконечности. Начальное число, с которого начинать отсчет, и шаг, задается при создании генератора. Шаг можно не указывать, тогда он будет равен одному. Начальное значение по умолчанию равно 0. Генераторов можно создать сколько угодно
P.s Пять смайлов и скидываем решение)
Готовый Код | Frontend
Хай! Сегодня мы напишем функцию создания генератора sequence(start, step). Она при вызове возвращает другую функцию-генератор, которая при каждом вызове дает число на 1 больше, и так до бесконечности. Начальное число, с которого начинать отсчет, и шаг, задается…
Решение :
function
sequence(start, step) {
start = start 0;
step = step 1;
start -= step;
return function() {
return start += step;
}
}
var generator = sequence(2, 3);
console.log(generator());
function
sequence(start, step) {
start = start
step = step
start -= step;
return function() {
return start += step;
}
}
var generator = sequence(2, 3);
console.log(generator());
Готовый Код | Frontend
Хай! Сегодня у нас будет задача: Напишите две функции, которые будут проходить через массив целых чисел и выводить индекс каждого элемента с задержкой в 3 секунды. P.s Ожидаем два решения) Ставим десять смайлов и скидываем решение)
Хай! Вот и решение задачи)
Первое решение:
const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
// pass in the variable i so that each function
// has access to the correct index
setTimeout(function(i_local) {
return function() {
console.log('The index of this number is: ' + i_local);
}
}(i), 3000);
}
Второе решение:
const arr = [10, 12, 15, 21];
for (let i = 0; i < arr.length; i++) {
// using the ES6 let syntax, it creates a new binding
// every single time the function is called
// read more here: http://exploringjs.com/es6/ch_variables.html#sec_let-const-loop-heads
setTimeout(function() {
console.log('The index of this number is: ' + i);
}, 3000);
}
Первое решение:
for (var i = 0; i < arr.length; i++) {
// pass in the variable i so that each function
// has access to the correct index
setTimeout(function(i_local) {
return function() {
console.log('The index of this number is: ' + i_local);
}
}(i), 3000);
}
for (let i = 0; i < arr.length; i++) {
// using the ES6 let syntax, it creates a new binding
// every single time the function is called
// read more here:
setTimeout(function() {
console.log('The index of this number is: ' + i);
}, 3000);
}
Всем привет! У нас задача: Векторный тип.
Напишите конструктор Vector, представляющий вектор в двумерном пространстве. Он принимает параметры x и y (числа), которые хранятся в одноимённых свойствах.
Дайте прототипу Vector два метода, plus и minus, которые принимают другой вектор в качестве параметра, и возвращают новый вектор, который хранит в x и y сумму или разность двух (один this, второй — аргумент)
Добавьте геттер length в прототип, подсчитывающий длину вектора – расстояние от (0, 0) до (x, y).
Напишите конструктор Vector, представляющий вектор в двумерном пространстве. Он принимает параметры x и y (числа), которые хранятся в одноимённых свойствах.
Дайте прототипу Vector два метода, plus и minus, которые принимают другой вектор в качестве параметра, и возвращают новый вектор, который хранит в x и y сумму или разность двух (один this, второй — аргумент)
Добавьте геттер length в прототип, подсчитывающий длину вектора – расстояние от (0, 0) до (x, y).
Хай! Давай решим задачу!
Напишите функцию lorem(n), которая принимает положительное целое n (от 1 до 445) и при вызове возвращает строку длиной n символов из строки
«Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.»
Например, при вызове lorem(100) функция должна вернуть строку
«Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore »
P.s Десять смайлов и скидываем решение
Напишите функцию lorem(n), которая принимает положительное целое n (от 1 до 445) и при вызове возвращает строку длиной n символов из строки
«Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.»
Например, при вызове lorem(100) функция должна вернуть строку
«Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore »
P.s Десять смайлов и скидываем решение
Привет! Давай сделаем простой скрипт для увеличение картинки, который требуется очень часто.
Обычно картинки на сайте обладают небольшим размером, чтобы не увеличивать их до такого размера, когда это смотрится уже, как минимум, некрасиво. Однако, очень часто пользователи хотят увеличить картинку, и вот для их удобства и был сделан этот простой скрипт.
Условие:
Кликните на любую фотографию. Если кликните ещё раз, то она вернётся в исходное состояние
Обычно картинки на сайте обладают небольшим размером, чтобы не увеличивать их до такого размера, когда это смотрится уже, как минимум, некрасиво. Однако, очень часто пользователи хотят увеличить картинку, и вот для их удобства и был сделан этот простой скрипт.
Условие:
Кликните на любую фотографию. Если кликните ещё раз, то она вернётся в исходное состояние
Привет! Напишите в комментариях, что выведет этот код)
const client = {
name: "Mr. Smith",
age: 21
}
const increaseAge = (x = { ...client }) => x.age += 1
const changeAgeAndName = (x = { ...client }) => {
x.age += 1
x.name = "Ivan"
}
increaseAge(client)
changeAgeAndName()
console.log(client)
P.s Пять смайлов и скидываем похожую задачку снова)
const client = {
name: "Mr. Smith",
age: 21
}
const increaseAge = (x = { ...client }) => x.age += 1
const changeAgeAndName = (x = { ...client }) => {
x.age += 1
x.name = "Ivan"
}
increaseAge(client)
changeAgeAndName()
console.log(client)
P.s Пять смайлов и скидываем похожую задачку снова)
Привет) Вам понравилась вчерашняя задача, значит сегодня будет похожая)
Какое значение будет на выходе?
const client = {
name: "Mr. Smith",
age: 21
}
const increaseAge = (x = { ...client }) => x.age += 1
const changeAgeAndName = (x = { ...client }) => {
x.age += 1
x.name = "Ivan"
}
increaseAge(client)
changeAgeAndName()
console.log(client)
P.s Десять смайлов и выбираем среди комментариев правильный ответ)
Если есть желание можно подкинуть задачу)
Какое значение будет на выходе?
const client = {
name: "Mr. Smith",
age: 21
}
const increaseAge = (x = { ...client }) => x.age += 1
const changeAgeAndName = (x = { ...client }) => {
x.age += 1
x.name = "Ivan"
}
increaseAge(client)
changeAgeAndName()
console.log(client)
P.s Десять смайлов и выбираем среди комментариев правильный ответ)
Если есть желание можно подкинуть задачу)