Codegolf — Вывод Всегда Одинаковой Длины

  • Автор темы Felt
  • Обновлено
  • 23, Oct 2024
  • #1

С такими проблемами, как Вывод той же длины, что и код и Создать выходные данные в два раза длиннее кода, я подумал об отдельной, но похожей задаче.

Задача — произвести результат. Это может быть строка, список символов или любой другой формат вывода вашей программы по умолчанию. Однако ваш вывод всегда должен быть одинаковой длины, независимо от ввода. И что еще более важно, вывод должен быть разным для разных входов.

Вход

Одно целое число \$n\$, диапазон которого определяется выбором языка. Если в вашем языке есть целые числа переменной длины, диапазон будет равен \$-2^{31} \leq n < 2^{31}\$.

Выход

Строка или список символов, либо вывод в STDOUT или STDERR. Вы можете использовать только один из этих методов. Выходные данные должны иметь одинаковую длину независимо от входных данных, но вам решать, какая именно длина. Вывод может не содержать цифр. - , or the minus sign 0-9 . Результат должен быть детерминированным.

Вы должны быть в состоянии доказать это для каждого выхода существует только один возможный вход, либо с помощью формального доказательства, аргумента, либо методом перебора.

Это вопрос по кодированию гольфа, поэтому удалите лишние байты. Приветствуются все языки, чем больше, тем лучше!

#code-golf #строка #целое число #хеширование

Felt


Рег
21 Apr, 2006

Тем
77

Постов
203

Баллов
638
  • 26, Oct 2024
  • #2

JavaScript (ES8), 33 байта

Ожидает ввода в диапазоне безопасный Целые числа JS: \$-2^{53}\le n < 2^{53}\$.

Возвращает строку из 76 символов.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 echo $1|md5sum|tr '0-9-' 'A-K'
 

Попробуйте онлайн!

Как?

Шаг 1

Входные данные сначала преобразуются в двоичный формат. Это сохраняет ведущий знак минус для отрицательных чисел.

Примеры:

  • pqrstuvwxyabcdef`0123456789abcdef<space>
  • 0123456789abcdefn->"".format("%8x",n).chars().map(i->i|64)

Шаг 2

Результирующая строка кодируется в формате Base-64.

Это означает, что каждый блок от 1 до 3 символов будет преобразован в новый блок из 4 символов. Это преобразование безопасно, поскольку ни один из полученных блоков не содержит запрещенных символов (цифр или знака минус).

3-символьные блоки

$x

Необходимо закодировать один последний блок из 1 или 2 символов, если длина двоичной строки не кратна 3:

1-символьные блоки

[[-]][base]#[num]

2-символьные блоки

-

Шаг 3

Конечный результат дополняется конечными пробелами.

 

Martius


Рег
17 Jul, 2006

Тем
78

Постов
167

Баллов
587
  • 26, Oct 2024
  • #3

Питон 3, 49 39 байт

2

Попробуйте онлайн!

-10 байт благодаря минус семь

Преобразует целое число в шестнадцатеричное и добавляет в начало пробелы общей длиной до 9 символов. Затем удваивает код ASCII каждого символа в строке (некоторые выходят за пределы ASCII в Unicode, но Python прекрасно с этим справляется), выводя список символов.

Это работает, потому что каждая цифра, включая b , is mapped to a different ASCII character. No integers between 1 и a are equal, so converting them to hexadecimal and prepending spaces would not make them equal. Then, mapping them to different codepoints does not lead to collisions, so there are still no two values in the range which lead to equal outputs.

Питон 3, 59 56 47 байт

0

Попробуйте онлайн!

-3 байта благодаря Джитсе

-9 байт благодаря минус семь

Тот же алгоритм, но с использованием integer -i2 -Z66 x=$1 <<<${${x//[02-]/a}//1/b} instead of a 0 => 48 => H 1 => 49 => I 2 => 50 => P 3 => 51 => Q 4 => 52 => R 5 => 53 => S 6 => 54 => T 7 => 55 => U 8 => 56 => V 9 => 57 => W - => 45 => E петля.

 

Znatny


Рег
08 Mar, 2007

Тем
67

Постов
165

Баллов
510
  • 26, Oct 2024
  • #4

05AB1E, 11 5 байты

1E100-1

-6 байт портирование @Стивенподход, так что обязательно проголосуйте за него!

Выводит список длиной до 100 символов с количеством \$100-(\text{input length})\$ -1E99+1 (double the space codepoint), and all 99 сопоставлено с 30 (double the ASCII codepoints).

Попробуйте онлайн.

Объяснение:

long long

Оригинал 11 байты отвечать:

${(l:30:0:)1} # left-pad with zeroes to 30 characters ${(s::) } # split characterwise for c ( ) # for each character $[#c] # get character code (in decimal) echo \\x$[#c] # interpret as hex code, print (with newline)

Попробуйте онлайн (ограничено for c (${(s::)${(l:30::0:)1}})echo \\x$[#c] instead of S ).

Объяснение:

Длина вывода всегда составляет 2 147 483 648 символов. Он выведет количество пробелов \$2147483648-|n|-1\$, добавленное с количеством символов новой строки \$|n|\$, с добавлением либо 'a', если \$n\lt0\$, либо 'b', если \$n\geq0\$.

FALSE ||answer||

мозготрах, 48 29 28 16 13 байт

Для этой программы требуются ячейки, где \$ c_n \in \mathbb{N} \$, но если вы хотите получить согласованные результаты, убедитесь, что \$ c_n < 256 \$

Выходные данные, очевидно, будут уникальными независимо от того, какое число вы введете (\$ -\infty \lt n \lt \infty \$). Если целое число короче, программа дополнит выходные данные так, чтобы они точно соответствовали \$ \infty \$ байтам, поэтому длина всегда одинакова.

Этот ответ немного усложняет задачу, поскольку в нем не говорится, что результат должен быть конечным.

TRUE

Попробуйте онлайн!


Оригинальный ответ длиной 28 байт:

01

Это дополнит вывод до размера ровно \$ 2^8 - 1 \$ байт. Механизм преобразования чисел здесь работает так же. Эта программа предполагает то же самое, что и программа выше.

 

San358


Рег
10 Feb, 2016

Тем
74

Постов
221

Баллов
601
  • 26, Oct 2024
  • #6

Желе, 4 байты

01

Монадическая ссылка, принимающая целое число, которое дает список из 52 символов.

Диапазон ввода может превышать \$-2^{223} \leq n \lt 2^{223}\$, поскольку \$52!>2^{224}\$.

Попробуйте онлайн!

Как?

00

Так...

raw ||answer||

С (ГКК), 38 байт

cat(gsub("S","",intToBits(scan())>0))

Попробуйте онлайн!

При этом каждый бит входного целого числа преобразуется в байт, равный 0 или 1 (которые оба являются непечатаемыми символами, но против этого нет никаких правил). Таким образом, выходные данные всегда имеют размер 32 байта и гарантированно уникальны.

 

Tinkerbelarl


Рег
24 Dec, 2007

Тем
70

Постов
178

Баллов
568
  • 26, Oct 2024
  • #7

Руби, 27 байт

-[>,[->-<]>.[-]<<-]

Попробуйте онлайн!

set.seed(scan()) cat(sample(LETTERS)) Converts an integer into its binary representation, using N Input as a number ﹪ Modulo χ 10 X To power χ 10 ⍘ α Convert to base 26 using uppercase letters ◧ χ Left pad to length 10 чтобы указать отрицательное число (это означает бесконечно длинный префикс из 1), и дополняет его до 34 символов с помощью пробелов. Затем мы заменяем ◧⍘﹪NXχχαχ s with 'a' and the !`.{11} s с 'h' для создания маниакального представления Base 2: строки типа «хааахахахаха» начинаются с пробелов, а иногда и с пробелами. o . Since every step here is invertible this is 1:1.

Изменить: пусть запись покажет, что @manatwork первым опубликовал это идентичное решение. Упс. Мне следовало освежиться.

 

Chebv


Рег
11 Jul, 2011

Тем
76

Постов
191

Баллов
621
  • 26, Oct 2024
  • #8

Желе, 6 байт

$ 10$*o

Попробуйте онлайн!

Поскольку Jelly имеет целые числа произвольной длины, эта монадическая ссылка принимает целое число в диапазоне \$±2^{31}\$ и возвращает буквенную строку длиной 7. Это работает путем добавления \$2^{32}\$ и последующей распаковки базы в заглавные буквы.

 

IgOrOK7


Рег
04 Sep, 2015

Тем
73

Постов
201

Баллов
566
  • 26, Oct 2024
  • #10

Хаскель, 31 байт

q

Попробуйте онлайн!

Добавляет 9 to the input so that the resulting number has the same amount of digits for the whole input range. Turn into a string and shift each character 10 places to the right in the ASCII order ( 0 -> n ... - -> T`p`l ).

 

Redman


Рег
03 Sep, 2012

Тем
62

Постов
218

Баллов
578
  • 26, Oct 2024
  • #11

C# (интерактивный компилятор Visual C#), 52 байта

z

Попробуйте онлайн!

Другой подход к решению С# использует тот факт, что модуль С# отрицателен для отрицательных чисел. Я полагаю, вы могли бы сократить один или два байта, если разрешите неотображаемые символы («\0» и т. д.), обновив n to not offset the character value to something human readable.

 

Gedevan


Рег
12 Apr, 2006

Тем
77

Постов
217

Баллов
642
  • 26, Oct 2024
  • #12

Opicleeconi13


Рег
01 Jan, 2011

Тем
63

Постов
200

Баллов
535
  • 26, Oct 2024
  • #13

T-SQL, 73 70 61 байт

A

Я просто заменяю цифры (и "AMLKJIHGFED " ) with letters, after -9876543210 дополняет целое число до 11 символов. Преобразование в шестнадцатеричный или двоичный формат не требуется.

M был представлен в SQL 2017.

Ввод осуществляется через уже существующую таблицу \$t\$ со столбцом INT \$n\$, согласно нашим правилам ввода-вывода. Диапазон D datatype in SQL is \$-2^{31} \leq n < 2^{31}\$.

РЕДАКТИРОВАТЬ: Сэкономлено 3 байта за счет замены ручного заполнения преобразованием в CHAR(11), который представляет собой формат символов фиксированной ширины, который автоматически дополняется пробелами.

РЕДАКТИРОВАТЬ 2: Сохранено 9 байт используя 9 function instead of 0 . A converts a number to a text string padded to the specified length.

 

Alexdok


Рег
30 Mar, 2005

Тем
81

Постов
190

Баллов
605
  • 26, Oct 2024
  • #14

APL (Диалог Юникод), 28 байт

-

Попробуйте онлайн!

Простой Dfn, принимающий целочисленный аргумент. Использование 9223372036854775807 .

TIO ссылается на тестовый пример из <?=str_pad(strtr($argn,'-0123456789',ADEFGHIJKLM),20); к strtr . 11){Hm part removes the duplicate True из аргументов.

Как:

Null ||answer||

Япт, 6 байт

я думать это правильно. Вдохновлено решением Стивена Python, поэтому, пожалуйста. >> him.

Echo@Table[Or[i>#+13!,],{i,14!}]&

Попробуйте это

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ||answer||

Мальбольге, 2708 байт

Этот ответ очень обманчив, потому что он всегда производит один и тот же объем входных данных, равный \$ \infty \$.

$_^=A x$=

Попробуйте онлайн!

 

BonifaciyII


Рег
31 May, 2011

Тем
72

Постов
213

Баллов
603
  • 26, Oct 2024
  • #15

Перл 6, 12 байт

@

Попробуйте онлайн!

Анонимный Любая лямбда, которая принимает число и строку ИЛИ с 11 m s. This maps the digits to pqrstuvwxy и рывок к @ , then pads the string out to 11 characters with *~|('@'x 11) с

 

Bkmz56


Рег
09 Aug, 2011

Тем
70

Постов
209

Баллов
599
  • 26, Oct 2024
  • #16

Перл 5 (-p), 9 байт

bP&A@?>=<;:9876543210/.-,+*)('&%$T"!~}|;]yxwvutslUSRQ.yx+i)J9edFb4`_^]\yxwRQ)(TSRQ]m!G0KJIyxFvDa%_@?"=<5:98765.-2+*/.-,+*)('&%$#"!~}|utyrqvutsrqjonmPkjihgfedc\DDYAA\>>Y;;V886L5322G//D,,G))>&&A##!7~5:{y7xvuu,10/.-,+*)('&%$#"yb}|{zyxwvutmVqSohmOOjihafeHcEa`YAA\[ZYRW:U7SLKP3NMLK-I,GFED&%%@?>=6;|9y70/4u210/o-n+k)"!gg$#"!x}`{zyxZvYtsrqSoRmlkjLhKfedcEaD_^]\>Z=XWVU7S6QPON0LKDI,GFEDCBA#?"=};438y6543s1r/o-&%*k('&%e#d!~}|^z]xwvuWsVqponPlOjihgIeHcba`B^A\[ZY;W:UTSR4PI2MLKJ,,AFE(&B;:?"~<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\xwvoXsrqpRnmfkjMKg`_GG\aDB^A?[><X;9U86R53ONM0KJC,+FEDC&A@?!!6||3876w4-tr*/.-&+*)('&%$e"!~}|utyxwvutWlkponmlOjchg`edGba`_XW\?ZYRQVOT7RQPINML/JIHAFEDC&A@?>!<;{98yw5.-ss*/pn,+lj(!~ff{"ca}`^z][wZXtWUqTRnQOkNLhgfIdcFaZ_^A\[Z<XW:U8SRQPOHML/JIHG*ED=%%:?>=~;:{876w43210/(-,+*)('h%$d"ca}|_z\rqYYnsVTpoRPledLLafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(DCB%@?"=<;|98765.3210p.-n+$)i'h%${"!~}|{zyxwvuXVlkpSQmlOjLbafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(D'%A@?"=<}:98y6543,1r/.o,+*)j'&%eez!~a|^tsx[YutWUqjinQOkjMhJ`_dGEaDB^A?[><X;9U86R53O20LKJ-HG*ED'BA@?>7~;:{y7x5.3210q.-n+*)jh&%$#"c~}`{z]rwvutWrkpohmPkjihafI^cba`_^A\[>YXW:UTS5QP3NM0KJ-HGF?D'BA:?>=~;:z8765v32s0/.-nl$#(ig%fd"ca}|_]yrqvYWsVTpSQmPNjMKgJHdGEa`_B]\?ZY<WVUTMR5PO20LK.IHA))>CB%#?87}}49zx6wu3tr0qo-nl*ki'hf$ec!~}`{^yxwvotsrUponQlkMihKIe^]EEZ_B@\?=Y<:V97S64P31M0.J-+GFE(C&A@?8=<;:{876w43s10qo-&%kk"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNiLgf_dcba`C^]\?ZY;WV97SLK33HM0.J-+G*(D'%A$">!};|z8yw543t1r/(-,+*)(i&%fd"!~}|_t]xwvutslqTonmPkjLhKIeHFbEC_^A?[TSX;9UT7R4JIN1/K.,H+)E(&B%#?"~<}{987x/4ussr)p-,m*)ihh}$#d!awv{^\x[YuXVrUSonQlNdchKIeHFbaD_AWV[><X;988MRQ4O1GFK.,++@ED'B$:9>!};:9zy0wuut1*/p-,mk#"hh}$#"cb}v{^\\[vunWrqTonmOkjMLgf_HcbE`_A]@>ZY<:VONS64P31M0.J-+G*(D'%A$">!}||3876wv321*/p-,mk#"'hf$ec!b`|{^y[qpuXVUUjonQOkdchKIeHFbEC_B@\?=Y<:VUT76QPONG0KJ-HGFED'%A:9!!6;:9zy654321*q.-n+*j(ig%fd"ca}`^]]rwvYtVlkpSQmPNMMbgfIdF\[`_^A@[ZYXWVUNS6443NMLKJIHG@)DC&A@?!=<}|98765432+r/.-,+k#('&%e{dy~}|uzsx[vuXsrqpoRPledLLafedGF[`C^]\?ZY;W:8T7544INM0.JCBG*(''<A@#!=65:{yxx/43tr0)(-nlkk"'&ge#zy~a_^^sxwZXtmlqTRQQfkjMKg`_dcbEZ_B]\?=SRW:8T75Q42N1/KJ-+G@?D'%A$">!};|z87x5u-,1rp.-n+k#"'hfeez!~}`_t]xwvYtsUTTinmPNjcbgJHdGEa`_BW\?ZY<WVUTS64PIH00EJIH+*?(&&;@#!!~5:{87xv.-2sq/.om+$#(ig%$e"bxw|_]y\ZvuXsUkjoRPOOdihKfH^]bEC_^A\>TS;;PUTS65JO2MLK.,BA))>CBA$9>!}}|3z765v32r0/p-m%$)jh&ge#"c~`vuz][ZZotsVqSihmPNMMbgfIdF\[`CA@@UZY<W9ONS6433HML/J,BAF)'&&;@?"=}549zx6wutt+0/.on%l)('h%$d"ca}`^z][wvYtVlkpSQmPNjiLJf_^cFDCCX]\?=YRQV9766KPO20LEDI,*))>CB%#?87<}{9zx6wu3tr0/.o&m*)('&%fA/cQ>_^;]87%54"32pRA-yejih:s_GGFDDC^{i[T<XQ9b8r_5]O20Li-zB*SdQPO%##]nml43V1TvS@cs0/_'JJH#jhg%BTd!xw_{t99J6$tV21SBR@?kjcbtJ%^F"DD21]@[xfw;)9Nqq5Jmm~LKWVyx@E't&%:]][~YkF8hgv.tssOMp:&ml6Fi&D1T"y?,O<^s\7vX#Wr2}|Rzl+j<bK`r$F"4ZCk|\?-=RQ

Попробуйте онлайн!

Bitwxise-xor ввода со строкой ¤ùI cÑ :Implicit input of integer ¤ :Convert to binary string ù :Left pad with spaces I : To length 64 c :Map codepoints Ñ : Multiply by 2 .

 

Centaurtale


Рег
05 Apr, 2007

Тем
55

Постов
201

Баллов
506
  • 26, Oct 2024
  • #17

Язык Wolfram (Математика), 44 33 байта

¤ùI cÑ

Попробуйте это с меньшим доменом

-2 спасибо Грег Мартин

Принты +1 , followed by the 523069747202-character string representation of a list of \$13!+n\$ {11↑' Z'[⍵≤0],⎕A[⍎¨'¯'~⍨⍕⍵]} ⍝ Dfn ⎕A[ ] ⍝ Index the Uppercase Alphabet with ⍕⍵ ⍝ String representation of the argument '¯'~⍨ ⍝ Without the character ¯ ⍎¨ ⍝ Executing each digit back into integers , ⍝ Prepend ' Z'[ ] ⍝ A character from the string ' Z' indexed by ⍵≤0 ⍝ Argument ≤ 0. Returns 1 if true, else 0. ⍝ This will prepend a whitespace to positive numbers, and a Z otherwise. 11↑ ⍝ Take the first 11 characters, padding with whitespace. дополнено 0 s to a length of \$14!\$, and a newline. Works on the domain \$[-13!,14!-13!)\$, which is a superset of \$[-2^{31},2^{31})\$.

Учитывая размер вывода, я включил вместо этого тестовый пример с меньшим доменом \$[-2^4,2^4)\$.

 

Женя 21


Рег
29 Jan, 2014

Тем
79

Постов
202

Баллов
627
  • 26, Oct 2024
  • #19

PHP, 64 54 байта

-10 байт с помощью 2^10 function instead of manual character replacement.

-2^10

Попробуйте онлайн!

Наибольшее значение int, возможное в PHP на данный момент, равно ⎕IO←0 which is 19 digits long, considering the minus sign in negative numbers, it will be 20. The code above replaces minus sign ( {11↑' Z'[⍵≤0],⎕A[⍎¨'¯'~⍨⍕⍵]} ) с STR character and every digit from CAST к STR() with a character from INT к TRANSLATE and then pads the string in the right with space character to always make it 20 characters long. For example, the output for input of STR является - .

Вывод уникален для каждого целочисленного ввода, и вы можете вернуться к вводу, удалив все пробелы и заменив SELECT TRANSLATE(STR(n,11),'-0123456789','ABCDEFGHIJK')FROM t с b и замена a к 1 с 0 to $_=sprintf'4b',$_;y/01/ab/ .


PHP, 44 байта

-p

Попробуйте онлайн!

Это та же идея, что и Ответ Арно. Преобразует входные данные в двоичный формат, а затем преобразует их в формат Base-64. Также дополняет его до 88 символов (наибольшая длина — для $_=md5_hex$_;y/0-9/k-t/ which is 88 characters) with space character at right to always get same length in the output.

 

Paladinich


Рег
22 Apr, 2007

Тем
78

Постов
192

Баллов
602
  • 26, Oct 2024
  • #20

Ретина 0.8.2, 21 байт

-MDigest::MD5=md5_hex -p

Попробуйте онлайн! Всегда выводит 11 символов из диапазона +65... .. x=>(new char[32]).Select(y=>(char)(x%2+65+(x/=2)*0)) . Объяснение:

C

Переведите печатные символы ASCII в строчные буквы. Это карты 9 to : and 0 .. 2^60 to map(\d->[d..]!!10).show.(+2^60) .. x=>$"{x,11}".Select(n=>(char)(n+n)) . (Очень удачно, что цифры — это печатные символы ASCII с 16 по 25!)

Ø%+ṃØA

Добавить 10 .. s. Since the input will have between 1 and 11 characters, there are now between 11 and 21 characters.

1

Извлеките первые 11 символов. Поскольку количество символов меньше 22, совпадение будет только один раз.

 

Rabotaivrunet


Рег
10 Apr, 2020

Тем
82

Постов
175

Баллов
605
  • 26, Oct 2024
  • #21

Древесный уголь, 9 байт

0

Попробуйте онлайн! Ссылка на подробную версию кода. Всегда выводит 10 пробелов и заглавные буквы. Объяснение:

..1 ||answer||

Р, 37 байт

('%34b'%n)

Попробуйте онлайн!

Похоже, что результат случайный, но это не так! Входные данные используются в качестве начального числа генератора псевдослучайных чисел, и затем мы получаем одну из \$26!=4\cdot 10^{26}\$ перестановок алфавита. Вывод всегда имеет длину 51 (26 букв + 25 пробелов).

По-прежнему остается проблема обеспечения того, чтобы все выходные данные были разными. В итоге мы получаем \$2^{32}\approx 4\cdot 10^9\$ перестановок (из \$4\cdot 10^{26}\$). Если мы сделаем вид, что перестановки распределены равномерно случайным образом, то вероятность того, что все перестановки различны, можно вычислить, выполнив те же вычисления, что и для Проблема с днем ​​рождения. Вероятность того, что 2 конкретных выходных сигнала идентичны, равна \$10^{-17}\$, поэтому приближение первого порядка вероятности того, что все выходные данные \$2^{32}\$ различны, равно

\$1-\exp(-2^{64}/26!)\approx0.99999998\$

что для меня достаточно близко к 1.

 

K$ion


Рег
29 Jun, 2006

Тем
69

Постов
215

Баллов
580
  • 26, Oct 2024
  • #22

мозготрах, 20 19 байт

-1 байт благодаря Кшиштофу Шевчику

->n{('%34b'%n).tr'01','ah'}

Попробуйте онлайн!

Выводит число, где каждая цифра и тире сопоставлены с 255 минус их порядковое значение, дополненное до 255 символов нулевыми байтами.

 

<<>>


Рег
05 Nov, 2006

Тем
64

Постов
204

Баллов
574
  • 26, Oct 2024
  • #23

Р, 40 37 байт

f(a,i){for(i=32;i--;putchar(a>>i&1));}

Попробуйте онлайн!

Альтернатива Ответ Робина Райдера; это, конечно, детерминировано.

Это преобразует входные данные в -2147483648 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONIGCDAMLJKFEHB -2147483647 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONIGCDAMLJKFHBE -2147483646 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONIGCDAMLJKFHEB -2147483645 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONIGCDAMLJKHBEF ... -4 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDACB -3 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDBAC -2 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDBCA -1 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCAB 0 zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA 1 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 2 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxzy 3 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwyxz 4 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwyzx ... 2147483644 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmrtxwznoqpsvyu 2147483645 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmrtxwznoqpsyuv 2147483646 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmrtxwznoqpsyvu 2147483647 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmrtxwznoqpusvy vector of 32 bytes, each byte being a hex number œэØẠ - Link: integer, n ØẠ - alphabet (Jelly's longest built-in character list containing no digits - or hyphen) = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" œ? - permutation at index (n) if all 52! permutations were written out - in lexicographical order. - This indexing is modular so when n = -x we fetch the (52!-x)th entry. или œэØẠ representing the bits of the integer. We then coerce to a str.translate сравнивая с caab , so (space)-01 отображается на lambda n:f"{n:33b}".translate("abc"*99) and ->,[[->-<]>.[-]<<->,]<[<.>-] to +[,[->-<]>.+] . Then we need to remove a single letter from each Ä # Get the absolute value of the (implicit) input-integer ¶× # And have a string with that many newline characters A # Push the lowercase alphabet Id # Check if the input is non-negative (>=0) (1 if truthy; 0 if falsey) è # Use that to index into the alphabet (so "a" for <0 and "b" for >=0) « # Append that to the newline-string we created earlier j # And prepend spaces to make the string of a length: žI # 2147483648 (this has been replaced with `₄`/1000 in the TIO) # (after which the result is output implicitly) чтобы гарантировать вывод одинаковой длины, произвольно выбранный для 2147483648 . Result is printed (with space) for a length of 169.

 

Taazz


Рег
23 Jun, 2009

Тем
70

Постов
186

Баллов
556
  • 26, Oct 2024
  • #24

Зш, 43 байта

1000
Ķ×AIdè«žIj

Попробуйте онлайн!

Это решение обходит j # Prepend spaces in front of the (implicit) input-integer to make it of length: т # 100 Ç # Convert each character to its unicode value · # Double each ç # And convert it back to a character # (after which the resulting list is output implicitly) limits of Zsh's integers by working with only characters. I only padded it to 30 characters for readability, but replacing Z`bdfhjlnpr with -0123456789 will allow this method to work on all numbers from @ to тjÇ·ç .

Эффект интерпретации десятичных кодов как шестнадцатеричных заключается в следующем:

for

Зш, 46 байт

map

Попробуйте онлайн!

Объявляет x как двоичное число, дополненное нулями до ширины 66. Затем отображает lambda i:[*map(lambda x:chr(ord(x)*2),"%9x"%i)] 2147483648 and -2147483648- . Мы также составляем карту lambda i:[chr(ord(x)*2)for x in"%9x"%i] and "-1" -> "LTE=" | "10" -> "MTA=" "00" -> "MDA=" | "11" -> "MTE=" "01" -> "MDE=" | до a, поскольку эти символы печатаются в "0" -> "MA==" | "1" -> "MQ==" notation. To see what "-10" -> "LTEw" | "011" -> "MDEx" "-11" -> "LTEx" | "100" -> "MTAw" "000" -> "MDAw" | "101" -> "MTAx" "001" -> "MDAx" | "110" -> "MTEw" "010" -> "MDEw" | "111" -> "MTEx" выглядит так, как было до замены, и ограничения Zsh при анализе целочисленных типов, проверьте вывод отладки по ссылке TIO.

 

ImmibcigZek


Рег
16 Jan, 2014

Тем
71

Постов
190

Баллов
555
  • 26, Oct 2024
  • #25

Java (JDK), 42 байта

"-1001101"

Попробуйте онлайн!

Во-первых, это создает шестнадцатеричное представление входных данных, дополненное слева пробелами, что обеспечивает одинаковое ограничение длины (длиной 8 символов), удаляет знак минус и сохраняет уникальность каждого промежуточного вывода.

Это дает строку с 17 различными возможными символами: -77 and space.

Затем каждый символ передается в потоковом режиме и сопоставляется путем добавления 64 к его коду, если это цифра или пробел. Фактически это приводит к следующему отображению: "1111011" to 123 который имеет 17 разных символов, поэтому никакие два числа не дадут одинаковый результат.

 

Ппоплопл


Рег
17 Apr, 2011

Тем
77

Постов
184

Баллов
579
  • 26, Oct 2024
  • #26

Баш, 30 байт

n=>btoa(n.toString(2)).padEnd(76)

Попробуйте онлайн!

Чтобы доказать уникальность вывода, я просто поискал в Google коллизии MD5 и не нашел результатов в целых числах между \$-2^{31}\$ и \$2^{31}\$. Чтобы избежать появления запрещенных символов в выводе, просто переведите соответствующие символы в буквы верхнего регистра. Вывод всегда имеет одинаковую длину по определению и гарантированно не содержит запрещенных символов.

 

Garik119


Рег
02 Dec, 2011

Тем
68

Постов
212

Баллов
562
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно