JavaScript: Коммутативная операция
Фраза «от перемены мест слагаемых сумма не меняется» знакома каждому со школы. Этот принцип называется коммутативным законом и является одним из основных законов арифметики.
Что такое коммутативность
Операция называется коммутативной, если порядок операндов не влияет на результат: поменяв местами значения, вы получите тот же ответ. Пример коммутативной операции: сложение.
console.log(3 + 2); // => 5
console.log(2 + 3); // => 5Одинаковый результат подтверждает, что операция коммутативна.
2 + 3 = 5 3 + 2 = 5
└──────────┬─────────┘
одинаковый результат
2 - 3 = -1 3 - 2 = 1
└──────────┬─────────┘
разный результатНекоммутативные операции
Но не все операции обладают таким свойством. Например, вычитание является некоммутативной операцией:
console.log(2 - 3); // => -1
console.log(3 - 2); // => 1Перестановка операндов дает другой результат.
В программировании всё то же самое
Коммутативность в программировании работает точно так же, как в арифметике. JavaScript строго следует математическим правилам.
Другие некоммутативные операции:
- Деление: 8 / 2 ≠ 2 / 8
- Возведение в степень: 2 **3 ≠ 3** 2
Примеры в коде:
// Деление
console.log(8 / 2); // 8 делить на 2 = 4
// Возведение в степень
console.log(3 ** 2); // 3 в квадрате = 9Поэтому:
- Всегда внимательно проверяйте порядок операндов, особенно при работе с незнакомыми операциями;
- проверяйте коммутативность экспериментально, а не предполагайте её заранее.
Задание
Напишите программу, которая решает две задачи и выводит ответы на экран — каждый на отдельной строке.
- Художник хочет раскрасить 8 секций забора, каждую — в один из 2 цветов. Сколько уникальных вариантов раскраски существует? Используйте оператор возведения в степень
**. - Вы с двумя друзьями (итого 3 человека) купили 9 пирожных и хотите разделить их поровну. Сколько достанется каждому? Используйте оператор деления
/.
Полезное
JavaScript: Коммутативная операция
Фраза «от перемены мест слагаемых сумма не меняется» знакома каждому со школы. Этот принцип называется коммутативным законом и является одним из основных законов арифметики.
Что такое коммутативность
Операция называется коммутативной, если порядок операндов не влияет на результат: поменяв местами значения, вы получите тот же ответ. Пример коммутативной операции: сложение.
console.log(3 + 2); // => 5
console.log(2 + 3); // => 5Одинаковый результат подтверждает, что операция коммутативна.
2 + 3 = 5 3 + 2 = 5
└──────────┬─────────┘
одинаковый результат
2 - 3 = -1 3 - 2 = 1
└──────────┬─────────┘
разный результатНекоммутативные операции
Но не все операции обладают таким свойством. Например, вычитание является некоммутативной операцией:
console.log(2 - 3); // => -1
console.log(3 - 2); // => 1Перестановка операндов дает другой результат.
В программировании всё то же самое
Коммутативность в программировании работает точно так же, как в арифметике. JavaScript строго следует математическим правилам.
Другие некоммутативные операции:
- Деление: 8 / 2 ≠ 2 / 8
- Возведение в степень: 2 **3 ≠ 3** 2
Примеры в коде:
// Деление
console.log(8 / 2); // 8 делить на 2 = 4
// Возведение в степень
console.log(3 ** 2); // 3 в квадрате = 9Поэтому:
- Всегда внимательно проверяйте порядок операндов, особенно при работе с незнакомыми операциями;
- проверяйте коммутативность экспериментально, а не предполагайте её заранее.
Задание
Напишите программу, которая решает две задачи и выводит ответы на экран — каждый на отдельной строке.
- Художник хочет раскрасить 8 секций забора, каждую — в один из 2 цветов. Сколько уникальных вариантов раскраски существует? Используйте оператор возведения в степень
**. - Вы с двумя друзьями (итого 3 человека) купили 9 пирожных и хотите разделить их поровну. Сколько достанется каждому? Используйте оператор деления
/.
Полезное
Ваше упражнение проверяется по этим тестам
// @ts-check
import { expect, test, vi } from 'vitest';
test('commutativity', async () => {
const consoleLogSpy = vi.spyOn(console, 'log');
await import('./index.js');
const firstArg = consoleLogSpy.mock.calls.join('\n');
expect(firstArg).toBe('256\n3');
});Решение учителя откроется через:
20:00
