Идентификаторы ISBN-10 состоят из десяти цифр. Первые девять символов - это цифры 0-9. Последняя цифра может быть от 0 до 9 или X, чтобы указать значение 10.
Номер ISBN-10 действителен, если остаток при делении суммы произведений цифр и их позиций на 11 равен 0.
Алгоритм:
ISBN: 1 1 1 2 2 2 3 3 3 9
Позиция: 1 2 3 4 5 6 7 8 9 10
Это действительный ISBN, потому что:
(1*1 + 1*2 + 1*3 + 2*4 + 2*5 + 2*6 + 3*7 + 3*8 + 3*9 + 9*10) % 11 = 0
Пример кода:
validISBN10("1112223339") => true
validISBN10("048665088X") => true
validISBN10("1234512345") => false
validISBN10("XXXXXXXXXX") => false
validISBN10("048665088XZ") => falseРешение задачи
function validISBN10(isbn) {
if (isbn.length !== 10) {
return false;
}
let sum = 0;
for (let i = 0; i < 10; i++) {
let char = isbn[i];
let value;
if (i === 9 && char === 'X') {
value = 10;
} else if (char >= '0' && char <= '9') {
value = parseInt(char, 10);
} else {
return false;
}
sum += value * (i + 1);
}
return sum % 11 === 0;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
Давайте рассмотрим использование CSS в качестве альтернативы JavaScript для создания простых таймеров. Используем современные свойства CSS, такие, как
@property, @keyframes, и псевдоэлементы со значениями counter().Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Разберем пять непростых вопросов: о сравнениях, пустых массивах, странном try catch, стрелочной функции и коварном JSON.stringify. Сможете ответить на них правильно?
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Предлагаем подборку бесплатных инструментов для стилистического оформления пользовательских интерфейсов. Они помогут фронтенд-разработчикам и дизайнерам существенно сэкономить время и повысить производительность.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Анимированная загрузка в виде точек и куба. Сделана на чистом CSS.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
• DRY-фреймворк: продолжение
• Как нарисовать квадрат 3 × 3 см на веб-странице*
• Скучный Интернет и как «бесполезные сайты» могут спасти от этого
• Простой мини-чат на FastApi: Современный интерфейс, вебсокеты и SQLAlchemy с деплоем
• Как мотивировать себя на правильные вещи
Please open Telegram to view this post
VIEW IN TELEGRAM
Удаление дубликатов — распространённая проблема в программировании, возникающая в различных контекстах, например, при очистке данных или обеспечении уникальности записей. Этот вопрос могут задать на собеседовании, поскольку он довольно прост и может подготовить собеседника к более сложным вопросам.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Наследование в CSS — это действительно суперспособность, и именно оно превращает разработку в Интернете в удовольствие, если вы принимаете его. В этой небольшой статье я собираюсь обратить вас в супер фанатов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая получает два IPv4-адреса и возвращает количество адресов между ними (включая первый, исключая последний).
Все входные данные будут действительными IPv4-адресами в виде строк. Последний адрес всегда будет больше первого.
Пример кода:
ipsBetween("150.0.0.0", "150.0.0.1") => 1
ipsBetween("10.0.0.0", "10.0.0.50") => 50
ipsBetween("10.11.12.13", "10.11.13.0") => 243
ipsBetween("50.0.0.0", "50.1.1.1") => 65793Решение задачи
function ipsBetween(start, end) {
// Функция для преобразования IP-адреса в число
function ipToNumber(ip) {
return ip.split('.').reduce((acc, octet) => (acc << 8) + parseInt(octet, 10), 0);
}
// Преобразование начального и конечного IP-адреса в числа
const startNum = ipToNumber(start);
const endNum = ipToNumber(end);
// Возвращаем количество адресов между ними
return endNum - startNum;
}
// Примеры использования
console.log(ipsBetween("150.0.0.0 ", " 150.0.0.1 ")); // => 1
console.log(ipsBetween("10.0.0.0 ", " 10.0.0.50 ")); // => 50
console.log(ipsBetween("10.11.12.13 ", " 10.11.13.0 ")); // => 243
console.log(ipsBetween("50.0.0.0 ", " 50.1.1.1 ")); // => 65793
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываем о лучших подходах к созданию паттерна Singleton в JavaScript и TypeScript. Также обсудим его плюсы и возможные недостатки при использовании в проектах.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Пишите более безопасный CSS, используя
@property, позволяющий определять типы для пользовательских свойств. Узнайте, почему традиционные запасные значения могут не сработать и как функции @property повышают устойчивость определений пользовательских свойств.Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Таймлайн с возможностью раскрывать пункты. Сделан на SVG, CSS и JavaScript.
Открыть код
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье я расскажу об одном из стандартных API JavaScript, о котором, вы, возможно не слышали. Это AbortController.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Веб формы и поля ввода поддерживают множество дополнительных атрибутов, способных дать подсказку браузеру и улучшить пользовательский опыт заполнения форм в Интернете. Приложив совсем немного дополнительных усилий, можно сделать так, чтобы формы помогали, а не мешали.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В современной веб-разработке CSS сброс и нормализация — две важные техники, позволяющие добиться согласованности стилей в разных браузерах.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Индикатор прогресса прокрутки — довольно простая вещь, которую можно создать с помощью анимации, основанной на прокрутке в
scroll()-стиле. Но мы создадим индикаторы для каждого раздела страницы, используя view()-стиль.Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В современной разработке на JavaScript для асинхронной работы и обработки ошибок часто применяются
try-catch и async-await, что утяжеляет код. Новый оператор ?= упрощает обработку ошибок и улучшает читаемость. В статье рассматриваются его работа, особенности и преимущества.Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Завершите решение так, чтобы оно возвращало значение true, если переданный первый аргумент (строка) заканчивается 2-м аргументом (также строкой).
Пример кода:
solution('abc', 'bc') // returns true
solution('abc', 'd') // returns falseРешение задачи
function solution(str, ending) {
return ending === '' || str.slice(-ending.length) === ending;
}
// Примеры использования
console.log(solution('abc', 'bc')); // возвращает true
console.log(solution('abc', 'd')); // возвращает false
console.log(solution('abc', '')); // возвращает true
Please open Telegram to view this post
VIEW IN TELEGRAM
Представляем семь HTML-приемов, которые помогут вам создавать более удобные и привлекательные сайты, улучшая взаимодействие с пользователями.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Кнопка с анимированным эффектом при наведении. Сделана на CSS, SVG и JavaScript.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM