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

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и завершается.

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

Casey
источник
Ооо, Пит всегда хорош. А у вас случайно не оказалось работающего бинарника Windows от Piet Creator? (Мне было лень охотиться на все зависимости и предпосылки, чтобы просто немного поиграть).
Joey
И разве это не 400 кодеков и 57 кодировок ? (Я не думаю, что у нас было общее мнение о том, как считать Пита здесь)
Джои,
1
@ Джо, я посмотрю, смогу ли я приготовить сборку Piet Creator для Windows. Прошло некоторое время с тех пор, как я проверил это там. Вы правы насчет кодов. Если бы я выложил программу в строку, это было бы 57 кодов (дайте или возьмите несколько), версия выше более удобна для глаз (как пробел в других языках). Возможно, представления Пита должны иметь как минимальные, так и привлекательные источники. Нам лучше решить, потому что я планирую еще много ответов Пита :)
Кейси
Ну, вы могли бы открыть вопрос по мета, чтобы спросить прояснение того, как должен обрабатываться код Пита :-). Я бы тоже давно представил решения Piet. За исключением того, что pietdev был довольно глючным, и для Piet Creator мне понадобился Qt и несколько других вещей, просто чтобы собрать его ;-). И просто использование растрового редактора довольно ... громоздко ...
Джои,
@Joey Piet Creator все еще нуждается в нескольких важных улучшениях, чтобы быть действительно потрясающим, надеюсь, я смогу добавить их в ближайшее время. В конечном итоге я использую в основном Piet Creator, а затем использую Paint или GIMP для перемещения блоков цвета. Питдев был моим главным вдохновителем для ПК. Было бы замечательно получить отзывы о ПК, я постараюсь как можно быстрее установить Windows.
Кейси
17

P для Perl, 10 символов -> Оценка: 14

print a..z
Ventero
источник
28
Как насчет say a..z?
mbx
14

Y для Yoix , 44 символа → Оценка: 48

int x;for(;++x<27;)yoix.stdio.putchar(96+x);
детеныш
источник
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]

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

Gareth
источник
6
Я бы подумал, что из удаленного комментария и моего решения было очевидно, что я никогда раньше не писал никаких пробелов. Очевидно нет.
Гарет
@Mego Есть ли шанс, что мы можем снять мое имя с этого, так как я не имею к этому никакого отношения?
Гарет
11

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

⎕UCS 96+⍳26

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


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

jpjacobs
источник
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

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

G для Golfscript, 8 символов -> Оценка: 18

123,97>+
Ventero
источник
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']
Ventero
источник
Этот не соответствует критериям? Вывод содержит дополнительные символы. Кроме того, если все в порядке, это было бы $><<[*?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 действительно короче.
Вентеро
Вывод: codepad.org/atGFGVuQ
Натан Осман
@ Джордж: Ваш вывод из Ruby 1.8 (который можно проверить здесь: codepad.org/pvyqzaPP ). Как отмечается в посте, это решение для Ruby 1.9.
Вентеро
7

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

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

30"`"1+::o&p&"y"(?;
jpjacobs
источник
Разве этот ответ не набрал 22, потому что <>>это всего три символа, а не четыре. Есть ли причина, по которой вы использовали более длинное имя в счете?
pppery
@ppperry Ну, имя языка не может начинаться с буквы F и быть <><.
землетрясение
1
Название языка - ><>нет<><
TuxCrafting
Это, кажется, не работает - это просто печатает a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Крис
6

O для Совы , 11 символов -> Оценка: 14

a[%)1+%z>]!
Джесси Милликен
источник
6

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

'a'to'z'mkString

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

'a'to'z'mkString""

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

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

Gareth
источник
6

B для Befunge → 18 символов

"a"::,1+10p"y"`#@_
ninjalj
источник
Может быть выполнен в 16 символах , для счета 23.
Джеймс Холдернесс
6

P для Python 2, 42 символа → Оценка: 48

import string
print string.ascii_lowercase
Вспомогательный метод
источник
6
print 'abcdefhijklmnopqrstuvwxyz'
Чарльз Битти
7
print'abcdefhijklmnopqrstuvwxyz'
nneonneo
6

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

97[dP1+dBD>x]dsxx
ninjalj
источник
выводит «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 для Python 2, 41 символов → Оценка: 47

print''.join(chr(i+97)for i in range(26))
Олег Припин
источник
5

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

-join('a'..'z')
детеныш
источник
1
Хм, не уверен, стоит ли делать это W или P.
Джои Адамс,
1
Технически это W, поскольку правильное название языка (и продукта) - Windows PowerShell . Да, это меня тоже беспокоит.
Джо
@dorukayhan: При использовании PowerShell Core мы также можем сократить его до -join('a'..'z')25,
Joey
4

B для bc - 2 + 28 = 30

"abcdefghijklmnopqrstuvwxyz"
Джои Адамс
источник
4

L для логотипа, 26 символов → Оценка: 30

for[i 97 122][type char i]
PleaseStand
источник
4

T для Thue, 35 символов → Оценка: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0
детеныш
источник
4

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

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

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

disp('a':'z')

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

disp(char(97:122))
jpjacobs
источник
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 ...разрешен (как видно во многих других ответах).

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

U для Unlambda - 8 + 79 = 87

``````````````````````````.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.zr
Джои Адамс
источник
3

J для J, 14 символов -> Оценка: 15

echo u:97+i.26
Джесси Милликен
источник
Зачем echo? u:97+i.26это полная программа J
Грегори Хигли
5
Потому что это не имеет выхода при запуске в качестве скрипта (для меня, во всяком случае).
Джесси Милликен
3

B, 45 -> Оценка: 46

main(){auto i;i=95;while(i++<122)putchar(i);}
Lowjacker
источник