Напишите программу на JavaScript, чтобы вычислить сумму массива целых чисел.
Пример: var array = [1, 2, 3, 4, 5, 6]
Ожидаемый результат: 21
Решение:
var array_sum = function(my_array) {
if (my_array.length === 1) {
return my_array[0];
}
else {
return my_array.pop() + array_sum(my_array);
}
};
console.log(array_sum([1,2,3,4,5,6]));
Пример: var array = [1, 2, 3, 4, 5, 6]
Ожидаемый результат: 21
Решение:
if (my_array.length === 1) {
return my_array[0];
}
else {
return my_array.pop() + array_sum(my_array);
}
};
console.log(array_sum([1,2,3,4,5,6]));
Уже через полчаса мы будем проводить вебинар с Марком Джовиевым!!! Не пропусти!
Заходи в 18:00 по ссылке:
https://www.youtube.com/watch?v=4JinFYOwbrA
Заходи в 18:00 по ссылке:
https://www.youtube.com/watch?v=4JinFYOwbrA
YouTube
За жизнь, за код, за ждунов и джунов | Интервью с Марком Джовиевым
Хай! Напишите функцию JavaScript, которая возвращает переданную строку с буквами в алфавитном порядке.
Пример строки: 'alphabetical'. Ожидаемый результат: 'aaabcehillpt'
function alphabet_order(str) {
// Ваш код
}
document.writeln(alphabet_order("alphabetical"));
Решение:
<script>
function alphabet_order(str) {
return str.split('').sort().join('');
}
document.writeln(alphabet_order("alphabetical")); // "aaabcehillpt"
</script>
Пример строки: 'alphabetical'. Ожидаемый результат: 'aaabcehillpt'
function alphabet_order(str) {
// Ваш код
}
document.writeln(alphabet_order("alphabetical"));
Решение:
function alphabet_order(str) {
return str.split('').sort().join('');
}
document.writeln(alphabet_order("alphabetical")); // "aaabcehillpt"
</script>
Салам! Напиши программу на JavaScript для сортировки списка элементов с использованием Bogosort.
В информатике bogosort - это особенно неэффективный алгоритм сортировки, основанный на парадигме генерации и тестирования. Алгоритм последовательно генерирует перестановки своего ввода, пока не найдет отсортированный. Это не полезно для сортировки, но может использоваться в образовательных целях, чтобы противопоставить его другим более реалистичным алгоритмам.
Решение:
function Bogosort(arr){
var isSorted = function(arr){
for(var i = 1; i < arr.length; i++){
if (arr[i-1] > arr[i]) {
return false;
}
}
return true;
};
function shuffle(arr){
var count = arr.length, temp, index;
while(count > 0){
index = Math.floor(Math.random() * count);
count--;
temp = arr[count];
arr[count] = arr[index];
arr[index] = temp;
}
return arr;
}
function sort(arr){
var sorted = false;
while(!sorted){
arr = shuffle(arr);
sorted = isSorted(arr);
}
return arr;
}
return sort(arr);
}
var arra = [3, 0, 2, 5, -1, 4, 1];
console.log("Original Array Elements");
console.log(arra);
console.log("Sorted Array Elements");
console.log(Bogosort(arra));
В информатике bogosort - это особенно неэффективный алгоритм сортировки, основанный на парадигме генерации и тестирования. Алгоритм последовательно генерирует перестановки своего ввода, пока не найдет отсортированный. Это не полезно для сортировки, но может использоваться в образовательных целях, чтобы противопоставить его другим более реалистичным алгоритмам.
Решение:
var isSorted = function(arr){
for(var i = 1; i < arr.length; i++){
if (arr[i-1] > arr[i]) {
return false;
}
}
return true;
};
function shuffle(arr){
var count = arr.length, temp, index;
while(count > 0){
index = Math.floor(Math.random() * count);
count--;
temp = arr[count];
arr[count] = arr[index];
arr[index] = temp;
}
return arr;
}
function sort(arr){
var sorted = false;
while(!sorted){
arr = shuffle(arr);
sorted = isSorted(arr);
}
return arr;
}
return sort(arr);
}
var arra = [3, 0, 2, 5, -1, 4, 1];
console.log("Original Array Elements");
console.log(arra);
console.log("Sorted Array Elements");
console.log(Bogosort(arra));
Привет! Давай решим задачу)
Напишите функцию JavaScript, которая принимает строку в качестве параметра и находит самое длинное слово в строке.
Решение:
function find_longest_word(str)
{
var array1 = str.match(/\w[a-z]{0,}/gi);
var result = array1[0];
for(var x = 1 ; x < array1.length ; x++)
{
if(result.length < array1[x].length)
{
result = array1[x];
}
}
return result;
}
console.log(find_longest_word('Web Development Tutorial'));
Напишите функцию JavaScript, которая принимает строку в качестве параметра и находит самое длинное слово в строке.
Решение:
{
var array1 = str.match(/\w[a-z]{0,}/gi);
var result = array1[0];
for(var x = 1 ; x < array1.length ; x++)
{
if(result.length < array1[x].length)
{
result = array1[x];
}
}
return result;
}
console.log(find_longest_word('Web Development Tutorial'));
Доброе утро! Пора заниматься!
Напишите программу на JavaScript для вычисления показателя числа.
Примечание. Показатель числа говорит о том, сколько раз базовое число используется как фактор.
8 2 = 8 x 8 = 64. Здесь 8 - основание, а 2 - показатель степени.
Решение:
var exponent = function(a, n)
{
if (n === 0)
{
return 1;
}
else
{
return a * exponent(a, n-1);
}
};
console.log(exponent(4, 2));
Напишите программу на JavaScript для вычисления показателя числа.
Примечание. Показатель числа говорит о том, сколько раз базовое число используется как фактор.
8 2 = 8 x 8 = 64. Здесь 8 - основание, а 2 - показатель степени.
Решение:
{
if (n === 0)
{
return 1;
}
else
{
return a * exponent(a, n-1);
}
};
console.log(exponent(4, 2));
Хай! Чему равен typeof null в режиме use strict?
Ответ:
object
Все JavaScript-программисты давно привыкли к тому, что typeof null === 'object'; // true, хотя фактически null — примитивное значение. Многие знают, что это баг, и лично Брэндан Айк это признаёт. Этот баг, вероятно, никогда не будет исправлен из-за необходимости сохранения обратной совместимости существующего кода с новыми версиями языка.
Ответ:
Все JavaScript-программисты давно привыкли к тому, что typeof null === 'object'; // true, хотя фактически null — примитивное значение. Многие знают, что это баг, и лично Брэндан Айк это признаёт. Этот баг, вероятно, никогда не будет исправлен из-за необходимости сохранения обратной совместимости существующего кода с новыми версиями языка.
Всем привет! Сегодня задачка:
Напишите программу на JavaScript, чтобы нарисовать два пересекающихся прямоугольника, один из которых имеет альфа-прозрачность
Решение:
function draw()
{
var canvas = document.getElementById("canvas");
if (canvas.getContext)
{
var context = canvas.getContext("2d");
context.fillStyle ="rgb(256,0,0)";
context.fillRect (15, 10, 55, 50);
context.fillStyle ="rgba(0, 0, 200, 0.6)";
context.fillRect (35, 30, 55, 50);
}
}
Напишите программу на JavaScript, чтобы нарисовать два пересекающихся прямоугольника, один из которых имеет альфа-прозрачность
Решение:
{
var canvas = document.getElementById("canvas");
if (canvas.getContext)
{
var context = canvas.getContext("2d");
context.fillStyle ="rgb(256,0,0)";
context.fillRect (15, 10, 55, 50);
context.fillStyle ="rgba(0, 0, 200, 0.6)";
context.fillRect (35, 30, 55, 50);
}
}
Хай! Задача - найди ошибку!)
Код:
import React from "react";
const ToDoList = ({ items }) => {
return (
<div>
<ul>
{items.length && items.map(item => <li key={item.id}>{item.text}</li>)}
</ul>
</div>
);
};
const App = () => {
return (
<div>
<h2>Сегодня:</h2>
<ToDoList
items={[
{ id: 1, text: "Полить цветы" },
{ id: 2, text: "Помыть машину" },
{ id: 3, text: "Выкинуть мусор" },
]}
/>
<h2>Завтра:</h2>
<ToDoList items={[]} />
</div>
);
};
export default App;
Решение:
Решение
Если вы запустите код, вы заметите, что список дел на завтра отображает 0.
Это связано с тем, как JavaScript обрабатывает оператор &&. В React && обычно используется для условного рендеринга, если левая часть оператора && является ложной, тогда оператор && останавливает дальнейшее вычисление выражения.
true && "hello world" // "hello world" will be rendered
false && "hello world" // nothing will be rendered
Это работает, потому что React ничего не отобразит для логического значения false. Однако проблема с компонентом ToDoList заключается в том, что мы проверяем items.length, который возвращает 0, если элементов нет, что React отобразит как допустимый фрагмент JSX.
Код:
import React from "react";
const ToDoList = ({ items }) => {
return (
<div>
<ul>
{items.length && items.map(item => <li key={item.id}>{item.text}</li>)}
</ul>
</div>
);
};
const App = () => {
return (
<div>
<h2>Сегодня:</h2>
<ToDoList
items={[
{ id: 1, text: "Полить цветы" },
{ id: 2, text: "Помыть машину" },
{ id: 3, text: "Выкинуть мусор" },
]}
/>
<h2>Завтра:</h2>
<ToDoList items={[]} />
</div>
);
};
export default App;
Решение:
Решение
Это связано с тем, как JavaScript обрабатывает оператор &&. В React && обычно используется для условного рендеринга, если левая часть оператора && является ложной, тогда оператор && останавливает дальнейшее вычисление выражения.
true && "hello world" // "hello world" will be rendered
false && "hello world" // nothing will be rendered
Это работает, потому что React ничего не отобразит для логического значения false. Однако проблема с компонентом ToDoList заключается в том, что мы проверяем items.length, который возвращает 0, если элементов нет, что React отобразит как допустимый фрагмент JSX.
Привет! Пора решить задачу!
Напишите функцию JavaScript, чтобы проверить, является ли данный тип значения символом или нет.
Решение:
function is_char(value)
{
if ( Object.prototype.toString.call (value) !=='[object String]')
return false;
return value && value.length === 1;
}
console.log(is_char('f'));
console.log(is_char('*'));
Напишите функцию JavaScript, чтобы проверить, является ли данный тип значения символом или нет.
Решение:
{
if (
return false;
return value && value.length === 1;
}
console.log(is_char('f'));
console.log(is_char('*'));
Привет! Пора решать задачу!
Напишите функцию JavaScript для объединения данной строки n раз (по умолчанию 1).
Тестовые данные :
console.log (повтор ( 'Ха!'));
console.log (повтор ( 'Ха!', 2));
console.log (повтор ( 'Ха!', 3));
«Ха!»
«Ха! Ха!»
«Ха! Ха! Ха!»
Решение:
repeat = function repeat(str, count) {
if(typeof(count) =="undefined") {
count =1;
}
return count < 1 ? '' : new Array(count + 1).join(str);
}
console.log(repeat('Ha!'));
console.log(repeat('Ha!',2));
console.log(repeat('Ha!',3));
Ответ:
Ха!
Ха! Ха!
Ха! Ха! Ха!
Напишите функцию JavaScript для объединения данной строки n раз (по умолчанию 1).
Тестовые данные :
console.log (повтор ( 'Ха!'));
console.log (повтор ( 'Ха!', 2));
console.log (повтор ( 'Ха!', 3));
«Ха!»
«Ха! Ха!»
«Ха! Ха! Ха!»
Решение:
if(typeof(count) =="undefined") {
count =1;
}
return count < 1 ? '' : new Array(count + 1).join(str);
}
console.log(repeat('Ha!'));
console.log(repeat('Ha!',2));
console.log(repeat('Ha!',3));
Ха! Ха!
Ха! Ха! Ха!
Хай! Напишите программу на JavaScript для сортировки списка элементов с помощью Flash-сортировки.
Flashsort - это алгоритм сортировки распределения, показывающий линейную вычислительную сложность O (n) для равномерно распределенных наборов данных и относительно небольшую потребность в дополнительной памяти. Оригинальная работа была опубликована в 1998 году Карлом-Дитрихом Нойбертом.
Основная идея флэш-сортировки заключается в том, что в наборе данных с известным распределением легко сразу оценить, где должен быть размещен элемент после сортировки, когда известен диапазон набора.
Решение:
function flash_sort(arr)
{
var max = 0, min = arr[0];
var n = arr.length;
var m = ~~(0.45 * n);
var l = new Array(m);
for (var i = 1; i < n; ++i) {
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > arr[max]) {
max = i;
}
}
if (min === arr[max]) {
return arr;
}
var c1 = (m - 1) / (arr[max] - min);
for (var k = 0; k < m; k++) {
l[k] = 0;
}
for (var j = 0; j < n; ++j) {
k = ~~(c1 * (arr[j] - min));
++l[k];
}
for (var p = 1; p < m; ++p) {
l[p] = l[p] + l[p - 1];
}
var hold = arr[max];
arr[max] = arr[0];
arr[0] = hold;
//permutation
var move = 0, t, flash;
j = 0;
k = m - 1;
while (move < (n - 1)) {
while (j > (l[k] - 1)) {
++j;
k = ~~(c1 * (arr[j] - min));
}
if (k < 0) break;
flash = arr[j];
while (j !== l[k]) {
k = ~~(c1 * (flash - min));
hold = arr[t = --l[k]];
arr[t] = flash;
flash = hold;
++move;
}
}
//insertion
for (j = 1; j < n; j++) {
hold = arr[j];
i = j - 1;
while (i >= 0 && arr[i] > hold) {
arr[i + 1] = arr[i--];
Вывод:
Оригинальные элементы массива
[3,0,2,5, -1,4,1]
Сортированные элементы массива
[-1,0,1,2,3,4,5]
}
arr[i + 1] = hold;
}
return arr;
}
var arra = [3, 0, 2, 5, -1, 4, 1];
console.log("Original Array Elements");
console.log(arra);
console.log("Sorted Array Elements");
console.log(flash_sort(arra, 0, 5));
Flashsort - это алгоритм сортировки распределения, показывающий линейную вычислительную сложность O (n) для равномерно распределенных наборов данных и относительно небольшую потребность в дополнительной памяти. Оригинальная работа была опубликована в 1998 году Карлом-Дитрихом Нойбертом.
Основная идея флэш-сортировки заключается в том, что в наборе данных с известным распределением легко сразу оценить, где должен быть размещен элемент после сортировки, когда известен диапазон набора.
Решение:
{
var max = 0, min = arr[0];
var n = arr.length;
var m = ~~(0.45 * n);
var l = new Array(m);
for (var i = 1; i < n; ++i) {
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > arr[max]) {
max = i;
}
}
if (min === arr[max]) {
return arr;
}
var c1 = (m - 1) / (arr[max] - min);
for (var k = 0; k < m; k++) {
l[k] = 0;
}
for (var j = 0; j < n; ++j) {
k = ~~(c1 * (arr[j] - min));
++l[k];
}
for (var p = 1; p < m; ++p) {
l[p] = l[p] + l[p - 1];
}
var hold = arr[max];
arr[max] = arr[0];
arr[0] = hold;
//permutation
var move = 0, t, flash;
j = 0;
k = m - 1;
while (move < (n - 1)) {
while (j > (l[k] - 1)) {
++j;
k = ~~(c1 * (arr[j] - min));
}
if (k < 0) break;
flash = arr[j];
while (j !== l[k]) {
k = ~~(c1 * (flash - min));
hold = arr[t = --l[k]];
arr[t] = flash;
flash = hold;
++move;
}
}
//insertion
for (j = 1; j < n; j++) {
hold = arr[j];
i = j - 1;
while (i >= 0 && arr[i] > hold) {
arr[i + 1] = arr[i--];
[3,0,2,5, -1,4,1]
Сортированные элементы массива
[-1,0,1,2,3,4,5]
}
arr[i + 1] = hold;
}
return arr;
}
var arra = [3, 0, 2, 5, -1, 4, 1];
console.log("Original Array Elements");
console.log(arra);
console.log("Sorted Array Elements");
console.log(flash_sort(arra, 0, 5));
Привет! Выйдите из цикла, изменив только две отмеченные строки. Результат в консоли сейчас останавливается на 9 9. Должен на 5 4.
Решение:
cycle: for (let i = 0; i < 10; i++) { //! Эту строку можно изменить
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) {
break cycle; //! Эту строку можно изменить
}
console.log(i, j);
}
}
Решение:
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) {
break cycle; //! Эту строку можно изменить
}
console.log(i, j);
}
}
Напишите функцию JavaScript, чтобы получить наименьшее общее кратное (LCM) из двух чисел.
Замечания :
Согласно Википедии - общее число - это число, кратное двум или более целым числам. Общие кратные 3 и 4 равны 0, 12, 24, .... Наименьшее общее кратное (LCM) двух чисел - это наименьшее число (не ноль), которое кратно обоим.
Тестовые данные :
console.log (lcm_two_numbers (3,15));
console.log (lcm_two_numbers (10,15));
Выход :
15
30
Решение:
function lcm_two_numbers(x, y) {
if ((typeof x !=='number') || (typeof y !=='number'))
return false;
return (!x || !y) ? 0 : Math.abs((x * y) / gcd_two_numbers(x, y));
}
function gcd_two_numbers(x, y) {
x = Math.abs(x);
y = Math.abs(y);
while(y) {
var t = y;
y = x % y;
x = t;
}
return x;
}
console.log(lcm_two_numbers(3,15));
console.log(lcm_two_numbers(10,15));
Copy
Пример вывода:
15
30
Замечания :
Согласно Википедии - общее число - это число, кратное двум или более целым числам. Общие кратные 3 и 4 равны 0, 12, 24, .... Наименьшее общее кратное (LCM) двух чисел - это наименьшее число (не ноль), которое кратно обоим.
Тестовые данные :
console.log (lcm_two_numbers (3,15));
console.log (lcm_two_numbers (10,15));
Выход :
15
30
Решение:
if ((typeof x !=='number') || (typeof y !=='number'))
return false;
return (!x || !y) ? 0 : Math.abs((x * y) / gcd_two_numbers(x, y));
}
function gcd_two_numbers(x, y) {
x = Math.abs(x);
y = Math.abs(y);
while(y) {
var t = y;
y = x % y;
x = t;
}
return x;
}
console.log(lcm_two_numbers(3,15));
console.log(lcm_two_numbers(10,15));
Copy
30
Привет! Напишите программу на JavaScript для сортировки списка элементов с использованием Comb sort.
Расческа - это разновидность пузырчатой сортировки. Подобно сортировке «Шелл», сортировка «Гребень» увеличивает разрыв, используемый в сравнениях и обменах. Некоторые реализации используют сортировку вставкой, когда зазор меньше определенной величины. Основная идея состоит в том, чтобы исключить черепах или небольшие значения в конце списка, поскольку в пузырьковой сортировке они значительно замедляют сортировку. Кролики, большие значения в начале списка, не представляют проблемы в пузырьковой сортировке.
В пузырьковой сортировке, когда сравниваются любые два элемента, они всегда имеют разрыв 1. Основная идея гребенчатой сортировки состоит в том, что разрыв может быть намного больше 1.
Пример вывода:
Оригинальные элементы массива
[3,0,2,5, -1,4,1]
Сортированные элементы массива
[-1,0,1,2,3,4,5]
P.s решение будет позже)
Расческа - это разновидность пузырчатой сортировки. Подобно сортировке «Шелл», сортировка «Гребень» увеличивает разрыв, используемый в сравнениях и обменах. Некоторые реализации используют сортировку вставкой, когда зазор меньше определенной величины. Основная идея состоит в том, чтобы исключить черепах или небольшие значения в конце списка, поскольку в пузырьковой сортировке они значительно замедляют сортировку. Кролики, большие значения в начале списка, не представляют проблемы в пузырьковой сортировке.
В пузырьковой сортировке, когда сравниваются любые два элемента, они всегда имеют разрыв 1. Основная идея гребенчатой сортировки состоит в том, что разрыв может быть намного больше 1.
Пример вывода:
[3,0,2,5, -1,4,1]
Сортированные элементы массива
[-1,0,1,2,3,4,5]
Хай! Сегодня твоя задача: написать функцию range, принимающую два аргумента, начало и конец диапазона, и возвращающую массив, который содержит все числа из него, включая начальное и конечное.
Затем напишите функцию sum, принимающую массив чисел и возвращающую их сумму. Запустите указанную выше инструкцию и убедитесь, что она возвращает 55.В качестве бонуса дополните функцию range, чтобы она могла принимать необязательный третий аргумент – шаг для построения массива. Если он не задан, шаг равен единице. Вызов функции range(1, 10, 2) должен будет вернуть [1, 3, 5, 7, 9]. Убедитесь, что она работает с отрицательным шагом так, что вызов range(5, 2, -1) возвращает [5, 4, 3, 2].
P.s Решение будет позже)
Затем напишите функцию sum, принимающую массив чисел и возвращающую их сумму. Запустите указанную выше инструкцию и убедитесь, что она возвращает 55.В качестве бонуса дополните функцию range, чтобы она могла принимать необязательный третий аргумент – шаг для построения массива. Если он не задан, шаг равен единице. Вызов функции range(1, 10, 2) должен будет вернуть [1, 3, 5, 7, 9]. Убедитесь, что она работает с отрицательным шагом так, что вызов range(5, 2, -1) возвращает [5, 4, 3, 2].
P.s Решение будет позже)