O alfabeto nas linguagens de programação

69

Nossa tarefa é escrever, para cada letra do alfabeto (inglês), um programa que imprima o alfabeto, em um idioma cujo nome comece com essa letra.

Entrada: nenhuma

Resultado:

abcdefghijklmnopqrstuvwxyz

nova linha maiúscula e à direita opcional

Regras :

  • A métrica de pontuação é o tamanho do nome da linguagem de programação , mais o tamanho do código. Portanto, C receberá uma "penalidade" de 1, enquanto o GolfScript receberá uma penalidade de 10.
  • Um idioma / implementação por resposta. Várias respostas são incentivadas.
  • A linguagem de programação deveria ter existido antes da redação deste post, em 18 de abril de 2011.
  • Se a primeira letra de um nome de idioma de programação não for uma letra em inglês, ela não deverá ser coagida em uma. Será tratado como uma letra separada (significando menos concorrência).
  • Nenhuma resposta será aceita até que todas as letras em inglês tenham uma solução.

Classificações atuais:

Diga-me se estou sentindo falta de alguém.

Cabeçalho automático (experimental)

Joey Adams
fonte
11
Podemos imprimir lixo em stderr?
22611 Peter
@ Peter Taylor: enlouquecer. Para responder sua pergunta, sim, a impressão de lixo eletrônico no stderr é boa (contanto que o stdout esteja correto).
Joey Adams
2
É *0*5AB1Eo mesmo que *o*sabie: P?
Magic Octopus Urn
11
@MagicOctopusUrn não importaria devido a esta regra: " A linguagem de programação deveria ter existido antes da escrita deste post, em 18 de abril de 2011 " .
Kevin Cruijssen

Respostas:

13

K é para K , 12 caracteres -> Pontuação: 13

`0:_ci97+!26
Jesse Millikan
fonte
Certamente você pode adaptar uma de suas soluções ao A +, certo?
Joey
A configuração do A + é um pouco descolada. Eu já fiz isso antes, mas realmente não me apetece. (Owl, newLISP e zshell foram todos chave na mão.)
Jesse Millikan
3
Presumo que seja K2 ou K3. em k4 / q, você pode fazer isso em 7 caracteres com 1 .Q.a;.
Aaron Davies
você não precisa `0:ou 1@em codegolf
NGN
25

P é (na verdade) para Piet - 57 codels

Versão grande (tamanho do codel = 6)

p é para piet - grande

Versão pequena (tamanho do codel = 1)

p é para piet - pequeno

Testado com o intérprete piet de Erik npiete desenvolvido com Piet Creator .

Edit : Aqui está uma versão "trace" (gerada com npiet -tpf) para que você possa ver como funciona.

A execução começa no canto superior esquerdo e contorna a borda no sentido horário. A borda superior e a borda direita são configuradas (o cálculo do valor de a(97) requer alguns codels). O loop inicia na borda inferior e vai para a borda esquerda. Quando o valor de zé atingido, o programa vira à direita na seção transversal abaixo da primeira Pe termina.

Clique na imagem para ampliar e ver detalhes

Casey
fonte
Oooh, Piet é sempre bom. E você não tem um binário do Piet Creator para Windows funcionando, não é? (Eu estava com preguiça de caçar todas as dependências e pré-requisitos apenas para brincar um pouco novamente.)
Joey
E não são que realmente 400 codels e 57 de codificação codels? (Eu não acho que tivéssemos um consenso sobre como contar Piet aqui) #
314 Joey
11
@ Joey, vou ver se consigo criar uma compilação do Piet Creator para Windows. Já faz um tempo desde que eu testei lá. Você está certo sobre os codels. Se eu colocasse o programa em uma linha, seriam 57 codels (mais ou menos alguns), a versão acima é mais amigável (como espaço em branco em outros idiomas). Talvez as submissões de Piet devam ter fontes mínimas e atraentes. Nós decidir melhor, porque eu estou planejando muitas respostas mais Piet :)
Casey
Bem, você pode abrir uma pergunta no meta para esclarecer como o código Piet deve ser tratado :-). Eu também teria submetido as soluções Piet há muito tempo. Exceto que o pietdev foi bastante complicado e, para o Piet Creator, eu precisava do Qt e de algumas outras coisas apenas para construí-lo ;-). E apenas usando um editor de bitmap é bastante ... complicado ...
Joey
O @Joey Piet Creator ainda precisa de várias melhorias importantes para ser realmente incrível, espero que eu possa adicioná-las em breve. Acabo usando principalmente o Piet Creator e depois uso o Paint ou o GIMP para mover blocos de cores. Pietdev foi minha principal inspiração para PC. Obter algum feedback sobre o PC seria ótimo, eu vou entrar no Windows o mais rápido possível.
Casey
17

P é para Perl, 10 caracteres -> Pontuação: 14

print a..z
Ventero
fonte
28
Que tal say a..z?
Mbx
14

Y é para Yoix , 44 caracteres → Pontuação: 48

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

W é para espaço em branco, 72 caracteres -> Pontuação: 82

insira a descrição da imagem aqui

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

Passei anos fazendo essa coisa estúpida funcionar ontem à noite e depois descobri que espaço em branco não aparece como código aqui! Então, enquanto eu estava de mau humor, minha conexão com a Internet morreu. Então, eu estou postando agora só para não perder uma hora da minha vida na noite passada, fazendo com que funcionasse.

Gareth
fonte
6
Eu teria pensado que era óbvio pelo comentário excluído, junto com a minha solução, que eu nunca escrevi nenhum espaço em branco antes. Aparentemente não.
24511 Gareth
@Mego Alguma chance de tirarmos meu nome disso, já que eu não tinha nada a ver com isso?
Gareth
11

A é para APL,  14  11 caracteres / bytes * → pontuação 14

⎕UCS 96+⍳26

Isso funciona pelo menos no Dyalog e no Nars2000 .


* O APL pode ser gravado em seu próprio conjunto de caracteres de byte (legado) que mapeia os símbolos do APL para os valores superiores de 128 bytes. Portanto, para fins de pontuação, um programa de N caracteres que usa apenas caracteres ASCII e símbolos APL pode ser considerado como N bytes.

jpjacobs
fonte
11
⎕atrabalha em APLX .
Adám
nova linha maiúscula e à direita opcional, portanto, ⎕Afunciona.
Adám
10

G é para Golfscript, 8 caracteres -> Pontuação: 18

123,97>+
Ventero
fonte
8

R é para R, 19 → Pontuação: 20

cat(letters,sep="")
Joey Adams
fonte
Como alternativa (20 caracteres): cat (letras, set = "")
Paolo
Não é lettersbom o suficiente? Não vejo a especificação que especifique a saída deve ser uma sequência contígua. Claro, o exemplo dado está nessa forma, mas a 'nova linha final é opcional'?
precisa saber é
@ Gaffi: Eu acredito que mantive outras línguas com o mesmo padrão neste segmento, a saber, a saída deve ser "abc ... xyz" exatamente, sem caracteres intervenientes). Suponho que poderia mudar a regra e vencer o meu próprio concurso, mas isso não seria muito divertido.
Joey Adams
8

P é para Python 2, 33 caracteres -> Pontuação: 39

print'%c'*26%tuple(range(97,123))
JBernardo
fonte
11
Este é o mesmo comprimento que print'abcdefghijklmnopqrstuvwxyz'...
nneonneo
@nneonneo Então ... Ainda é o menor! (compartilhando a posição com esse outro código chato e trivial).
JBernardo 15/07
7

R é para Ruby, 13 caracteres -> Pontuação: 17

Uma solução Ruby 1.9 que Matma Rex apresentou:

print *?a..?z

Minha solução Ruby 1.8 original (15 caracteres -> Pontuação: 19):

$><<[*'a'..'z']
Ventero
fonte
Este não corresponde aos critérios? A saída contém caracteres adicionais. Além disso, se estiver tudo bem, seria $><<[*?a..?z]para o Ruby 1.9 (cortando 2 caracteres).
Matma Rex
11
A versão correta mais curta que posso conceber é print *?a..?z. É o mesmo comprimento e o que sugeri acima. Não podemos usar $><<porque <<tem algumas regras estranhas de precedência e tudo explode. Não podemos usar pou em putsvez de, printpois eles imprimem todas as letras em uma linha separada.
Matma Rex
Desculpe, deveria ter mencionado que isso é para Ruby 1.8. No Ruby 1.8, Array#to_sé o mesmo que Array#join, portanto, apenas imprime o alfabeto sem caracteres extras. Mas sua solução 1.9 é realmente mais curta.
Ventero
A saída é: codepad.org/atGFGVuQ
Nathan Osman
@ George: Sua saída é do Ruby 1.8 (que pode ser verificado aqui: codepad.org/pvyqzaPP ). Como o post menciona, esta é uma solução para Ruby 1.9.
Ventero
7

F é para Peixe (> <>), 19 caracteres -> Pontuação: 23

Porque é uma linguagem linda!

30"`"1+::o&p&"y"(?;
jpjacobs
fonte
Não é essa resposta que marcou 22 porque <>>tem apenas três caracteres, não quatro. Existe uma razão para você usar o nome mais longo na partitura.
pppery
@ppperry Bem, o nome do idioma não pode começar com um F e ser <><.
Flornquake #
11
O nome do idioma é ><>, não<><
TuxCrafting
Isso não parece funcionar - apenas imprime a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Chris
6

O é para Coruja , 11 caracteres -> Pontuação: 14

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

S é para Scala, 16 caracteres => 21 pontos

'a'to'z'mkString

18 caracteres => pontuação 23

'a'to'z'mkString""

22 caracteres => pontuação 27

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

Gareth
fonte
6

B é para Befunge → 18 caracteres

"a"::,1+10p"y"`#@_
ninjalj
fonte
Pode ser feito em 16 caracteres , com uma pontuação de 23.
James Holderness
6

P é para Python 2, 42 caracteres → Pontuação: 48

import string
print string.ascii_lowercase
Método auxiliar
fonte
6
print 'abcdefhijklmnopqrstuvwxyz'
Charles Beattie
7
print'abcdefhijklmnopqrstuvwxyz'
Nneonneo 14/07/2014
6

D é para dc, 17 caracteres → Pontuação: 19

97[dP1+dBD>x]dsxx
ninjalj
fonte
gera "ab" e fecha na versão 1.06.95 da CC
Wossname 06/06
@Wossname echo '97[dP1+dBD>x]dsxx' | dcfunciona na versão dc 1.07.1
Cabeção
6

C é para C, 36 caracteres 35 → Pontuação: 36

main(a){for(;putchar(a+++64)-90;);}
Joey
fonte
Você pode eliminar 2 caracteres assumindo que um (argc) seja igual a um, em vez de ter que inicializá-lo.
Joey Adams
Mas isso nem sequer compilar ...
deceleratedcaviar
O melhor que consegui compilar foi 59 ou 42 sem o include: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
deceleratedcaviar
Daniel, ele trabalha com o MSVC 10 aqui.
Joey #
5

W é para Windows PowerShell, 22 caracteres → Pontuação: 40

-join[char[]](97..122)
Joey
fonte
11
Hmm, não tenho certeza se fazer este W ou P.
Joey Adams
11
Tecnicamente, é W, já que o nome correto do idioma (e do produto) é Windows PowerShell . Sim, isso também me incomoda.
Joey
5

P é para Python 2, 41 caracteres → Pontuação: 47

print''.join(chr(i+97)for i in range(26))
Oleh Prypin
fonte
4

B é para bc - 2 + 28 = 30

"abcdefghijklmnopqrstuvwxyz"
Joey Adams
fonte
4

L é para Logo, 26 caracteres → Pontuação: 30

for[i 97 122][type char i]
PleaseStand
fonte
4

T é para Thue, 35 caracteres → Pontuação: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0
Joey
fonte
4

A é para AppleScript, 41 -> Pontuação: 52

display alert"abcdefghijklmnopqrstuvwxyz"
Lowjacker
fonte
11
Sei que faz muito tempo desde a publicação, mas você pode usá-lo "abcdefghijklmnopqrstuvwxyz", pois o valor de retorno é gerado no painel de resultados.
Addison Crump #
4

M para Matlab, 13 caracteres, pontuação 19

disp('a':'z')

M para Matlab, 18 caracteres, Pontuação 24

disp(char(97:122))
jpjacobs
fonte
11
Eu não tenho o Matlab em mãos, mas acho que você precisa disp(..)impedir essa saída ans = .
Nabb
Correto, alterado na resposta.
precisa saber é o seguinte
4

B é para BrainF ***, 38 + 9 = 47

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

Pode ser reduzido para 31 + 9 = 40 , se as células se agruparem em 256:

++[>+>++<<+++++]>----->[<.+>++]
Ry-
fonte
4

B é para Bash: 4 + 16 = 20

printf %s {a..z}

ou 15 com apenas:

echo {a..z}

se a saída do formulário a b c ...for permitida (como visto em muitas outras respostas).

Eelvex
fonte
Acho que não. O avanço de linha é opcional, a saída é "abcdefghijklmnopqrstuvwxyz"
usuário desconhecido
3

I é para Informar 6 , 41 + 6 = 47

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

U é para 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
fonte
3

J é para J, 14 caracteres -> Pontuação: 15

echo u:97+i.26
Jesse Millikan
fonte
Por que se preocupar echo? u:97+i.26é um programa J completo.
Gregory Higley
5
Porque isso não tem saída quando executado como um script (para mim, pelo menos).
precisa
3

B, 45 -> Pontuação: 46

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