ТЫ ПРОГРАММИСТ !
14 subscribers
190 photos
16 videos
132 links
Пожалуй, самый качественный IT-юмор. Компьютерщик, Пользователь, Разработчик.

Паблик ВК: vk.com/tiproger
Чат: @tiprogerch
Предложка: @localhost_post_bot

Реклама, ВП: @BarMentaLisk
加入频道
#JavaScript
Как выявить есть ли арифметическая или геометрическая прогрессия в массиве?

Арифметическая, например:

const isArithmeticProgression = arr =>
arr.length > 1
? new Set(arr.map((n, i, a) => n - a[i + 1]).slice(0, -1)).size === 1
: !!arr.length;

// или

const isArithmeticProgression = arr =>
!!arr.length && arr.every((n, i, a) => !i || (n - a[i - 1] === a[1] - a[0]));

Геометрическая проверяется аналогично.
🟢 У нас выражение на JavaScript. Начало переводится так: «Возьми букву b, соедини с буквой a, дальше…»

А дальше интересно. Смотрите на два плюсика в середине. Первый плюсик означает «сложи» или «соедини» — то же самое, что самый первый плюс в этом выражении.

А второй плюс — это унарный оператор, он преобразовывает следующую за ним строку в число. Следующая за ним строка — буква «a», это не число. Унарный оператор возвращает значение NaN — Not a Number, то есть «ожидал, что будет число, а это не число».

Получается baNaN.

Потом к этому добавляется ещё одна «a» по тому же принципу, что в начале. Получается baNaNa.

Дальше эту строку преобразовывают в нижний регистр с помощью .toLowerCase () и получается banana.

Подвох был в унарном операторе. То, что это именно он, со стороны не очевидно, потому что для нас это просто плюс. Но JavaScript смотрит на место этого плюса и понимает, что имелось в виду преобразование в число.

#JS #JavaScript #ITHumour #Программирование #ЛикБез #Разработка #Юмор #БиполярноАффективныйРеактор #BAReactor #bartgbot

vk.com/bareactor
t.me/bareactor
1👍1🔥1