Идентификаторы 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
Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
• Базовое программирование, или Почему джуны не могут пройти к нам собеседование
• Я стал аналитиком, потому что не смог быть программистом
• Какие именно админы нужны на российском рынке и как получать больше разработчика
• Рецензия на книгу «MySQL. Сборник рецептов. 4-е издание»
• Чек-лист тестировщика в финансовой компании
Please open Telegram to view this post
VIEW IN TELEGRAM
bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Замыкания позволяют функции запоминать переменные из своей внешней области видимости даже после завершения выполнения внешней функции.
function makeCounter() {
let count = 0;
return function() {
return ++count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2🗣️ Замыкания полезны для создания функций с внутренним состоянием, например, счётчиков или настройки приватных данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пора устроить генеральную уборку в твоем HTML. Мы нашли 7 устаревших приемов, которые кричат: «Я застрял в прошлом!» Разберем каждый и найдем современную замену. Готов к обновлению?
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Часто бросаешься писать код, как только видишь баг? Это может только усугубить проблему.
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываем про частые ошибки в HTML и о том, как их избежать. Добавляйте в закладки!
Читать...
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
Наследование в CSS — это действительно суперспособность, и именно оно превращает разработку в Интернете в удовольствие, если вы принимаете его. В этой небольшой статье я собираюсь обратить вас в супер фанатов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Frontend-разработчик
Frontend Developer (Vanilla Javanoscript) / Фронтенд-разработчик
Frontend-разработчик
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
Завершите решение так, чтобы оно возвращало значение 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
В этой статье я расскажу об одном из стандартных 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