Спасибо за многочисленные примеры. Из них, вообще говоря, можно предположить, что включение нуля в множество натуральных чисел является признаком профессиональной деформации дискретных математиков и программистов. Для их задач удобнее оперировать множеством (|N U 0), а вводить для него новое обозначение они почему-то не хотят, проявляя упорство Королевы из «Двенадцати месяцев».
Спасибо за многочисленные примеры. Из них, вообще говоря, можно предположить, что включение нуля в множество натуральных чисел является признаком профессиональной деформации дискретных математиков и программистов. Для их задач удобнее оперировать множеством (|N U 0), а вводить для него новое обозначение они почему-то не хотят, проявляя упорство Королевы из «Двенадцати месяцев».
Я, если честно, не вспомню книгу, в которой ноль не подразумевался бы входящим во множество натуральных чисел.
Понятие натурального числа вводится в начальной школе. В любом школьном учебнике (кроме, возможно, каких-нибудь маргинальных вариантов) ряд натуральных чисел начинается с единицы. В большинстве вузовских учебников эта традиция продолжается. Лишь некоторые преподаватели дискретной математики сетуют на доставляемые им таким выбором неудобства.
Например, строки и столбцы матриц нумеруют, начиная с единицы. Элементы числовых последовательностей и рядов обычно нумеруются, начиная с единицы, хотя есть исключения, когда индекс используется для вычисления каких-нибудь значений.
Использование в качестве стартовой позиции в массиве 1 имеет смысл, когда вы рассуждаете как человек. (...) Если я правильно помню, таково было соглашение в языке Pascal, который, на мой взгляд, заслуживает огромного уважения.
В языке Pascal диапазон индексов мог быть произвольным интервальным типом и указывался при объявлении массива: ... array [from .. to] of ... Но с «человеческой» точки зрения нумерация с единицы действительно удобнее, что нашло своё отражение, например, в классической математике.
UPD. Полагаю, что можно «изобрести» бесконечно много таких «способов», отличающихся весовыми коэффициентами и правилами свёртки вычисленного результата в единственную цифру.
любой проект связанной с каким то электронным ширпотребом натыкается на то что китайцы все это уже выпускают и продают по цене которая меньше себестоимости производства и даже стоимости комплектующих у самх же китайцев.
Дело скорее всего в том, что китайские производители конечного продукта закупают комплектующие напрямую у китайских же производителей партиями (условно) не меньше 1000 шт . Конечный продукт производится на автоматических линиях тоже не единицами и не десятками.
Отсутствие больших затрат на транспортировку, оптовые скидки при покупке комплектующих, автоматизация производства и эффект масштаба могут давать существенную экономию.
Качество при это у них не очень, но цену ни перебить.
Качество у них очень разное и как раз зависит от цены. Если смотреть в низшем ценовом сегменте, то «не очень». В некоторых случаях речь может идти о продаже отбракованной продукции или продукции, ещё не прошедшей контроль качества. А если подороже, то и качество получше.
Верно, записанную в «перебираемом» разряде цифру проверять не надо, потому что она предполагается той, которую Незнайка изменил. Поэтому в каждом из четырёх разрядов перебираются не 10, а только 9 цифр.
Меня эта задача навела на другую мысль. Вот, например, если Незнайка записал на листке бумаги ПИН-код от своей банковской карточки, изменив в нём одну-единственную цифру, а Винтик со Шпунтиком нашли эту записку, то поможет ли им полученная информация воспользоваться банковской карточкой Незнайки?
UPD: То есть Винтику со Шпунтиком известно, что в записи ПИН-кода изменена одна-единственная цифра, но они не знают, какая именно.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Mul-Div TEST</title>
</head>
<body>
<h1>Mul-Div TEST</h1>
<script>
function TestDiv (a)
{
document.write ("TestDiv<br>");
let s = 0, n = a.length;
for (let i = 0; i < n; i++)
for (let j = 0; j < n; j++)
s += a[j] / 10;
return s;
}
function TestMul (a)
{
document.write ("TestMul<br>");
let s = 0, n = a.length;
for (let i = 0; i < n; i++)
for (let j = 0; j < n; j++)
s += a[j] * 0.1;
return s;
}
let n = 10000, a = new Array (n);
document.writeln ("Start preparation.<br>");
for (let i = 0; i < n; i++)
a[i] = i;
document.writeln ("Start calculation.<br>")
let d1 = new Date ();
/* let s = TestDiv (a); */
let s = TestMul (a);
let d2 = new Date ();
let dt = d2.getTime () - d1.getTime ();
document.writeln ("Sum = " + s + "<br>");
document.writeln ("Calculation time: " + dt + " ms<br>");
</script>
</body>
</html>
И загрузил его в браузер несколько раз, меняя let s = TestDiv (a) на let s = TestMul (a) и наоборот. Получилось вот что:
TestDiv
Sum = 49995000000
Calculation time: 511 ms
TestMul
Sum = 49995000000
Calculation time: 244 ms
Если бороться за производительность, то следовало бы создать для результата сразу массив требуемого размера (1 + max (arr1.length,arr2.length)) и заполнять его элементы по индексам в нужном порядке.
До распространения генеративного ИИ всё это безобразие хотя бы ограничивалось 1-м апреля...
Спасибо за многочисленные примеры. Из них, вообще говоря, можно предположить, что включение нуля в множество натуральных чисел является признаком профессиональной деформации дискретных математиков и программистов. Для их задач удобнее оперировать множеством (|N U 0), а вводить для него новое обозначение они почему-то не хотят, проявляя упорство Королевы из «Двенадцати месяцев».
Спасибо за многочисленные примеры. Из них, вообще говоря, можно предположить, что включение нуля в множество натуральных чисел является признаком профессиональной деформации дискретных математиков и программистов. Для их задач удобнее оперировать множеством (|N U 0), а вводить для него новое обозначение они почему-то не хотят, проявляя упорство Королевы из «Двенадцати месяцев».
Хотелось бы, конечно, увидеть хотя бы один пример авторитетного учебника по математике, в котором определяется, что |N = {0, 1, 2, ...}
А то беру я, например, «Pre-Calculus»
и читаю на стр. 23:
... where n is a natural number (a positive integer, or counting number like 1, 2, 3, 4, etc.).
Или, к примеру, «Abstract Algebra: Theory and Applications», на с. 4:
N = {n : n is a natural number} = {1, 2, 3, . . .};
Понятие натурального числа вводится в начальной школе. В любом школьном учебнике (кроме, возможно, каких-нибудь маргинальных вариантов) ряд натуральных чисел начинается с единицы. В большинстве вузовских учебников эта традиция продолжается. Лишь некоторые преподаватели дискретной математики сетуют на доставляемые им таким выбором неудобства.
А какой процент поступивших становятся выпускниками?
Например, строки и столбцы матриц нумеруют, начиная с единицы. Элементы числовых последовательностей и рядов обычно нумеруются, начиная с единицы, хотя есть исключения, когда индекс используется для вычисления каких-нибудь значений.
В языке Pascal диапазон индексов мог быть произвольным интервальным типом и указывался при объявлении массива:
... array [from .. to] of ...
Но с «человеческой» точки зрения нумерация с единицы действительно удобнее, что нашло своё отражение, например, в классической математике.Странный какой-то Cash... То ли кусочек сыра, то ли фотоаппарат...
Спасибо за понятное объяснение решения. Это напоминает методы генерирования контрольного разряда в разных идентификаторах.
UPD. Полагаю, что можно «изобрести» бесконечно много таких «способов», отличающихся весовыми коэффициентами и правилами свёртки вычисленного результата в единственную цифру.
Дело скорее всего в том, что китайские производители конечного продукта закупают комплектующие напрямую у китайских же производителей партиями (условно) не меньше 1000 шт . Конечный продукт производится на автоматических линиях тоже не единицами и не десятками.
Отсутствие больших затрат на транспортировку, оптовые скидки при покупке комплектующих, автоматизация производства и эффект масштаба могут давать существенную экономию.
Качество у них очень разное и как раз зависит от цены. Если смотреть в низшем ценовом сегменте, то «не очень». В некоторых случаях речь может идти о продаже отбракованной продукции или продукции, ещё не прошедшей контроль качества. А если подороже, то и качество получше.
Наверное, лучше написать, что стала стандартом двойная бухгалтерская запись. Двойная бухгалтерия ассоциируется с не совсем законной деятельностью...
Верно, записанную в «перебираемом» разряде цифру проверять не надо, потому что она предполагается той, которую Незнайка изменил. Поэтому в каждом из четырёх разрядов перебираются не 10, а только 9 цифр.
Да, так и есть. Спасибо. Когда писал вопрос, почему-то казалось, что никакой полезной информации «записка» не несёт.
Меня эта задача навела на другую мысль. Вот, например, если Незнайка записал на листке бумаги ПИН-код от своей банковской карточки, изменив в нём одну-единственную цифру, а Винтик со Шпунтиком нашли эту записку, то поможет ли им полученная информация воспользоваться банковской карточкой Незнайки?
UPD: То есть Винтику со Шпунтиком известно, что в записи ПИН-кода изменена одна-единственная цифра, но они не знают, какая именно.
Деление на вещественное число не повлияло заметно на результат. Кажется, что умножение всё равно выполняется быстрее деления.
Я сделал такой HTML-файл для тестирования:
Скрытый текст
И загрузил его в браузер несколько раз, меняя let s = TestDiv (a) на let s = TestMul (a) и наоборот. Получилось вот что:
Если
Math.floor (sum / 10)
заменить на~~(sum * 0.1)
, то будут сэкономлены ещё несколько тактов процессора.Нет, такой вывод был бы поспешным. Но, по крайней мере, это можно обсуждать...
Если бороться за производительность, то следовало бы создать для результата сразу массив требуемого размера (1 + max (arr1.length,arr2.length)) и заполнять его элементы по индексам в нужном порядке.