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)


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

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


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

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

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.


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.


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

8

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

cat(letters,sep="")

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

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

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


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

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

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




6

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

97[dP1+dBD>x]dsxx

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

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)

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


4

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

for[i 97 122][type char i]

4

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

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

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

display alert"abcdefghijklmnopqrstuvwxyz"

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

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:

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

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


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


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

3

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

echo u:97+i.26

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);}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.