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)


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

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


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

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);

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.


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.


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


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

10

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

123,97>+

9

R est pour R, 19 → Score: 20

cat(letters,sep="")

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']

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


@ 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"(?;

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

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 _)




6

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

97[dP1+dBD>x]dsxx

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;);}

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))

5

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

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

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


@dorukayhan: Lors de l'utilisation de PowerShell Core, nous pouvons également le raccourcir, ce -join('a'..'z')qui donne 25.
Joey,



4

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

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

A pour AppleScript, 41 -> Score: 52

display alert"abcdefghijklmnopqrstuvwxyz"

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))

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:

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

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).


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


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

3

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

echo u:97+i.26

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);}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.