L'alphabet dans les langages de programmation

69

Notre tâche est d’écrire, pour chaque lettre de l’alphabet (anglais), un programme l’imprimant, dans une langue dont le nom commence par cette lettre.

Entrée: aucune

Sortie:

abcdefghijklmnopqrstuvwxyz

Newline majuscule et fin optionnelle

Règles :

  • La métrique de scoring est la longueur du nom du langage de programmation , plus la longueur du code. Par conséquent, C recevra une "pénalité" de 1, et GolfScript, une pénalité de 10.
  • Une langue / mise en œuvre par réponse. Les réponses multiples sont encouragées.
  • Si la première lettre d'un nom de langage de programmation n'est pas une lettre anglaise, il ne faut pas la forcer à en faire une. Il sera traité comme une lettre distincte (ce qui signifie moins de concurrence).
  • Aucune réponse ne sera acceptée avant que chaque lettre en anglais ait une solution.

Classement actuel:

Dis-moi si je manque quelqu'un.

Classement automatique (expérimental)

Joey Adams
la source
1
Sommes-nous autorisés à imprimer du courrier indésirable sur stderr?
Peter Taylor
@Peter Taylor: Go Nuts. Pour répondre à votre question, oui, imprimer de la malbouffe sur stderr convient (tant que stdout est correct).
Joey Adams
Funge est distinct de Befunge. Mon pédantisme sera sûrement récompensé sur un site dédié à son exploit!
tngreene
2
Est-ce *0*5AB1Ela même chose que *o*sabie: P?
Urne Magique Octopus le

Réponses:

13

K est pour K , 12 caractères -> Score: 13

`0:_ci97+!26
Jesse Millikan
la source
Vous pouvez sûrement adapter l'une de vos solutions à A +, n'est-ce pas?
Joey
Mettre en place A + est un peu funky. Je l'ai déjà fait mais je n'en ai pas vraiment envie. (Owl, newLISP et zshell étaient tous clé en main.)
Jesse Millikan le
3
Je suppose que c'est k2 ou k3. en k4 / q, vous pouvez le faire en 7 caractères avec 1 .Q.a;.
Aaron Davies
vous n'avez pas besoin `0:ou 1@dans codegolf
ngn
26

P est (en fait) pour Piet - 57 codels

Grande version (taille de code = 6)

p is for piet - big

Petite version (taille de code = 1)

p is for piet - small

Testé avec l'interprète de Erik npietet développé avec Piet Creator .

Edit : Voici une version "trace" (générée avec npiet -tpf) afin que vous puissiez voir comment cela fonctionne.

L'exécution commence en haut à gauche et contourne la frontière dans le sens des aiguilles d'une montre. Le bord supérieur et le bord droit sont configurés (le calcul de la valeur de a(97) prend pas mal de codes). La boucle commence sur le bord inférieur et va vers le bord gauche. Lorsque la valeur de zest atteinte, le programme tourne à droite dans la section transversale sous le premier Pet se termine.

Cliquez sur l'image pour l'agrandir et voir les détails

Casey
la source
Oooh, Piet est toujours gentil. Et vous ne disposez pas d'un binaire Windows fonctionnel de Piet Creator, n'est-ce pas? (J'étais trop paresseux pour chasser toutes les dépendances et conditions préalables pour pouvoir jouer à nouveau un peu.)
Joey
Et n'est-ce pas en fait 400 codes et 57 codes ? (Je ne pense pas que nous ayons eu un consensus sur la manière de compter Piet ici, cependant)
Joey le
1
@ Joey Je vais voir si je peux créer une version de Piet Creator pour Windows. Cela fait longtemps que je ne l'ai pas testé là-bas. Vous avez raison à propos des codels. Si je mettais le programme en ligne, ce serait 57 codels (à peu près, quelques-uns), la version ci-dessus est plus respectueuse des yeux (comme les espaces dans d'autres langues). Les soumissions de Piet devraient peut-être avoir des sources à la fois minimes et accrocheuses. Nous ferions mieux de décider, parce que je prévois d’autres réponses de Piet :)
Casey
Eh bien, vous pouvez ouvrir une question sur meta pour demander des éclaircissements sur la gestion du code Piet :-). J'aurais aussi soumis des solutions à Piet, il y a longtemps. Sauf que pietdev était assez bogué et pour Piet Creator, j'avais besoin de Qt et de quelques autres choses juste pour le construire ;-). Et juste utiliser un éditeur de bitmap est assez ... encombrant ...
Joey
@Joey Piet Creator a encore besoin de plusieurs améliorations importantes pour être vraiment génial, j'espère pouvoir les ajouter bientôt. Je finis par utiliser principalement Piet Creator, puis utiliser Paint ou GIMP pour déplacer des blocs de couleur. Pietdev a été ma principale inspiration pour PC. Obtenir des commentaires sur le PC serait génial, je vais aller sur cette construction de Windows dès que possible.
Casey le
17

P est pour Perl, 10 caractères -> Score: 14

print a..z
Ventero
la source
28
Qu'en est- il say a..z?
mbx
14

Y est pour Yoix , 44 caractères → Score: 48

int x;for(;++x<27;)yoix.stdio.putchar(96+x);
Joey
la source
12

W est pour l'espace blanc, 72 caractères -> Score: 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]

J'ai passé des heures à faire travailler cette chose stupide au travail la nuit dernière, puis j'ai constaté que les espaces ne sont pas affichés sous forme de code ici! Puis, pendant que je boudais, ma connexion Internet est morte. Donc, je le publie maintenant pour que je ne perde pas une heure de ma vie la nuit dernière à le faire fonctionner.

Gareth
la source
6
J'aurais pensé qu'il était évident dans le commentaire maintenant supprimé ainsi que dans ma solution que je n'avais jamais écrit d'espace blanc auparavant. Apparemment non.
Gareth
@ Mego Y a-t-il une chance que mon nom soit enlevé, puisque je n'avais rien à voir avec ça?
Gareth
11

A est pour APL,  14  11 caractères / octets * → score 14

⎕UCS 96+⍳26

Cela fonctionne au moins dans Dyalog et Nars2000 .


* APL peut être écrit dans son propre jeu de caractères codé sur un octet (existant) qui mappe les symboles APL sur les valeurs supérieures à 128 octets. Par conséquent, aux fins de la notation, un programme de N caractères qui utilise uniquement des caractères ASCII et des symboles APL peut être considéré comme ayant une longueur de N octets.

jpjacobs
la source
1
⎕afonctionne dans APLX .
Adám
Newline majuscule et fin optionnel⎕A fonctionne donc .
Adám
11

P est pour Python 2, 30 caractères -> Score: 36

Je l'ai fait, après 8 ans, j'ai réalisé qu'il y avait un moyen plus court en python 2!

print bytearray(range(97,123))

Le code précédent était aussi gros qu'une impression triviale:

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

print'abcdefghijklmnopqrstuvwxyz'

Edit: Découvrez la percée avec Python 3 où j'ai également trouvé une solution plus petite qu'un imprimé simple : https://codegolf.stackexchange.com/a/195165/2212

JBernardo
la source
2
C'est la même longueur que print'abcdefghijklmnopqrstuvwxyz'...
nneonneo
10

G est pour Golfscript, 8 caractères -> Score: 18

123,97>+
Ventero
la source
9

R est pour R, 19 → Score: 20

cat(letters,sep="")
Joey Adams
la source
Alternativement (20 caractères): chat (lettres, sep = "")
Paolo
N'est-ce pas lettersassez bon? Je ne vois pas la spécification spécifiant la sortie doit être une chaîne contiguë. Bien sûr, l’exemple donné est sous cette forme, mais le "retour à la ligne final est facultatif"?
Gaffi
@Gaffi: Je crois que j'ai tenu les autres langues à la même norme dans ce fil, à savoir que la sortie doit être "abc ... xyz" exactement, sans caractères intermédiaires). Je suppose que je pourrais changer la règle et gagner mon propre concours, mais ce ne serait pas très amusant.
Joey Adams
7

R est pour Ruby, 13 caractères -> Score: 17

Une solution Ruby 1.9, Matma Rex a proposé:

print *?a..?z

Ma solution originale Ruby 1.8 (15 caractères -> Score: 19):

$><<[*'a'..'z']
Ventero
la source
Celui-ci ne correspond pas aux critères? La sortie contient des caractères supplémentaires. En outre, si c'est OK, ce serait $><<[*?a..?z]pour Ruby 1.9 (rasage de 2 caractères).
Matma Rex le
1
La version correcte la plus courte que je puisse concevoir est print *?a..?z. C'est la même longueur et celle que j'ai suggérée ci-dessus. Nous ne pouvons pas utiliser $><<car il <<existe des règles de priorité étranges et tout explose. Nous ne pouvons pas utiliser pou putsau lieu de, printcar ils impriment chaque lettre sur une ligne séparée.
Matma Rex
Désolé, aurais dû mentionner que c'est pour Ruby 1.8. En Ruby 1.8, Array#to_sc'est la même chose Array#join, donc il ne vous reste plus qu'à imprimer l'alphabet sans caractères supplémentaires. Mais votre solution 1.9 est en effet plus courte.
Ventero
La sortie est: codepad.org/atGFGVuQ
Nathan Osman
@ George: Votre sortie provient de Ruby 1.8 (que vous pouvez vérifier ici: codepad.org/pvyqzaPP ). Comme le message l'indique, c'est une solution pour Ruby 1.9.
Ventero
7

F est pour Poisson (> <>), 19 caractères -> Note: 23

Parce que c'est une langue sacrément belle!

30"`"1+::o&p&"y"(?;
jpjacobs
la source
Cette réponse n’est-elle pas classée 22 parce qu’il <>>n’ya que trois caractères, et non quatre. Y a-t-il une raison pour laquelle vous avez utilisé le nom plus long dans la partition?
pppery
@ppperry Eh bien, le nom de la langue ne peut pas à la fois commencer par un F et être <><.
Flornquake
1
Le nom de la langue n'est ><>pas<><
TuxCrafting,
Cela ne semble pas fonctionner - il suffit d'imprimer a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Chris
6

O est pour Owl , 11 caractères -> Score: 14

a[%)1+%z>]!
Jesse Millikan
la source
6

S est pour Scala, 16 caractères => score 21

'a'to'z'mkString

18 caractères => score 23

'a'to'z'mkString""

22 caractères => score 27

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

Gareth
la source
6

B est pour Befunge → 18 caractères

"a"::,1+10p"y"`#@_
Ninjalj
la source
Peut être fait en 16 caractères , pour un score de 23.
James Holderness
6

P est pour Python 2, 42 caractères → Score: 48

import string
print string.ascii_lowercase
Méthode d'assistance
la source
6
print 'abcdefhijklmnopqrstuvwxyz'
Charles Beattie
7
print'abcdefhijklmnopqrstuvwxyz'
nneonneo
6

D est pour DC, 17 caractères → Score: 19

97[dP1+dBD>x]dsxx
Ninjalj
la source
sort "ab" et quitte en version dc 1.06.95
Wossname
@Wossname echo '97[dP1+dBD>x]dsxx' | dcfonctionne en version dc 1.07.1
BlackCap
6

C est pour C, 36 35 caractères → Score: 36

main(a){for(;putchar(a+++64)-90;);}
Joey
la source
Vous pouvez supprimer 2 caractères en supposant qu'un (argc) est égal à un plutôt que de devoir l'initialiser.
Joey Adams
Mais cela ne compile même pas ...
deceleratedcaviar Le
La meilleure méthode pour compiler était 59 ou 42 sans l'inclusion: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
deceleratedcaviar
Daniel, ça marche avec MSVC 10 ici.
Joey le
5

P est pour Python 2, 41 caractères → Score: 47

print''.join(chr(i+97)for i in range(26))
Oleh Prypin
la source
5

P est pour PowerShell, 15 caractères → Score: 25

-join('a'..'z')
Joey
la source
1
Hmm, je ne sais pas s'il faut faire ce W ou P.
Joey Adams
1
Techniquement, c'est W, puisque le nom correct de la langue (et du produit) est Windows PowerShell . Oui, ça me gêne aussi.
Joey
Le langage
utilisé
@dorukayhan: Lors de l'utilisation de PowerShell Core, nous pouvons également le raccourcir, ce -join('a'..'z')qui donne 25.
Joey,
4

B est pour bc - 2 + 28 = 30

"abcdefghijklmnopqrstuvwxyz"
Joey Adams
la source
4

L est pour Logo, 26 caractères → Score: 30

for[i 97 122][type char i]
Veuillez vous lever
la source
4

T est pour Thue, 35 caractères → Score: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0
Joey
la source
4

A pour AppleScript, 41 -> Score: 52

display alert"abcdefghijklmnopqrstuvwxyz"
Lowjacker
la source
1
Je sais que cela fait longtemps que vous avez posté, mais vous pouvez l'utiliser "abcdefghijklmnopqrstuvwxyz"car la valeur de retour est sortie dans le volet de résultats.
Addison Crump
4

M pour Matlab, 13 caractères, score 19

disp('a':'z')

M pour Matlab, 18 caractères, score 24

disp(char(97:122))
jpjacobs
la source
1
Je n'ai pas matlab sous la main mais je pense que vous devez disp(..)empêcher cette sortie ans = .
Nabb
Correct, changé dans la réponse.
Jpjacobs
4

B est pour BrainF ***, 38 + 9 = 47

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

Peut être réduit à 31 + 9 = 40 , si les cellules enveloppent à 256:

++[>+>++<<+++++]>----->[<.+>++]
Ry-
la source
4

B est pour Bash: 4 + 16 = 20

printf %s {a..z}

ou 15 avec seulement:

echo {a..z}

si la sortie du formulaire a b c ...est autorisée (comme dans beaucoup d'autres réponses).

Eelvex
la source
Je ne pense pas. Le saut de ligne est facultatif, la sortie est "abcdefghijklmnopqrstuvwxyz"
utilisateur inconnu
3

I est pour Inform 6 , 41 + 6 = 47

[Main i;for(i=26:i--:)print(char)'z'-i;];
Joey Adams
la source
3

U est pour 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
Joey Adams
la source
3

J est pour J, 14 caractères -> Score: 15

echo u:97+i.26
Jesse Millikan
la source
Pourquoi s'embêter avec echo? u:97+i.26est un programme complet en j.
Gregory Higley
5
Parce que cela n'a pas de résultat lorsqu'il est exécuté en tant que script (pour moi, en tout cas).
Jesse Millikan
3

B, 45 -> Score: 46

main(){auto i;i=95;while(i++<122)putchar(i);}
Lowjacker
la source