Алфавит в языках программирования


69

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

Вход: нет

Выход:

abcdefghijklmnopqrstuvwxyz

прописные и конечные символы новой строки необязательны

Правила :

  • Скоринг метрика длина языка программирования имени , а также длина кода. Следовательно, C будет оцениваться как «штраф» 1, в то время как GolfScript будет оцениваться как штраф 10.
  • Один язык / реализация на ответ. Несколько ответов приветствуются.
  • Если первая буква имени языка программирования не является английской буквой, ее не следует приводить к ней. Это будет рассматриваться как отдельное письмо (что означает меньше конкуренции).
  • Никакой ответ не будет принят, пока каждое английское письмо не найдет решение.

Текущий рейтинг:

Скажи мне, если я кого-то скучаю.

Автоматический список лидеров (экспериментальный)


1
Разрешено ли нам печатать мусор в stderr?
Питер Тейлор

@ Питер Тейлор: сойти с ума. Чтобы ответить на ваш вопрос, да, распечатка мусора в stderr - это нормально (при условии, что стандартный вывод правильный).
Джои Адамс,


Funge отличается от Befunge. Наверняка мой педантизм будет вознагражден на сайте, посвященном его подвигам!
tngreene

2
Это так *0*5AB1Eже, как *o*sabie: P?
Волшебная Урна Осьминога

Ответы:


13

K для K , 12 символов -> Оценка: 13

`0:_ci97+!26

Конечно, вы можете адаптировать одно из ваших решений для A +, верно?
Джои

Настройка A + немного прикольная. Я делал это раньше, но мне не очень хочется. (Сова, newLISP и zshell были все под ключ.)
Джесси Милликен

3
я предполагаю, что это k2 или k3. в k4 / q вы можете сделать это за 7 символов с 1 .Q.a;.
Аарон Дэвис

вам не нужно `0:или 1@в Codegolf
нгн

26

П (на самом деле) для Пита - 57 кодов

Большая версия (размер кодекса = 6)

р для пит - большой

Маленькая версия (размер кода = 1)

p для piet - маленький

Испытано с переводчиком Пита Эрика npietи разработана с Питом Создателем .

Редактировать : вот версия «trace» (сгенерированная с помощью npiet -tpf), чтобы вы могли увидеть, как она работает.

Выполнение начинается в верхнем левом углу и проходит по границе по часовой стрелке. Верхний и правый края настраиваются (вычисление значения a(97) занимает довольно много кодов). Цикл начинается с нижнего края и продолжается до левого края. Когда значение zдостигнуто, программа поворачивается направо в поперечное сечение под первым Pи завершается.

Нажмите на изображение, чтобы увеличить и увидеть детали


Ооо, Пит всегда хорош. А у вас случайно не оказалось работающего бинарника Windows от Piet Creator? (Мне было лень охотиться на все зависимости и предпосылки, чтобы просто немного поиграть).
Joey

И разве это не 400 кодеков и 57 кодировок ? (Я не думаю, что у нас было общее мнение о том, как считать Пита здесь)
Джои,

1
@ Джо, я посмотрю, смогу ли я приготовить сборку Piet Creator для Windows. Прошло некоторое время с тех пор, как я проверил это там. Вы правы насчет кодов. Если бы я выложил программу в строку, это было бы 57 кодов (дайте или возьмите несколько), версия выше более удобна для глаз (как пробел в других языках). Возможно, представления Пита должны иметь как минимальные, так и привлекательные источники. Нам лучше решить, потому что я планирую еще много ответов Пита :)
Кейси

Ну, вы могли бы открыть вопрос по мета, чтобы спросить прояснение того, как должен обрабатываться код Пита :-). Я бы тоже давно представил решения Piet. За исключением того, что pietdev был довольно глючным, и для Piet Creator мне понадобился Qt и несколько других вещей, просто чтобы собрать его ;-). И просто использование растрового редактора довольно ... громоздко ...
Джои,

@Joey Piet Creator все еще нуждается в нескольких важных улучшениях, чтобы быть действительно потрясающим, надеюсь, я смогу добавить их в ближайшее время. В конечном итоге я использую в основном Piet Creator, а затем использую Paint или GIMP для перемещения блоков цвета. Питдев был моим главным вдохновителем для ПК. Было бы замечательно получить отзывы о ПК, я постараюсь как можно быстрее установить Windows.
Кейси



12

W для пробела, 72 символа -> Оценка: 82

введите описание изображения здесь

[Sp][Sp][Sp][Tab][Tab][Sp][Sp][Sp][Sp][Tab][LF][LF][Sp][Sp][Tab][Tab][LF][Sp][LF][Sp][Tab][LF][Sp][Sp][Sp][Sp][Sp][Tab][LF][Tab][Sp][Sp][Sp][Sp][LF][Sp][Sp][Sp][Sp][Tab][Tab][Tab][Tab][Sp][Tab][Tab][LF][Tab][Sp][Sp][Tab][LF][Tab][Sp][Sp][Sp][LF][LF][Sp][LF][Tab][Tab][LF][LF][Sp][Sp][Sp][Sp][LF][LF][LF][LF]

Я потратил целую вечность, чтобы заставить эту глупость работать прошлой ночью, а затем обнаружил, что пробелы здесь не отображаются в виде кода! Затем, когда я дулся, мое интернет-соединение умерло. Итак, я публикую это сейчас, просто чтобы не тратить час своей жизни на то, чтобы заставить его работать.


6
Я бы подумал, что из удаленного комментария и моего решения было очевидно, что я никогда раньше не писал никаких пробелов. Очевидно нет.
Гарет

@Mego Есть ли шанс, что мы можем снять мое имя с этого, так как я не имею к этому никакого отношения?
Гарет

11

A для APL,  14  11 символов / байт * → оценка 14

⎕UCS 96+⍳26

Это работает по крайней мере в Dyalog и Nars2000 .


* APL может быть записан в своей собственной (устаревшей) однобайтовой кодировке, которая отображает символы APL в верхние 128-байтовые значения. Следовательно, для целей оценки программа из N символов, в которой используются только символы ASCII и символы APL, может рассматриваться как длина N байтов.


1
⎕aработает в APLX .
Адам

верхний регистр и завершающий перевод новой строки необязательно, так что ⎕Aработает.
Адам

11

P для Python 2, 30 символов -> Оценка: 36

Я сделал это, через 8 лет я понял, что в Python 2 есть более короткий путь!

print bytearray(range(97,123))

Предыдущий код размером с тривиальный шрифт:

print'%c'*26%tuple(range(97,123))

print'abcdefghijklmnopqrstuvwxyz'

Изменить: Проверьте прорыв с Python 3, где я также нашел решение меньше, чем тривиальная печать: https://codegolf.stackexchange.com/a/195165/2212


2
Это такая же длина, как и print'abcdefghijklmnopqrstuvwxyz'...
nneonneo


9

R для R, 19 → Оценка: 20

cat(letters,sep="")

Альтернативно (20 символов): cat (letters, sep = "")
Paolo

Не lettersдостаточно хорош? Я не вижу спецификации, указывающей, что выходные данные должны быть непрерывной строкой. Конечно, приведенный пример в той форме, но «завершающий перевод новой строки не является обязательным»?
Гаффи

@Gaffi: я полагаю, что я придерживался других языков с тем же стандартом в этой теме, а именно, вывод должен быть точно "abc ... xyz", без промежуточных символов). Полагаю, я мог бы изменить правило и выиграть свой собственный конкурс, но это было бы не очень весело.
Джои Адамс

7

R для Ruby, 13 символов -> Оценка: 17

Решение для Ruby 1.9, которое разработала Matma Rex :

print *?a..?z

Мое оригинальное решение Ruby 1.8 (15 символов -> Оценка: 19):

$><<[*'a'..'z']

Этот не соответствует критериям? Вывод содержит дополнительные символы. Кроме того, если все в порядке, это было бы $><<[*?a..?z]для Ruby 1.9 (сбрить 2 символа).
Матма Рекс,

1
Самый короткий правильный вариант, который я могу представить print *?a..?z. Это та же самая длина и та, которую я предложил выше. Мы не можем использовать, $><<потому что <<есть некоторые странные правила приоритета, и все взрывается. Мы не можем использовать pили putsвместо, printтак как они печатают каждую букву в отдельной строке.
Матма Рекс,

Извините, я должен был упомянуть, что это для Ruby 1.8. В Ruby 1.8 Array#to_sтоже самое Array#join, что он просто печатает алфавит без лишних символов. Но ваше решение 1.9 действительно короче.
Вентеро


@ Джордж: Ваш вывод из Ruby 1.8 (который можно проверить здесь: codepad.org/pvyqzaPP ). Как отмечается в посте, это решение для Ruby 1.9.
Вентеро

7

F для рыбы (> <>), 19 символов -> Оценка: 23

Потому что это чертовски красивый язык!

30"`"1+::o&p&"y"(?;

Разве этот ответ не набрал 22, потому что <>>это всего три символа, а не четыре. Есть ли причина, по которой вы использовали более длинное имя в счете?
pppery

@ppperry Ну, имя языка не может начинаться с буквы F и быть <><.
землетрясение

1
Название языка - ><>нет<><
TuxCrafting

Это, кажется, не работает - это просто печатает a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Крис


6

S для Scala, 16 символов => оценка 21

'a'to'z'mkString

18 символов => оценка 23

'a'to'z'mkString""

22 символа => оценка 27

('a'to'z')map(print _)




6

D для DC, 17 символов → Оценка: 19

97[dP1+dBD>x]dsxx

выводит «ab» и выходит из DC версии 1.06.95
Wossname

@Wossname echo '97[dP1+dBD>x]dsxx' | dcработает в версии 1.07.1
BlackCap

6

C для C, 36 35 символов → Оценка: 36

main(a){for(;putchar(a+++64)-90;);}

Вы можете удалить 2 символа, предполагая, что (argc) равен единице, а не инициализировать его.
Джои Адамс,

Но это даже не компилируется ...
замедленная

Лучшее, что я мог получить для компиляции, было 59 или 42 без включения: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
замедленная

Даниэль, здесь работает с MSVC 10.
Джои


5

P для PowerShell, 15 символов → Оценка: 25

-join('a'..'z')

1
Хм, не уверен, стоит ли делать это W или P.
Джои Адамс,

1
Технически это W, поскольку правильное название языка (и продукта) - Windows PowerShell . Да, это меня тоже беспокоит.
Джо


@dorukayhan: При использовании PowerShell Core мы также можем сократить его до -join('a'..'z')25,
Joey




4

A для AppleScript, 41 -> Оценка: 52

display alert"abcdefghijklmnopqrstuvwxyz"

1
Я знаю, что с момента публикации прошло много времени, но вы можете использовать его "abcdefghijklmnopqrstuvwxyz", поскольку возвращаемое значение выводится на панель результатов.
Эддисон Крамп

4

M для Matlab, 13 символов, оценка 19

disp('a':'z')

M для Matlab, 18 символов, оценка 24

disp(char(97:122))

1
У меня нет matlab под рукой, но я думаю, что вы должны disp(..)предотвратить этот вывод ans = .
Набб

Правильно, изменилось в ответе.
jpjacobs

4

B для BrainF ***, 38 + 9 = 47

++++[>++++++<-]>[->+>++++<<]>++[->+.<]

Может быть уменьшено до 31 + 9 = 40 , если ячейки обернутся вокруг 256

++[>+>++<<+++++]>----->[<.+>++]

4

B для Bash: 4 + 16 = 20

printf %s {a..z}

или 15 с просто:

echo {a..z}

если вывод формы a b c ...разрешен (как видно во многих других ответах).


Я так не думаю. Перевод строки необязательный, вывод «abcdefghijklmnopqrstuvwxyz»
пользователь неизвестен




Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.