что такое конкатенация в математике
Конкатенация как математический оператор
Тaк как здесь грозит зачистка, открою дискуссию тут…
Автор видео для получения числа «10958»
В листингах часто приходится громоздить «x = x * 10 + n» или «x = (x
Alikberov
> P.S.: А что Вы думаете?
Все операторы нужны.
Все операторы важны.
> применил нестандартный трюк, с которым программисты имеют дело сплошь и рядом.
Тем самым он нарушил условия задачи?
Alikberov
> P.S.: А что Вы думаете?
Я ничерта не понимаю в математике, но мне кажется, что это ни разу не алгебраическая операция и толку от неё не будет. С таким же успехом можно ввести оператор перестановки цифр местами или переворот цифры чтобы из 6 получать 9 и наоборот.
RroRhBad
> Я ничерта не понимаю в математике, но мне кажется, что это ни разу не
> алгебраическая операция и толку от неё не будет. С таким же успехом можно
> ввести оператор перестановки
Ты явно недооцениваешь скоуп современной алгебры 🙂
https://en.wikipedia.org/wiki/Concatenation#Algebraic_properties
Zegalur
> Ты явно недооцениваешь скоуп современной алгебры 🙂
Пора писать диссертацию по переворачиванию девятки.
RroRhBad
> Пора писать диссертацию по переворачиванию девятки.
Этo тоже работает:
«5» vs «2» === «101» vs «010»;
«9» vs «6» === «1001» vs «0110».
Прослеживается инверсия «5» и «9» в «2» и «6» так же, как и их графическое переворачивание…
RroRhBad
> Пора писать диссертацию по переворачиванию девятки.
Ну на курсовую темы около этого можно генерировать до бесконечности. Например:
«Конечно ли множество простых чисел, которые остаются простыми после переворачивания 9-к и 6-к?»
Конкатенация числа и цифры это же просто f(x,y)=10*x+y
Два произвольных числа чуть сложнее, но смысл тот же.
Как видно операцию легко притянуть к произвольной системе исчисления, т.е. даже можно продолжать относится к числам как к числам а не строкам при любой базе.
Немного покопаться и теорем настрогать можно только в путь. Если уже не.
Есть даже такая шняга:
https://en.wikipedia.org/wiki/Actuarial_notation
Как раз недавно хотел вбросить тему про конкатенацию. Правда, немного про другое. Но раз так удачно стеклось, то вбросим здесь.
Добиться сего можно следующими постулатами:
— в дополнение к множеству символов, вводится множество «минус-символов». Каждому символу, условно говоря, соответствует символ с таким же кодом, но отрицательным (в том числе символу с кодом 0). Обозначим символ «минус а» записью «
a) == a.
— строка может состоять как из «плюс» символов, так и «минус» символов, в любой комбинации, но:
— комбинация a
Введённое таким образом отрицание и вычитание строк, как нетрудно убедиться, обладает всеми интересующими нас свойствами.
Алгебраическая конкатенация и её возможности по переводу чисел между системами счисления
Алгебраическая конкатенация
Для начала, еще раз, распишем, что такое «Алгебраическая конкатенация».
Для примера возьмем число 10958 и представим его с операцией конкатенации, а именно: 1‖0‖9‖5‖8 = (((1 * 10 + 0) * 10 + 9) * 10 + 5) * 10 + 8.
Т.е операция «конкатенации» это: a ‖ b = (a * 10) + b; Но 10 — это «хитрое» число… Это число следующие за максимальным в системе счисления, ну т.е. это просто основание системы счисления т.е. общий вид такой:
a ‖ b = (a * m) + b, где m – основание системы счисления представленное в обозначении самой системы.
Но такое определение мне не очень нравится, ибо m больше чем возможные числа внутри системы. Давайте сделаем чуть хитрее.
, где m_1 — это целое число означающее 1 в системе счисления, а m^k — основание системы счисления. Вот теперь получилось красиво с точки зрения определения, но
a ‖ b = (a * 10) + b – легче для восприятия.
Давайте, на всякий случай, проверим, что действительно это работает и пересчитаем описанные выше операции на 10958.
Двоичная: 10 1010 1100 1110 = 1‖0‖1‖0‖1‖0‖1‖1‖0‖0‖1‖1‖1‖0 = ((((((((((((1 * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1) * 10 + 0) * 10 + 0) * 10 + 1) * 10 + 1) * 10 + 1) * 10 + 0
Восьмеричная: 25316 = 2‖5‖3‖1‖6 = (((2 * 10 + 5) * 10 + 3) * 10 + 1) * 10 + 6
Шестнадцатеричная 2ACE = 2‖A‖C‖E = ((2 * 10 + A) * 10 + C) * 10 + E
И тут кроется собственно фокус быстрого перевода чисел из одно системы счисления в другую.
Причем на ней сохраняются свойства обычной конкатенации:
1) Операция конкатенации неассоциативна.
То есть, если нужно выполнить конкатенацию трёх цифр, то от расстановки скобок результат изменится: ( 1 ‖ 2) ‖ 3 = 123, и в то же время 1 ‖ ( 2 ‖ 3 ) = 33.
2) Операция конкатенации некоммутативна.
В самом деле, wiki ‖ media = wikimedia, но media ‖ wiki = mediawiki ≠ wikimedia. От перестановки операндов меняется результат операции, что и означает её некоммутативность.
3) Пустое слово — ε, — является нейтральным элементом (единицей) операции конкатенации.
То есть, если ε— пустое слово, то для любого слова α выполнено равенство: ε ‖ a = a ‖ ε = a
4) Длина (количество букв) конкатенации слов равна сумме длин операндов:
|α ‖ β| = |α| + |β|.
Классический способ смены системы счисления
Но для начала рассмотрим классический способ перевода чисел из десятичной системы в восьмеричную. Для это используется операция деления и взятие остатка от деления.
Для примера возьмем 672 и переведем его восьмеричную систему счисления.
А перевод числа 934 в шестнадцатеричную систему счисления выглядит так.
Количество тактов по расчету чисел здесь довольно больше.
Более того перевод целого числа в систему счисления с новым основанием всегда делается через десятичную систему счисления. Т.е. число из исходной системы счисления загоняем в десятичное, а потом это число из десятичное систему счисления переводим в финальную систему счисления.
Как-то очень муторно…
Есть конечно таблицы триад и тетрад. Которые позволяют переводить числа из двоичной системы счисления в восьмеричную и шестнадцатеричную. Но это всё.
Смена системы счисления через алгебраическую конкатенацию
Вчера удалось понять, что операция «алгебраической конкатенации» позволяет нам упростить перевод до базового умножения. И переводить из любой системы счислению в любую другую без промежуточного звена, но нам потребуется пара таблиц-представлений.
Таблица 1 – представление цифр в разных системах счисления:
По горизонтали мы видим здесь представление числа в разных система счисления, а по вертикали указана основание системы счисления.
Далее распишем как выглядят основания одной системы счисления в другой системе счисления. Т.е. размерность системы в представлении другой системы. Например, основание десятичной системы счисления в шестнадцатеричной выглядит так:
Таблица 2 – множители основания системы в разных система счисления.
По горизонтали здесь исходная система счисления, а по вертикали – та, в которую хотим перевести.
Получается, чтобы перевести число 934 из десятичной системы счисления в шестнадцатеричную мы просто берем числа из таблицы.
9‖3‖4
= (9 * 10 + 3) * 10 + 4 — запись в десятичной системе
= (9 * A + 3) * A + 4 — здесь и далее уже шестнадцатеричная система
= (5A + 3) * A + 4
= 5D * A + 4
= 3A2 + 4
= 3A6
Возьмем еще одно число, на этот раз в двоичной системе счисления 1101011, и попробуем получить восьмеричную, потом десятичную и обратно в двоичную
1101011
= 1‖1‖0‖1‖0‖1‖1 — запись в двоичной системе
= (((((1 * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 0) * 10 + 1) * 10 + 1 — запись в двоичной системе
= (((((1 * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 0) * 2 + 1) * 2 + 1 — восьмеричная система
= 153 — восьмеричная система
= 1‖5‖3
= (1 * 10 + 5) * 10 + 3 — восьмеричная система
= (1 * 8 + 5) * 8 + 3 – в десятичной системе
= 107 – в десятичной системе
= 1‖0‖7 – в десятичной системе
= (1 * 10 + 0) * 10 + 7 – в десятичной системе
= (1 * 1010 + 0) * 1010 + 111- запись в двоичной системе
= 1101011 — запись в двоичной системе.
Собственно, этим можно заниматься весь день.
Тут нужно понимать, что операции, которые мы выполним над это строкой уже делаются в указанной системе счисления, поэтому и результат будет отличаться.
Вывод
По сути мы получили универсальную систему перевода целых чисел. В которой не нужно ни деление и взятие остатков. И даже перевода во вспомогательную систему счисления.
Но нужно будет подумать над дробной частью, что-то сходу она мне не поддалась…
Я поискал в сети способы перевода одной системы в другую, но что-то везде всё упирается во взятие остатков, а прямого перевода через умножение я так и не нашел. Может плохо искал?
Ведь по факту, с точки зрения визуального представление, — это просто смещение числа по разрядам и всё… Странно как-то, что нет описания такого просто решения… Ибо больше напоминает математический фокус, чем что-то новое и необычное. В чем я не прав? Жду ваших замечаний.
Конкатенация
Смотреть что такое «Конкатенация» в других словарях:
КОНКАТЕНАЦИЯ — Сцепление операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов микро и мир даст слово микромир Словарь бизнес терминов. Академик.ру. 2001 … Словарь бизнес-терминов
КОНКАТЕНАЦИЯ — [лат. concatenatio присоединение цепями, связь, сцепление] 1) инф. операция соединения таков в одну цепочку; серия взаимозависимых вещей или событий; 2) филол. порядок следования понятий и слов, их обозначающих, в высказывании (предложении);… … Словарь иностранных слов русского языка
конкатенация — связь, соединение, сочленение, сцепление. Ant. разъединение, размежевание Словарь русских синонимов … Словарь синонимов
конкатенация — Конкатенция = размещение двух или более объектов непосредственно друг за другом. Например, «treehouse» это конкатенция слов «tree» и «house», которые размещены друг за другом. [http://www.rfcmd.ru/glossword/1.8/index … Справочник технического переводчика
Конкатенация — (лат. concatenatio «присоединение цепями; сцепление») операция склеивания объектов линейной структуры, обычно строк. Например, конкатенация слов «микро» и «мир» даст слово «микромир». Содержание 1 В математике 1.1 Свойства конкатенации … Википедия
конкатенация — конкатен ация, и … Русский орфографический словарь
конкатенация — Syn: связь, соединение, сочленение, сцепление Ant: разъединение, размежевание … Тезаурус русской деловой лексики
конкатенация контейнеров — Метод, позволяющий адаптировать существующий набор контейнеров с фиксированной емкостью, для передачи сверхбольших потоков данных за счет объединения нескольких последовательно передаваемых однотипных контейнеров. Составной контейнер может… … Справочник технического переводчика
конкатенация речевых фрагментов — Способ сборки осмысленных речевых фраз из заранее записанных голосовых фрагментов. [Л.М. Невдяев. Телекоммуникационные технологии. Англо русский толковый словарь справочник. Под редакцией Ю.М. Горностаева. Москва, 2002] Тематики электросвязь,… … Справочник технического переводчика
конкатенация строк — объединение строк в цепочку — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы объединение строк в цепочку EN line concatenation … Справочник технического переводчика
СОДЕРЖАНИЕ
Синтаксис
Выполнение
Конкатенация наборов строк
В теории формального языка и сопоставлении с образцом (включая регулярные выражения ) операция конкатенации строк обобщается до операции над наборами строк следующим образом:
В этом контексте наборы строк часто называют формальными языками. Оператор конкатенации обычно выражается как простое сопоставление (как в случае умножения ).
Алгебраические свойства
Приложения
Аудио / телефония
Сами записи существуют отдельно, но воспроизведение их одна за другой дает слушателю грамматически правильное предложение.
Программирование для любого вида компьютеризированной системы оповещения также может использовать конкатенацию для динамических публичных объявлений (например, полеты в аэропорту). Система будет архивировать записанную речь с числами, маршрутами или авиакомпаниями, пунктами назначения, временем и т. Д. И воспроизводить их в определенной последовательности для создания грамматически правильного предложения, которое объявляется по всему объекту.
Теория баз данных
Один из принципов проектирования реляционной базы данных состоит в том, что поля таблиц данных должны отражать единственную характеристику объекта таблицы, что означает, что они не должны содержать сцепленных строк. Если в отчете требуется конкатенация, она должна быть предоставлена во время выполнения отчета. Например, чтобы отобразить физический адрес определенного клиента, данные могут включать номер здания, название улицы, номер подразделения здания, название города, название штата / провинции, почтовый индекс и название страны, например, «123 Fake St Apt 4, Boulder, CO 80302, USA », объединяющая семь месторождений. Однако таблица данных клиентов не должна использовать одно поле для хранения этой объединенной строки; скорее, объединение семи полей должно произойти при запуске отчета. Причина таких принципов заключается в том, что без них ввод и обновление больших объемов данных становится подверженным ошибкам и трудоемким. Отдельный ввод города, штата, почтового индекса и страны позволяет проверить ввод данных (например, определить недопустимое сокращение штата). Затем эти отдельные элементы можно использовать для сортировки или индексации записей, например, все с «Boulder» в качестве названия города.