Аксиоматические основы функций подстановки… — Научная электронная библиотека
СОДЕРЖАНИЕВведение
Часть 1. Аксиоматические основы функций подстановки в системе счисления ряда факториальных множеств1. Непозиционные и позиционные системы счисления
2. Перевод целых чисел из одной позиционной системы счисления в другую
3. Системы счисления и теория множеств
3.1. Множества и десятичная система счисления
3.2. Позиционный метод формирования множеств
3.3. Теоремы о числе элементов позиционных множеств
3.4. Основные характеристики позиционных систем счисления
4. Аксиоматические основы подстановок ряда факториальных множеств
4.1. Подстановки (перестановки), факториал, ряд факториальных множеств
4.2. Система определений ряда факториальных множеств
4.3. Проблема нумерации элементов ряда факториальных множеств
4.4. Структура, определения и теоремы ряда факториальных множеств
4.5. Распределение теорем по факториальным множествам и их структурные характеристики
5. Система счисления ряда факториальных множеств
5.1. Принципы и этапы формирования системы счисления ряда факториальных множеств
5.2. Правила построения системы счисления ряда факториальных множеств
6. Алгоритмы преобразования элементов множества из десятичной системы счисления в систему счисления ряда факториальных множеств и обратно
6.1. Преобразования элементов множества из десятичной системы счисления в систему счисления ряда факториальных множеств
6.2. Преобразования элементов множества из системы счисления ряда факториальных множеств в десятичную систему счисления
6.3. Теоремы преобразования чисел
7. Система счисления ряда факториальных множеств и реализация подстановок
7.1. Метод последовательного циклического сдвига элементов факториальных множеств
7.2. Алгоритм формирования множества числовых значений циклических сдвигов
8. Системы счисления рядов упорядоченных множеств
9. Общие характеристики подстановок ряда факториальных множеств
9.1. Независимые циклы и их количество
9.2. Декремент подстановки
9.3. Инверсия подстановки
9.4. Четность подстановки
9.5. Знак подстановки
9.6. Постановка задачи исследования для одиночных подстановок с наилучшими характеристиками
10. Состав и характеристики подстановок факториальных множеств Ф1 и Ф2
11. Состав и характеристики подстановок факториального множества Ф3
11.1. Количество независимых циклов подстановок множества Ф3
11.2. Декремент подстановок множества Ф3
11.3. Инверсия подстановок множества Ф3
11.4. Количество независимых циклов и декремент подстановок множества Ф3
11.5. Декремент и инверсия подстановок множества Ф3
11.6. Количество независимых циклов, декремент и инверсия множества Ф3
12. Состав и характеристики подстановок множества Ф4
12.1. Количество независимых циклов множества Ф4
12.2. Декремент подстановки множества Ф4
12.3. Инверсия подстановок множества Ф4
12. 4. Количество независимых циклов и декремент подстановок множества Ф4
12.5. Декремент и инверсия подстановок множества Ф4
12.6. Количество независимых циклов, декремент и инверсия множества Ф4
13. Состав и характеристики подстановок множества Ф5
13.1. Количество независимых циклов множества Ф5
13.2. Декремент подстановок множества Ф5
13.3. Инверсия подстановок множества Ф5
13.4. Количество независимых циклов и декремент подстановок множества Ф5
13.5. Декремент и инверсия подстановок множества Ф5
13.6. Количество независимых циклов, декремент и инверсия подстановок множества Ф5
14. Характеристики подстановок произвольного факториального множества. Критерии выбора одиночных подстановок с наилучшими характеристиками
14.1. Количество независимых циклов подстановок
14.2. Декремент подстановок
14.3. Количество независимых циклов и декремент подстановок
14.4. Инверсия подстановок
14.5. Критерии выбора одиночных подстановок с наилучшими характеристиками
15. Статистические данные количества независимых циклов подстановок и их анализ
15.1. Статистические данные количества независимых циклов подстановок
15.2. Последовательный алгоритм формирования значений количества независимых циклов и их числа в целом и по диапазонам факториального множества Ф5
15.3. Результаты анализа статистических данных количества независимых циклов
16. Статистические данные декремента подстановок и их анализ
16.1. Статистические данные декремента подстановок
16.2. Последовательный алгоритм формирования значений декремента и их числа в целом и по диапазонам множества Ф5
16.3. Результаты анализа статистических данных декремента
17. Статистические данные инверсии подстановок и их анализ
17.1. Статистические данные инверсии подстановок
17.2. Последовательный алгоритм формирования значений инверсии и их числа в целом и по диапазонам множества Ф5
17.3. Результаты анализа статистических данных инверсии
18. Аксиоматическое построение подстановок ряда факториальных множеств
Список литературы
П1.1. Числа в математике и нашей жизни
П1.2. Устный счет
П1.3. Римская система записи чисел
П1.4. Счет у первобытных народов
П1.5. Числа ацтеков в Мексике в XI–XVI вв
П1.6. Египетская нумерация
П1.7. Алфавитные нумерации
П.1.7.1. Греческое алфавитное изображение чисел
П.1.7.2. Алфавитная нумерация Древней Руси
П1.8. Позиционные системы
П1.8.1. Клинописная запись чисел Древнего Вавилона
П1.8.2. Цифры индейцев племени майя
Список литературы к приложению 1
4.6. Смешанные позиционные системы счисления. Факториальная система
Важным
обобщением позиционных систем с
постоянным основанием являются смешанные системы, где основания меняются от
разряда к разряду. Обозначим основания
разрядов с номерами 0, 1, …, k через р0, р1, . .., рk.
Тогда запись вида Аp=k…210 означает
представление в смешанной системе
счисления величины kр(k-1)
… p1р0 + …+ 2p1р0 + 1р0 + 0.
Каждый коэффициент i удовлетворяет
неравенcтву: 0
i
Проще всего осуществить такой перевод последовательным делением числа и его частных на основания р0, р1, …, рk . Остатки от деления на каждом шаге и самое последнее частное в итоге образуют искомую запись числа в смешанной системе.
Пример 1. Выразим временной период А = 1 526 840 секунд в общепринятой системе измерения времени «сек — мин — ч — сут. — нед. — — годы», где р0 = 60, р1 = 60, р2 = 24, р3 = 7, р4 =52.
Решение. 1526840 60
1526820 25447 60
20 25440 424 24
7 408 177
16 142
3.
Рассматривая в обратном порядке остатки от деления на каждом шаге и самое последнее частное, получим искомую запись числа:
А =43210=2/3/16/07/20 = 2 недели 3 дня 16 часов 7 минут 20 секунд.
Обратный перевод из смешанной системы в десятичную осуществляют посредством умножения каждого символа k на сомножитель, представляющий собой произведение рkр(k–1)∙∙∙p1р0, с последующим суммированием полученных произведений.
С точки зрения практического применения в комбинаторных задачах из смешанных систем счисления для представления целых чисел наиболее важна факториальная, где стоимость каждого разряда с номером i равна i!. При этом основание разряда равно pi = i + 1.
Запись k∙∙∙210. в факториальной системе обозначает число Аф =kk! +…+2 2!+ 11!+0. Поскольку в математике принято соглашение 0! = 1, то в факториальной системе всегда задается 0 =0. Правила перевода из десятичной системы счисления в факториальную и обратно аналогичны правилам для всех смешанных систем.Пример 2. Перевести в факториальную систему счисления число А = 62710.
Решение.
627 1
627 6272
0 6263133
1 3121044
0 255
1
Ответ: Искомое представление числа в факториальной системе имеет вид: А ф = 510110.
Обратный перевод выполняется следующим образом:
А = 55! + 14! + 0 3! + 12! + 1 1! =5120 + 124 + 12 + 11 = = 600 + 24 + 2 + 1 = 62710.
Факториальная запись чисел удобна для подсчета вариантов множеств, состоящих из взаимно отличных друг от друга объектов.
Задачи
1. Перевести в двоичную систему числа:
а) 105210, б) 0,96510, в) 31,5310, г) 159,6610
.2. Перевести в десятичную систему числа:
а) 11001102, б) 0,00102, в) 10101,0112, г) 110,01012.
3. Доказать, что в n – мерном кубе Вn :
а) количество вершин в сфере радиусом 1 равно n, а количество вершин в шаре радиусом 1 равно n + 1;
б) количество вершин в сфере радиусом 2 равно n (n – 1)/2, а количество вершин в шаре радиусом 2 равно n(n+1)/2+1.
4. Доказать (например, с использованием метода математической индукции), что общее количество вершин в бинарном дереве Тn равно 2n+1– 1.
5. Доказать
методом математической индукции, что
в
6. Доказать, что на множестве всех n-мерных булевых векторов расстояние Хэмминга удовлетворяет неравенству треугольника:
(n, n) + ( n, n) (n, n),
гдеn, n, n — любые векторы из bn .
7. Пусть Вn — множество всех n – мерных двоичных векторов bn, которые появляются случайно c одинаковой вероятностью. Доказать, что средневероятный вес св(b n) булевых векторовbn равен n/2.
8. Перевести в двоичную систему и систему с основанием 4 числа B23DA16, АD7С16.
9. Перевести в десятичную систему числа F9B8316, CАF516.
10.Перевести в шестнадцатеричную систему числа 1101102 , 11011012 , 10110110101012 .
11.Перевести, используя сокращенные правила перевода, из восьмеричной системы в двоичную числа 57168, 1738 , 2658 .
12. Перевести следующие дроби в десятичную систему:
а) 0,168, б) 0,213, в) 0,436, г) 0,57.
13. Выполнить следующие арифметические действия:
а) 120211013 – 2100122313 , 74358139 – 5250489 ;
б) 101111012 11012 , A4D316 C5A16 ;
в) 5362 7 : 657 , 67516 8 : 478 .
14. Перевести в факториальную систему числа:
а) 17210, б) 93410, в) 21578, г) 15356.
15. Перевести в десятичную систему из факториальной числа: а) 423010, б) 231200, в) 142110, г) 502110.
код гольфа — Преобразование непорядкового числа в десятичное (и обратно)
Задавать вопрос
спросил
Изменено 2 года, 4 месяца назад
Просмотрено 3к раз
\$\начало группы\$ 90$$
$$(-1000)+(300)+(-30)+(7)$$
Таким образом, \$1337_{-10}\$ равно \$-723_{10}\$ в десятичная дробь. (Интересным последствием этого является то, что отрицательные знаки не нужны в непорядковых числах; любое целое число может быть представлено как /[0-9]+/
. )
В этом задании ваша оценка равна сумме длин двух программ. или функции:
- Один, чтобы преобразовать число из недесятичного в десятичное
- Один для преобразования числа из десятичной системы в отрицательную
Все входные данные будут целыми числами. Вы должны уметь обрабатывать отрицательные числа. Вы можете вводить и выводить любым разумным способом. Это кодовый гольф, поэтому побеждает самый короткий ответ в байтах для каждого языка.
Тестовые примеры
Негадация в десятичную:
1337 -> -723 0 -> 0 30 -> -30 101 -> 101 12345 -> 8265
От десятичного до отрицательного:
-723 -> 1337 0 -> 0 1 -> 1 21 -> 181 -300 -> 1700 1000 -> 19000 -38493 -> 179507
- код-гольф
- номер
- базовое преобразование
\$\конечная группа\$
14
\$\начало группы\$
От Неги до Деки
Т(ö
Попробуйте онлайн!
Дека в Нега
Т(в
Попробуйте онлайн!
\$\конечная группа\$
2
\$\начало группы\$
f=(p,e=n=>n&&(i=(n%10+10)%10)-p*e((n-i)/p))=>e ф(10) f(-10)
Попробуйте онлайн! f
определяет вспомогательную функцию. f(10)
возвращает функцию, которая преобразует непорядковые числа в десятичные, а f(-10)
возвращает функцию, преобразующую десятичные числа в отрицательные.
\$\конечная группа\$
1
\$\начало группы\$
Преобразование из негадального десятичного числа в десятичное (25 байт)
f=n=>n&&n%10-10*f(n/10|0)
Попробуйте онлайн!
Как?
Это довольно просто. Мы рекурсивно вычисляем:
$$f(n) = \cases{ 0, п=0\\ (n \bmod 10) — 10\times f\left(\left\lfloor\dfrac{n}{10}\right\rfloor\right), n>0}$$
Десятичное число в отрицательное (55 байт)
f=(n,i=n%10,k=n>0?-n:~n-i+(i+=10))=>n?f(k/10|0)+i%10:''
Попробуйте онлайн!
Как?
В JS результат оператора %
имеет тот же знак, что и делимое. Например, -17 % 10
— это -7
, а не 3
(как в Python), что нам и хотелось бы здесь получить. Возможный обходной путь:
(n % 10 + 10) % 10
Кроме того, нам также нужно вычислить \$\left\lfloor n/-10\right\rfloor\$ с положительным или отрицательным значением \$n\$. Это можно сделать с помощью:
Math.floor(n/-10)
, но это выражение немного длинное.
Вместо того, чтобы рассматривать обе проблемы по отдельности, мы явно проверяем знак \$n\$ и вычисляем переменные i
и k
соответственно:
- Мы безоговорочно устанавливаем
i = n % 10
. - Если \$n>0\$, мы определяем
k = -n
и оставляемi
без изменений. - Если \$n\le 0\$, мы определяем
k = ~n + 10
и добавляем \$10\$ кi
. Обе операции объединены вk = ~n - i + (i += 10)
.
Затем мы можем использовать k / 10 | 0
и i % 10
в обоих случаях.
\$\конечная группа\$
7
\$\начало группы\$
От отрицательного до десятичного:
ḅ-10
Попробуйте онлайн!
От десятичного до отрицательного
b-10
Попробуйте онлайн!
Ввод в виде целого числа, вывод в виде списка цифр. +2 байта (+1 к каждому) для ввода/вывода в виде целых чисел
\$\конечная группа\$
\$\начало группы\$
Из недесятеричной:
#~FromDigits~-10&
Попробуйте онлайн!
Простое базовое преобразование строки или списка цифр.
В обратном порядке:
f@0=0 f@a_:=f@-⌊a/10⌋||a~Mod~10
Попробуйте онлайн!
Выводит список цифр, включая начальный ноль, завернутый в или
.
+1 байт для вывода в виде целого числа: Попробуйте онлайн!
\$\конечная группа\$
\$\начало группы\$
(по определению m(X Y)(rem(+(rem X Y)Y)Y)) (defun n(N)(if(== N 0)0(-(m N 10)(*(n(этаж(/ N 10)))10)))) (defun d(N)(if(== N 0)0(+(m N 10)(*(d(ceil(/ N -10)))10))))
n
вычисляет десятичную дробь, учитывая отрицательную запятую. d
вычисляет обратное.
Обе функции принимают и возвращают обычное целое число.
Функция Erlang rem
работает как в JavaScript, а не как в Python, поэтому m
функция необходима. Я экономлю несколько байтов за счет повторного использования — если бы это были две отдельные задачи, они были бы встроенными, поскольку каждая функция использует их только один раз.
Редактировать: изменены некоторые вызовы функций, чтобы сэкономить пару байтов без изменения логики
\$\конечная группа\$
\$\начало группы\$
От недесятичного до десятичного
[ 0 [ поменять местами 10 * - ] уменьшить ]
Попробуйте онлайн!
Принимает массив недесятичных цифр и возвращает целое число.
[ 0 [ ... ] уменьшить ! Уменьшить по цифрам с начальным значением 0... обмен 10 * - ! (accum digit -- accum') Вычислить accum * -10 + цифра ]
Десятично-недесятичный
[[dup 0 = не] [-10 2dup/потолок -rot rem] произвести]
Попробуйте онлайн!
Принимает целое число и возвращает массив недесятичных цифр в обратном порядке. Не производит начальных нулей, что означает, что ввод 0 дает пустой массив.
[ [конд] [петля] производить! Начиная со значения n, цикл, пока cond не даст false ! и собираем верхние значения во время цикла дубликат 0 = нет! Cond: остановить, если top равен 0 ! Цикл: получить последнюю цифру и сохранить большее значение -10 2дуп/потолок! ( n -- n -10 сохранить ) сохранить = ceil(n/-10) -рот рем ! (сохранить доходность) доходность = n%-10 (неотрицательный мод) ]
\$\конечная группа\$
\$\начало группы\$
Преобразование от недесятичного до десятичного, 4 байта
B_10
Попробуйте онлайн!
ввод в виде списка цифр, вывод в виде целого числа.
От десятичного до отрицательного, 4 байта
B_10
Попробуйте онлайн!
ввод в виде целого числа, вывод в виде списка цифр.
\$\конечная группа\$
\$\начало группы\$
Преобразование из негадального числа в десятичное, 10 байт
{у+х*-10}/
Попробуйте онлайн!
Десятичное число в отрицательное, 30 байт
-8 байт благодаря coltim!
{$[~x;0;(10*o@-_-x%-10)+10!x]}
Попробуйте онлайн!
\$\конечная группа\$
7
\$\начало группы\$
От негадального до десятичного,
Сохранен байт благодаря xnor!!!
f=лямбда n:n и~9*f(n/10)+n%10
Попробуйте онлайн!
Десятичное число в непорядковое,
Сохранено 7 байт благодаря att!!!
Сохранен еще один байт благодаря xnor!!!
г=лямбда n:n и n%10+10*g(0-n/10)
Попробуйте онлайн!
\$\конечная группа\$
5
\$\начало группы\$
Преобразование из негадального числа в десятичное, 39 байт
(λ(x)(foldl(λ(a b)(+(* -10 b)a))0 x))
Попробуйте онлайн!
Принимает массив недесятичных цифр и возвращает целое число.
От десятичного до отрицательного, 67 байт
(define(d x)(if(= 0 x)0(+(modulo x 10)(*(d(ceiling(/ x -10)))10))))
Попробуйте онлайн!
Принимает ввод как целое число и возвращает целое число.
\$\конечная группа\$
\$\начало группы\$
Относительно десятичной дроби
_.:\(0)(_-10*_)
Попробуйте оба онлайн!
Принимает ввод как перевернутый список цифр.
Это довольно просто — умножьте первую цифру на -10, добавьте к ней вторую цифру, умножьте ее на -10 и так далее.
От десятичного до отрицательного
Seq.unfold(_){x=>val m=(x%10+10)%10;Option.when(x*x>0)(m->(m-x)/10) }:+0
Возвращает перевернутый список цифр с ведущим нулем (в конце).
Это не так уж и тривиально. Из-за того, как Scala %
работает, мы не можем просто использовать x%10
, так как он поддерживает знак x
, а не 10
. 10 нужно добавить к x%10
, чтобы убедиться, что оно положительное, а затем %10
сделать снова.
\$\конечная группа\$
\$\начало группы\$
{×₁₀ʰ↔-}ˡ
Попробуйте онлайн!
≜{×₁₀ʰ↔-}ˡ
Попробуйте онлайн!
Ввод и вывод отрицательных запятых в виде списков цифр. Программа преобразования десятичного числа в непорядковый использует обратный ввод-вывод, а также впечатляюще медленная, поскольку использует чистую грубую силу (выход на 6 байтов короче, чем более разумная реализация).
{ }ˡ Сгиб влево над входными отрицательными цифрами: × умножить ʰ аккумулятор ₁₀ на 10, ↔- вычесть его из следующей цифры. ≜ Попробуйте вывести все целые числа, пока не {×₁₀ʰ↔-}ˡ — это непорядковое представление входных данных.
\$\конечная группа\$
\$\начало группы\$
От отрицательного до десятичного, 28 байт
f(n){n=n?n%10-10*f(n/10):0;}
Попробуйте онлайн!
Десятичное число в непорядковое,
Сохранено 3 байта благодаря xnor!!!
Сохранено 2 байта благодаря rtpax!!!
g(n){n=n?n%~9+10*(g(n/~9+(n=n%~9<0))+n):0;}
Попробуйте онлайн!
\$\конечная группа\$
0
\$\начало группы\$
Комбинированный код negadec_to_dec и dec_to_negadec благодаря пользователю и вдохновлен ответом Нила
b=функция(p)d=функция(x)`if`(x,(y=x%%10)-p*d((x-y)/p),0) б(10) б(-10)
Попробуйте онлайн!
Отдельные функции
Негадецимально к десятичным Попробуйте онлайн! от десятичной до отрицательной (47 байт): Попробуйте онлайн! \$\конечная группа\$ 4 \$\начало группы\$ Попробуйте онлайн! Ссылка на подробную версию кода. Это просто пользовательское базовое преобразование с базой Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение: Введите десятичное число. Напечатайте Повторяйте, пока ввод не станет равным нулю. Напечатать следующую цифру справа налево. Разделите ввод на \$\конечная группа\$ \$\начало группы\$ -1 байт благодаря Bubbler Попробуйте онлайн! TIO использует более старую версию Ruby, а в Ruby 2.7 мы пронумеровали параметры, что экономит 3 байта. Попробуйте онлайн! \$\конечная группа\$ 3 Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и пароль Электронная почта Требуется, но не отображается Электронная почта Требуется, но не отображается Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie спросил Изменено
2 года, 10 месяцев назад Просмотрено
121 раз Часть коллектива R Language Collective Я пишу код функции факториала. Мой код выглядит следующим образом: Моя проблема с этим кодом связана с вводом десятичных чисел. Например, для Как исправить эту проблему в моем коде? 1 Что-то вроде этого? Это останавливается, если d=function(x)`if`(x,x%%10-10*d(x%/%10),0)
d=функция(x)`if`(x,(y=x%%10)+10*d((y-x)/10),0)
От нуля до десятичной:
I↨S±χ
-10
. От десятичной до двоичной:
NθP0Wθ« ←I﹪θχ≔±÷θχθ
Nθ
P0
0
, если ввод равен нулю. Wθ«
←I﹪θχ
≔±÷θχθ
10
и измените его знак. (К сожалению, это не то же самое, что разделить ввод на 9.0029 -10 . ->x{x.reduce{_2-_1*10}}
f=->x,s=''{x!=0?f[-~~(x/10),"#{x%10}"+s]:s}
Зарегистрируйтесь или войдите в систему
Опубликовать как гость
Опубликовать как гость
р - Как решить проблему с десятичными числами в факториальной функции?
f <- функция(n) {
факториал <- 1
если ( п < 0 )
print("Факториал отрицательных чисел невозможен")
иначе если ( n == 0 )
print("Факториал 0 равен 1")
еще {
для (я в 1: п)
факториал <- факториал * я
print(paste("Факториал от ",n," равен ",factorial))
}
}
f(6.5)
мой код вычисляет 720, но мы знаем 6.5! не существует. Для десятичных чисел, таких как 6.5, 5/2
или sqrt(2)
Я хотел бы видеть сообщение типа "Факториал для этого числа не существует".
n
и as.integer(n)
не идентичны. f <- функция (n) {
если (as.integer(n)!= n) {
stop("Факториал для этого числа не существует")
}
факториал <- 1
если ( п < 0 )
print("Факториал отрицательных чисел невозможен")
иначе если ( n == 0 )
print("Факториал 0 равен 1")
еще {
для (я в 1: п)
факториал <- факториал * я
print(paste("Факториал от ",n," равен ",factorial))
}
}
ф(5)
# [1] "Факториал 5 равен 120"
f(6,5)
# Ошибка в f(6.