Перестановка из множества является биективен функция . Например, если то функция перестановка:
Мы также можем иметь перестановки на бесконечных множествах, давайте возьмем в качестве примера: функция является перестановкой, меняющей четные и нечетные целые на блоки по два. Первые элементы следующие:
Вызов
Ваша задача для этой задачи - написать функцию / программу, реализующую любую 1 перестановку натуральных чисел. Оценка вашего решения - это сумма кодовых точек после сопоставления их с реализованной перестановкой.
пример
Предположим, мы берем вышеупомянутую перестановку, реализованную с помощью Python:
def pi(x):
return x - 1 + 2*(x % 2)
Символ d
имеет кодовую точку , . Если мы сделаем это для каждого персонажа, мы получим:
Сумма всех этих сопоставленных символов составляет , это будет оценка для этой функции.
правила
Вы будете реализовывать перестановку как функцию или программу
- учитывая натуральное число , возврат / вывод
- для целей этой задачи вовсе не содержит
- перестановка должна нетривиально переставлять бесконечное подмножество
- вашей функции / программе не разрешено читать собственный источник
счет
Оценка дается суммой всех кодовых точек (нулевые байты могут не быть частью исходного кода) при этой перестановке (кодовые точки зависят от вашего языка 2 , вы можете свободно использовать SBCS, UTF-8 и т. Д., Пока ваш язык поддерживает это).
Представление с наименьшим счетом выигрывает, связи нарушаются при более раннем представлении.
За исключением перестановок, которые переставляют только конечное подмножество , что означает, что множество должно быть бесконечным.
Если это улучшает ваш счет, вы можете, например, использовать кодировку Jelly в кодировке UTF-8 вместо обычной SBCS.
Ответы:
Желе , оценка
288 250 212199-38 спасибо Эрику Аутгольферу!
Меняется даже с нечетным.
Счет67+45+44+43=199 - см. Самооценку здесь .
Попробуйте онлайн!
источник
-*ạ
есть оценка 300 ... однако,-*_@
есть оценка 250. Возможно, я должен опубликовать это как мой собственный, хотя это та же самая перестановка.-*N+
оценка 212C-*+
звучит как какой-то будущий вариантC++
.JavaScript (ES6), оценка =
276268Попробуйте онлайн!
источник
54^54
это0
Perl 6 , оценка: 201
Попробуйте онлайн!
Порт Арнаулда ответ . Это дает преимущество xor (
+^
), имеющему тот же приоритет, что-
и+
, и от использования лямбды-бы то ни было для уменьшения общих символов. Кроме этого, я не мог найти способ представить это по-другому, чтобы получить лучший результат.Perl 6 , оценка
804702Попробуйте онлайн!
Здесь первый ответ типа quine-y, и я думаю, что он набрал неплохие результаты.
В результате получается последовательность23,22,25,24... из тела вопроса с диапазоном 1,2,3,4...21 вставленным в индексы уникальных отсортированных кодовых точек кода. Например, элементы последовательности с 30-го по 35-й - это 50,53,52,1,55,54 поскольку 33-я кодовая точка -
!
это самая низкая кодовая точка в моем коде.источник
Оценка Python 2 :
742698694 баллаПопробуйте онлайн!
-44 балла благодаря Орджану Йохансену; -4 балла спасибо xnor.
источник
96
с~~
.Сетчатка 0.8.2 , 6 байт, оценка 260
Попробуйте онлайн! Ссылка включает нижний колонтитул. Просто меняются цифры
1
и,9
и3
и7
в десятичных представлениях, так что числа, не содержащие цифр, взаимно просты10
и не затрагиваются.источник
C # (интерактивный компилятор Visual C #) , 22 байта, оценка
247245Попробуйте онлайн!
Простой, если меньше 66, возвращает 66 минус ввод, иначе используйте формулу в вопросе, которая меняет четные и нечетные числа.
источник
A=>A<66?66-A:A
?TI-BASIC, 9 байтов, оценка
108810511000Меняется даже с нечетным. Четные карты
Ans-1
и нечетные картыAns+1
.TI-BASIC является токенизированным, поэтому эта программа будет иметь следующие шестнадцатеричные значения:
Таким образом, оценка:113 + 114 + 195 + 171 + 49 + 185 + 49 + 11 + 113 = 1000
Выходная тестовая программа:
Какие выводы:
Примечания:
Значения токенов TI-BASIC можно найти здесь .
Pause
используется в программе вывода, чтобы лучше видеть перестановку, поскольку калькулятор имеет только 8 строк. Нажмите [ENTER], чтобы просмотреть следующую перестановку.источник
Древесный уголь , 13 байт, оценка 681
Попробуйте онлайн! Ссылка на самооценочную версию с заголовком для сопоставления с массивом байтовых кодов. (У древесного угля есть пользовательская кодовая страница, поэтому я вручную вставил правильные байтовые коды во вход.) Работает путем изменения диапазонов из 233 чисел, так что 117, 350, 583 ... остаются неизменными. Объяснение:
источник
Хаскелл, оценка 985
Попробуйте онлайн!
источник
a*200
не имеет эффекта по модулю 200, поэтомуa
не имеет значения.sum[1|...]
болееif..then..else
должно помочь.05AB1E , счет: 488 в кодовой странице 05AB1E
Меняет местами странные и четные функции примера.
Постараюсь улучшить счет отсюда.
Попробуйте онлайн с вводом в диапазоне
[1, 100]
или Попробуйте онлайн с кодовыми точками.Объяснение:
источник
Brainfuck, 47 байт, оценка 2988
Попробуйте онлайн!
Я использовал перестановку, приведенную во введении. Поскольку это биекция, вы можете использовать ее как простой симметричный шифр, подобный ROT13 или Atbash. Мое решение работает на неограниченных клетках. Однако, ограничившись 8-битными ячейками, вы можете сэкономить 2 балла, заменив их
[-]
на[+]
.источник