Алфавіт у мовах програмування


69

Наше завдання полягає в тому, щоб на кожну букву (англійського) алфавіту написати програму, яка друкує алфавіт, мовою, назва якої починається з цієї літери.

Введення: немає

Вихід:

abcdefghijklmnopqrstuvwxyz

Великий і останній рядки необов’язково

Правила :

  • Скоринг метрика довжина мови програмування імені , а також довжина коду. Отже, C буде оцінено "штраф" у розмірі 1, а GolfScript - 10.
  • Одна мова / реалізація на відповідь. Заохочується кілька відповідей.
  • Мова програмування повинна існувати до написання цього допису, цього вісімнадцятого квітня 2011 року.
  • Якщо перша літера назви мови програмування не є англійською літерою, її не слід примушувати до однієї. Це буде розглядатися як окремий лист (маючи на увазі менше конкуренції).
  • Відповідь не буде прийнята, поки кожен англійський лист не знайде рішення.

Поточний рейтинг:

Скажи мені, якщо я когось не пропускаю.

Автоматична таблиця лідерів (експериментальна)


1
Чи дозволяється нам друкувати мотлох до більш жорсткого?
Пітер Тейлор

@ Петер Тейлор: Зіпсуйся. Щоб відповісти на ваше запитання, так, друк мотлоху на stderr - це добре (доки правильний stdout).
Joey Adams


2
Це *0*5AB1Eте саме, що *o*sabie: P?
Чарівний восьминога Урна

1
@MagicOctopusUrn не має значення , в зв'язку з цим правилом: « Мова програмування повинна існувати до написання цього поста, на цьому Вісімнадцятого квітня 2011 року . »
Кевін Cruijssen

Відповіді:


13

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

`0:_ci97+!26

Звичайно, ви можете адаптувати одне із своїх рішень до A +, правда?
Джої

Налаштування A + є трохи прикольним. Я робив це раніше, але мені не дуже подобається. (Сова, newLISP та zshell - все під ключ.)
Джессі Мілікан

3
я припускаю, що це k2 або k3. в k4 / q, ви можете зробити це в 7 символів 1 .Q.a;.
Аарон Девіс

вам не потрібен `0:або 1@в codegolf
ngn

25

P - це (насправді) для Piet - 57 коделів

Велика версія (розмір коделі = 6)

p is for piet - big

Невелика версія (розмір коделу = 1)

p is for piet - small

Тестувався з піратським перекладачем Еріка npietта розроблявся разом із Piet Creator .

Редагувати : Ось версія "слід" (генерується за допомогою npiet -tpf), щоб ви могли бачити, як вона працює.

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

Клацніть зображення, щоб збільшити та переглянути деталі


Ой, Піт - це завжди приємно. І у вас не буває, що навколо вас лежить робочий бінарний файл Windows Piet Creator, чи не так? (Я був лінивий, щоб полювати на всі залежності та передумови, щоб лише знову пограти.)
Joey

І хіба це насправді не 400 коделів і 57 кодуючих кодувань? (Я не думаю, що ми мали єдину думку про те, як тут рахувати Піет)
Joey

1
@Joey Я побачу, чи зможу я приготувати збірку програми Piet Creator для Windows. Минуло час, як я його там випробував. Ти маєш рацію щодо коделів. Якби я виклав програму в рядок, це було б 57 коделів (дайте або візьміть кілька), версія вище є більш привабливою для очей (як пробіли в інших мовах). Можливо, подання Piet має мати як мінімальні, так і привабливі джерела. Ми краще вирішимо, тому що я планую ще багато відповідей Піет :)
Кейсі

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

@Joey Piet Creator все ще потребує декількох важливих удосконалень, щоб бути справді приголомшливими, сподіваюсь, що незабаром я можу додати їх. Я в основному використовую Piet Creator, а потім використовую Paint або GIMP для переміщення кольорових блоків. Pietdev був моїм головним натхненником для ПК. Отримати деякі відгуки про ПК було б чудово, я перейду на те, що Windows будує якомога швидше.
Кейсі



12

W - це Whitespace, 72 символи -> Оцінка: 82

enter image description here

[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працює.
Адам


8

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

cat(letters,sep="")

Як варіант (20 символів): кішка (літери, сеп = "")
Паоло

Чи не lettersдосить добре? Я не бачу специфікації, що вказує, що вихід повинен бути суміжним рядком. Зрозуміло, наведений приклад є у такому вигляді, але "останній новий рядок необов'язковий"?
Гаффі

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

8

P - для Python 2, 33 символи -> Оцінка: 39

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

1
Це така ж довжина, як і print'abcdefghijklmnopqrstuvwxyz'...
nneonneo

@nneonneo Отже ... Це все-таки найменший! (обмін позицією з цим іншим нудним і тривіальним кодом).
JBernardo

7

R - для Рубі, 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 справді коротше.
Вентеро


@George: Ваш вихід із Ruby 1.8 (що можна перевірити тут: codepad.org/pvyqzaPP ). Як зазначається у публікації, це рішення для Ruby 1.9.
Вентеро

7

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

Бо це чортово гарна мова!

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

Чи не ця відповідь набрала 22, тому що <>>всього три символи, а не чотири символи. Чи є причина, що ви використовували довше ім’я в партитурі.
pppery

@ppperry Добре назва мови не може починатись з F і бути <><.
flornquake

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 - для постійного струму, 17 символів → Оцінка: 19

97[dP1+dBD>x]dsxx

виводить "ab" і закривається у dc версії 1.06.95
Wossname

@Wossname echo '97[dP1+dBD>x]dsxx' | dcпрацює у версії dc 1.07.1
BlackCap

6

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

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

Ви можете скинути два символи, вважаючи, що (argc) дорівнює одному, а не ініціалізувати його.
Joey Adams

Але це навіть не компілюється ...
deceleratedcaviar

Найкраще, що мені вдалося скласти, було 59, або 42 без включення: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
deceleratedcaviar

Даніель, тут працює з MSVC 10.
Joey

5

W призначений для Windows PowerShell, 22 символи → Оцінка: 40

-join[char[]](97..122)

1
Хм, не впевнений, робити це W або P.
Джої Адамс

1
Технічно це W, оскільки правильна назва мови (та продукту) - Windows PowerShell . Так, мене також клопочуть.
Joey




4

T - Чт, 35 символів → Оцінка: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

A призначений для AppleScript, 41 -> Оцінка: 52

display alert"abcdefghijklmnopqrstuvwxyz"

1
Я знаю, що це тривалий час після публікації, але ви можете використовувати "abcdefghijklmnopqrstuvwxyz", оскільки значення повернення виводиться на панель результатів.
Аддісон Кримп

4

М для Матлаба, 13 символів, оцінка 19

disp('a':'z')

М для Матлаба, 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 ...дозволено вихід форми (як це видно в багатьох інших відповідях).


Я не думаю, що так. Linefeed не є обов'язковим, вихід "abcdefghijklmnopqrstuvwxyz"
користувач невідомий




Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.