Codegolf — Генерировать Каждую Строку Ascii

  • Автор темы Mahatm
  • Обновлено
  • 20, Oct 2024
  • #1
На этот вопрос уже есть ответы здесь:

Вывести все строки

 
 
 '', 'a', 'aa', 'aaa', 'aaaa', 'aaaaa', ...

'', 'a', 'ab', 'abc', 'abcd', ..., 'abc...xyza', ...
 
, there exists an integer '', 'a', 'b', 'c', ..., 'z', 'aa', 'ab', ..., 'az', 'ba', 'bb', 'bc', ... 'zz', 'aaa', ... '', 'z', 'y', 'x', ..., 'a', 'zz', 'zy', ... '', 'a', 'b', 'ab', 'ba', 'c', 'ac', 'ca', 'bc', 'cb', ... (24 ответа) '', 'a', 'b', 'c', ..., 'z', 'aa', 'ab', ..., 'az', 'ba', 'bb', 'bc', ... 'zz', 'aaa', ... is the 'b' 'a', 'aa', 'aaa', 'aaaa', ... , since the string n Закрыт 4 года назад.

Описание

s

Существует бесконечное количество строк ASCII. Напишите программу, которая будет выводить каждую возможную строку ASCII ровно один раз.

Порядок не имеет значения, но вы должны быть в состоянии показать это для любой возможной строки ASCII.

  • такой, что
  • th строка на выходе. Это ограничение означает, что вы не можете выводить
  • никогда не произойдет.
  • Самый простой порядок (показанный здесь в виде букв, чтобы мне не приходилось печатать непечатные материалы): По сути, это счет по основанию 128 с использованием символов ASCII. Правила

Требуется пустая строка

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

Должно быть известно, что все возможные строки, использующие ASCII, встречаются в выходных данных.

n

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

s

гарантированный

Mahatm


Рег
31 Oct, 2006

Тем
65

Постов
209

Баллов
584
  • 26, Oct 2024
  • #5

Рубин, 64 байта

Print

Рекурсивная функция, печатающая массив CharacterRange then calls itself on a newly constructed array whose contents are (in set notation) "", "a", "b", ... , "z", "aa", "ab", ... , "az", "ba", "bb", ... , "zz", "aaa", "aab", ... . Мы начинаем с массива, содержащего пустую строку.

 

Sk11


Рег
26 May, 2014

Тем
58

Постов
200

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

Математика, 44 41 61 байт

Зачеркнутое 44 остаётся обычным 44...

0//.i_:>(Print@@@Array[FromCharacterCode,128,0]~Tuples~i;i+1)

Отпечатки на выкройке: { sc | s in a, c in ASCII } (but with \00, \01, ...).

Попробуйте это в Wolfram Sandbox

К сожалению, мне не удалось воспользоваться встроенным a function (which would have reduced 10 bytes) because it cannot generate the null character.


Я рекомендую тестировать версию, которая делает паузу 0,25 секунды между каждым (f=->a{f[a.flat_map{|s|puts s;(1..127).map{|b|s+b.chr}}]})[['']] calls:

.Vj^sCMS127b ||answer||

СОГЛ V0.12, 10 байты

i=0 (p=print)() while++i for j:cartesianpower(i,0..128)p(j is tuple? ''.join(map(chr,j)):chr(j))

Попробуйте здесь!

Обратите внимание, что это забивает стек дополнительным элементом на каждой итерации, и из-за того, насколько медленным является SOGL, он быстро выходит из-под контроля.

 

Kwatchesmkymqo58


Рег
05 Feb, 2011

Тем
69

Постов
192

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

Интересно