Программа должна печатать алфавит четыре раза: сначала в обычном алфавитном порядке, затем в порядке qwerty-клавиатуры, третьем в порядке дворака и, наконец, в обратном алфавитном порядке. Вывод должен выглядеть примерно так:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
pyfgcrlaoeuidhtnsqjkxbmwvz
zyxwvutsrqponmlkjihgfedcba
Выходные данные не чувствительны к регистру, и вы можете добавлять или пропускать символы новой строки или пробелы, где вы хотите.
Подвох : программа должна быть не более 104 символов или, другими словами, меньше длины алфавита в четыре раза.
Я приму ответ с самым коротким кодом, если я не увижу что-то действительно умное или интересное, что меня больше поразит.
РЕДАКТИРОВАТЬ: Я приму кратчайший ответ в среду, 27.04.2011.
РЕДАКТИРОВАТЬ 2: И победитель (как обычно) Golfscript в 64 символов! Второе место , которое уступает только три символа, также находится в Golfscript с 67 символами, за которым следует Bash на третьем месте с 72 символами.
Но я хотел упомянуть несколько других, таких как этот , который, в зависимости от вашего определения, использовал только 52 «символа», и этот, где он написал это на языке, который создал.
Было несколько человек, которые нарушили неписаное правило и не подходили, но я упомяну их только для их мышления без коробки.
источник
Ответы:
Python 2, 97 символов
Сортировка QWERTY и обратное преобразование из списка в строку короче самого алфавита! *
Еще один вариант для создания алфавита в меньшее количество символов, чем сам алфавит:
Хотя это печатает список символов Python.
Здесь мало что можно сделать с точки зрения сжатия данных; заклинивание букв в 5 разрядов экономит только 39 символов, что не так уж много, если вам придется их разжимать (и вы все равно должны представлять байты буквально); похоже, zlib (просто в качестве примера) экономит менее 20 байт; кодирование последовательности в виде списка дельт для следующей буквы по-прежнему занимает 5 битов для каждой дельты, поскольку наибольшее значение в этой последовательности равно -22:
* Хотя и незначительно
источник
q="qwertyuiopasdfghjklzxcvbnm";a=sorted(q);print(*a,q,"pyfgcrlaoeuidhtnsqjkxbmwvz",*a[::-1])
PHP, 100 байт
Как ISO 8859-1:
Надежно воспроизвести,
источник
Рубин 1.9,
88878480источник
Баш, 82
источник
Питон,
9796 "символов"Если вы используете слово «символы» в широком смысле, вот вам немного Python, который использует 16-битные символы Юникода для кодирования 3-х нормальных символов каждый. Всего в программе 96 символов, 35 из которых самые странные символы юникода, которые я когда-либо видел.
Я не уверен, что юникодный мусор придет, хотя правильно, поэтому вот программа на python для генерации вышеупомянутой программы на python:
источник
Баш, 72
РЕДАКТИРОВАТЬ: удалено
tr -d
.Кредиты: Александр, Роджер.
источник
|tr -d ' '
, сохраняя 10 символов и делая эту версию лидером на момент написания :-)Golfscript, 64 символа
Примечание: также 64 байта. На самом деле, игра с Unicode и базовыми изменениями кажется контрпродуктивной, потому что
base
это слишком длинное ключевое слово.источник
Windows PowerShell, 89
Не особенно хорошо, но по крайней мере короче, чем выходная строка:
Короче теперь, когда я увидел, что на пустом месте есть расслабление. И еще немного короче, если я проигнорирую дело, которое мне позволено.
источник
)
. Должно быть 88.Golfscript,
76, 67 символовисточник
123,97>+
для генерации начального алфавита.CI - 92 символа
CI («Компилятор / Интерпретатор») - это простой язык на основе стека, который я создал для задачи «Интерпретатор-интерпретатор» ( ссылка на ответ ). Я отправил этот ответ примерно за два часа до того, как был опубликован этот вызов. Это не GolfScript (который я до сих пор не изучал), так как моей целью было сделать переводчика коротким.
Эта программа должна быть передана
ci
переводчику через стандартный ввод. Интерпретатор обрабатывает символы после завершения)
как ввод в программу. Мой язык не поддерживает строковые литералы, поэтому stdin занимает его место.источник
Python 2.7.X - по иронии судьбы 103 персонажа ...
Как оказалось, генерация алфавита в python требует больше символов, чем его жесткое программирование. Как и импорт алфавита. Должен иногда любить ориентированный на читаемость язык.
источник
+
вместо,
и сохранить это место.C - 133 символа
Укороченная версия от Кейси:
Whitespaced:
Транспонированный вывод
Вот версия, которая делает транспонированный вывод, для развлечения. 134 символа
Whitespaced:
Печать:
источник
i
глобальным и поместивstrcpy(...)
в первый блок цикла for, вы получите 129. все же слишком много.J
Мой первый опыт работы с J. Идея состоит в том, чтобы просто использовать каноническое (лексикографическое) число требуемой перестановки; к сожалению, это требует больше символов, чем жесткое его кодирование. Но если бы можно было найти какое-то арифметическое выражение (используя полномочия и еще много чего), дающее магические числа, оно могло бы быть сокращено.
источник
Python, 90 символов Юникода
запустить на ideone - http://ideone.com/R2dlI или кодовой панели - http://codepad.org/lp77NL9w
источник
Javascript
139121новые:
старый:
источник
alert((a=(q='qwertyuiopasdfghjklzxcvbnm').split('').sort()).join('')+q+'pyfgcrlaoeuidhtnsqjkxbmwvz'+a.reverse().join(''))
Lua - 111 персонажей
Бьет С и С ++! :-)
«Умная» версия в Lua
129 символов
Whitespaced:
источник
C -
163135 символовЭто не соответствует требованиям, поскольку в нем более 104 символов, но сделать это было весело. Возможно, у кого-то будут какие-то предложения.
Это компилируется в GCC 4.5.1 (другие не проверены). Yay за пропуск #include, возвращаемых типов и объявлений переменных! Жесткое кодирование привело бы к сокращению программы, но это было бы неинтересно.
Пробельная версия:
C -
124122 хромойВот хромая жестко закодированная версия, и она все еще не делает разрез.
источник
puts()
вместо printf во втором случае - на 2 символа меньше.while
сputs(a);
в первом случае, капельной*p=a
; - 138 символов вместо 163.puts
. Изменено.PHP 88 байт
источник
J - 69 символов
Объяснение:
(,\:~) y
- Сортироватьy
в порядке убывания (\:~
) и добавить (,
), что кy
.x (,~|.) y
- Обратный (|.
)y
, и добавьте это передx
.x F&G y
- Выполнить(G y) F (G y)
, то есть выполнитьF
по результатам обращенияG
к аргументам.Итак, все вместе, мы добавляем алфавит в обратном порядке к строкам Dvorak и reverse-QWERTY, затем обращаем вспять к QWERTY / алфавитному и помещаем его перед двоичным / алфавитным.
источник
Баш, 64
Я очень опаздываю на вечеринку, но у меня есть 64-х символьное решение. Программа должна быть сохранена на диск для работы
Как это работает:
{a..z}
и{z..a}
довольно понятны, но в основном это просто печатает каждый символ в этом диапазоне.$(sed 1d $0|base64)
выводит программу, игнорирует первую строку, а затем пропускает ее через кодировщик base64 (как это сделали некоторые другие примеры).Причина этого короче, чем другие подобные примеры ...
... потому что
{a..z}
диапазоны короче, чем в кодировках base64, поэтому мне нужно только кодировать base64 половиной строки. И поскольку я читаю двоичные данные из файла, а не храню их в строке, мне не нужно экранировать символы в коде.Как воссоздать этот скрипт:
Если код неправильно копирует / вставляет из Stack Exchange в ваш текстовый редактор, выполните в командной строке следующее (независимость от оболочки):
Затем запустить:
источник
05AB1E , 25 байтов
Попробуйте онлайн!
объяснение
источник
C ++
Грустно, когда самый короткий способ сделать что-то на языке - это жестко его кодировать.
источник
std::cout
короче чтоusing namespace std
, и вы можете пропуститьvoid
.J (77)
Сбрил 3 символа с помощью переменной:
Побрил еще 2 символа, используя подход на уровне значений:
источник
Хаскелл (95)
Perl (51)
Там нет правила, которое говорит, что я не могу.
источник
Q (68)
Выходы:
Пытался найти улучшение в жестком кодировании средних двух, но не придумал ни одного.
источник
К - 69 символов
Объяснение:
26#a:
- Назначьте две раскладки клавиатурыa
, а затем возьмите первые 26 символов.b:a@<
- Сортироватьa
и назначить этоb
:<
обеспечивает перестановку для сортировки по возрастанию и@
позволяет нам индексироватьa
для ее сортировки.b,a,|
- Добавить в строкуb
, затемa
, затем наоборот (|
)b
.источник
Пиф, 57
Алфавит, строка, обратный алфавит. G это алфавит. Печать неявная.
источник
Dyalog APL , 60 байт
Печать:
Что разрешено согласно ОП:
источник
Желе, 36 байт (не конкурирует)
Попробуйте онлайн!
Объяснение:
источник
05AB1E ,
6059 байтПопробуйте онлайн!
AÂ
- толкает раздвоенный алфавит."qwertyuiopasdfghjklzxcvbnm""pyfgcrlaoeuidhtnsqjkxbmwvz"
- толкает qwerty и дровак.»
- Печатает стопку.05AB1E , 57 байт (если вас не волнует случайность \ n)
Попробуйте онлайн!
источник
""
его новой строкой.