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


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.