El alfabeto en los lenguajes de programación.


70

Nuestra tarea es, para cada letra del alfabeto (inglés), escribir un programa que imprima el alfabeto, en un idioma cuyo nombre comience con esa letra.

Entrada: ninguna

Salida:

abcdefghijklmnopqrstuvwxyz

línea nueva mayúscula y final opcional

reglas :

  • La métrica de puntuación es la longitud del nombre del lenguaje de programación , más la longitud del código. Por lo tanto, a C se le aplicará una "penalización" de 1, mientras que GolfScript se evaluará a una penalización de 10.
  • Un idioma / implementación por respuesta. Se alientan las respuestas múltiples.
  • Si la primera letra del nombre de un lenguaje de programación no es una letra en inglés, no debe coaccionarse en una. Se tratará como una carta separada (lo que significa menos competencia).
  • No se aceptarán respuestas hasta que cada letra en inglés tenga una solución.

Rankings actuales:

Dime si extraño a alguien.

Tabla de clasificación automática (experimental)


1
¿Se nos permite imprimir basura en stderr?
Peter Taylor

@Peter Taylor: enloquece. Para responder a su pregunta, sí, imprimir basura en stderr está bien (siempre que stdout sea correcto).
Joey Adams


Funge es distinto de Befunge. ¡Seguramente mi pedanteísmo será recompensado en un sitio dedicado a hazañas!
tngreene

2
Es *0*5AB1Elo mismo que *o*sabie: P?
Urna de pulpo mágico

Respuestas:


13

K es para K , 12 caracteres -> Puntuación: 13

`0:_ci97+!26

Seguramente puedes adaptar una de tus soluciones a A +, ¿verdad?
Joey

Configurar A + es un poco raro. Lo he hecho antes pero realmente no tengo ganas. (Owl, newLISP y zshell fueron llave en mano.)
Jesse Millikan

3
Supongo que es k2 o k3. en k4 / q, puedes hacerlo en 7 caracteres con 1 .Q.a;.
Aaron Davies

no necesita `0:o 1@en codegolf
ngn

25

P es (en realidad) para Piet - 57 codeles

Versión grande (tamaño del codel = 6)

p es para piet - grande

Versión pequeña (tamaño de codel = 1)

p es para piet - pequeño

Probado con el intérprete piet de Erik npiety desarrollado con Piet Creator .

Editar : Aquí hay una versión "traza" (generada con npiet -tpf) para que pueda ver cómo funciona.

La ejecución comienza en la esquina superior izquierda y rodea el borde en sentido horario. El borde superior y el borde derecho están configurados (calcular el valor de a(97) requiere bastantes códeles). El bucle comienza en el borde inferior y va al borde izquierdo. Cuando zse alcanza el valor de, el programa gira a la derecha en la sección transversal debajo de la primera Py termina.

Haga clic en la imagen para ampliar y ver detalles


Oooh, Piet siempre es agradable. Y no tienes un binario de Windows de Piet Creator funcionando, ¿verdad? (Era demasiado vago para buscar todas las dependencias y requisitos previos solo para jugar un poco de nuevo.)
Joey

¿Y no son en realidad 400 codeles y 57 codeles de codificación ? (Sin embargo, no creo que hayamos llegado a un consenso sobre cómo contar a Piet)
Joey

1
@Joey Veré si puedo preparar una versión de Piet Creator para Windows. Ha pasado un tiempo desde que lo probé allí. Tienes razón sobre los codeles. Si tuviera que colocar el programa en una línea, serían 57 códeles (más o menos), la versión anterior es más amigable para los ojos (como el espacio en blanco en otros idiomas). Quizás las presentaciones de Piet deberían tener fuentes mínimas y llamativas. Mejor decidimos, porque estoy planeando muchas más respuestas de Piet :)
Casey

Bueno, podría abrir una pregunta sobre meta para pedir una aclaración sobre cómo se debe manejar el código Piet :-). Hubiera enviado soluciones Piet también, hace mucho tiempo. Excepto que pietdev era bastante defectuoso y para Piet Creator necesitaba Qt y algunas otras cosas solo para construirlo ;-). Y usar un editor de mapas de bits es bastante ... engorroso ...
Joey el

@Joey Piet Creator todavía necesita varias mejoras importantes para ser realmente increíble, espero poder agregarlas pronto. Termino usando principalmente Piet Creator, y luego uso Paint o GIMP para mover bloques de color. Pietdev fue mi principal inspiración para PC. Obtener algunos comentarios en la PC sería genial, me subiré a esa compilación de Windows lo antes posible.
Casey

17

P es para Perl, 10 caracteres -> Puntuación: 14

print a..z

28
¿Qué hay de say a..z?
mbx

14

Y es para Yoix , 44 caracteres → Puntuación: 48

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

12

W es para espacios en blanco, 72 caracteres -> Puntuación: 82

ingrese la descripción de la imagen aquí

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

¡Pasé años haciendo que esta estupidez funcionara anoche y luego descubrí que el espacio en blanco no se muestra como código aquí! Luego, mientras estaba de mal humor, mi conexión a Internet se apagó. Entonces, lo estoy publicando ahora solo para no desperdiciar una hora de mi vida anoche para que funcione.


66
Pensé que era obvio por el comentario ahora eliminado junto con mi solución que nunca antes había escrito ningún espacio en blanco. Aparentemente no.
Gareth

@Mego ¿Hay alguna posibilidad de que me quiten mi nombre ya que no tenía nada que ver con eso?
Gareth

11

A es para APL,  14  11 caracteres / bytes * → puntaje 14

⎕UCS 96+⍳26

Esto funciona al menos en Dyalog y Nars2000 .


* APL se puede escribir en su propio juego de caracteres de un solo byte (heredado) que asigna símbolos APL a los valores superiores de 128 bytes. Por lo tanto, para fines de puntuación, un programa de N caracteres que solo usa caracteres ASCII y símbolos APL puede considerarse que tiene una longitud de N bytes.


1
⎕atrabaja en APLX .
Adám

línea nueva mayúscula y final opcional, así ⎕Afunciona.
Adám

10

G es para Golfscript, 8 caracteres -> Puntuación: 18

123,97>+

8

R es para R, 19 → Puntuación: 20

cat(letters,sep="")

Alternativamente (20 caracteres): gato (letras, sep = "")
Paolo

¿No es lo letterssuficientemente bueno? No veo que la especificación que especifica la salida debe ser una cadena contigua. Claro, el ejemplo dado es de esa forma, pero ¿la 'nueva línea final es opcional'?
Gaffi

@Gaffi: Creo que mantuve otros idiomas con el mismo estándar en este hilo, a saber, la salida debe ser "abc ... xyz" exactamente, sin caracteres intermedios). Supongo que podría cambiar la regla y ganar mi propio concurso, pero eso no sería muy divertido.
Joey Adams

8

P es para Python 2, 33 caracteres -> Puntuación: 39

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

1
Esta es la misma duración que print'abcdefghijklmnopqrstuvwxyz'...
nneonneo

@nneonneo Entonces ... ¡Sigue siendo el más pequeño! (compartiendo la posición con este otro código aburrido y trivial).
JBernardo

7

R es para Ruby, 13 caracteres -> Puntuación: 17

Una solución de Ruby 1.9 a Matma Rex se le ocurrió:

print *?a..?z

Mi solución original de Ruby 1.8 (15 caracteres -> Puntuación: 19):

$><<[*'a'..'z']

¿Este no coincide con los criterios? La salida contiene caracteres adicionales. Además, si está bien, sería $><<[*?a..?z]para Ruby 1.9 (eliminando 2 caracteres).
Matma Rex

1
La versión correcta más corta que puedo concebir es print *?a..?z. Tiene la misma longitud y la que sugerí anteriormente. No podemos usar $><<porque <<tiene algunas reglas de precedencia extrañas y todo explota. No podemos usar po en putslugar de, printya que imprimen cada letra en una línea separada.
Matma Rex

Lo siento, debería haber mencionado que esto es para Ruby 1.8. En Ruby 1.8, Array#to_ses igual que Array#join, por lo que solo imprimirá el alfabeto sin caracteres adicionales. Pero su solución 1.9 es de hecho más corta.
Ventero


@George: su salida es de Ruby 1.8 (que se puede verificar aquí: codepad.org/pvyqzaPP ). Como menciona la publicación, esta es una solución para Ruby 1.9.
Ventero

7

F es para peces (> <>), 19 caracteres -> Puntuación: 23

¡Porque es un idioma malditamente hermoso!

30"`"1+::o&p&"y"(?;

¿No es esta respuesta una puntuación de 22 porque <>>tiene solo tres caracteres, no cuatro? ¿Hay alguna razón por la que usaste el nombre más largo en la partitura?
pppery

@ppperry Bueno, el nombre del idioma no puede comenzar con una F y ser <><.
flornquake

1
El nombre del idioma es ><>, no<><
TuxCrafting

Esto no parece funcionar, solo imprime a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Chris


6

S es para Scala, 16 caracteres => puntaje 21

'a'to'z'mkString

18 caracteres => puntaje 23

'a'to'z'mkString""

22 caracteres => puntaje 27

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




6

D es para dc, 17 caracteres → Puntuación: 19

97[dP1+dBD>x]dsxx

genera "ab" y se cierra en la versión de CC 1.06.95
Wossname

@Wossname echo '97[dP1+dBD>x]dsxx' | dcfunciona en la versión de cc 1.07.1
BlackCap

6

C es para C, 36 35 caracteres → Puntuación: 36

main(a){for(;putchar(a+++64)-90;);}

Puede soltar 2 caracteres asumiendo que un (argc) es igual a uno en lugar de tener que inicializarlo.
Joey Adams

Pero esto ni siquiera compila ...
desaceleratedcaviar

Lo mejor que pude compilar fue 59, o 42 sin incluir: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
deceleratedcaviar

Daniel, funciona con MSVC 10 aquí.
Joey

5

W es para Windows PowerShell, 22 caracteres → Puntuación: 40

-join[char[]](97..122)

1
Hmm, no estoy seguro de si hacer esto W o P.
Joey Adams

1
Técnicamente es W, ya que el nombre correcto del idioma (y producto) es Windows PowerShell . Sí, también me molesta.
Joey

5

P es para Python 2, 41 caracteres → Puntuación: 47

print''.join(chr(i+97)for i in range(26))



4

T es para Thue, 35 caracteres → Puntuación: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

A es para AppleScript, 41 -> Puntuación: 52

display alert"abcdefghijklmnopqrstuvwxyz"

1
Sé que esto ha pasado mucho tiempo desde la publicación, pero puede usarlo "abcdefghijklmnopqrstuvwxyz", ya que el valor de retorno se envía al panel de resultados.
Addison Crump

4

M para Matlab, 13 caracteres, puntaje 19

disp('a':'z')

M para Matlab, 18 caracteres, puntaje 24

disp(char(97:122))

1
No tengo a mano matlab, pero creo que debes disp(..)evitar que esto salga ans = .
Nabb

Correcto, cambiado en la respuesta.
jpjacobs

4

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

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

Se puede reducir a 31 + 9 = 40 , si las celdas se ajustan a 256:

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

4

B es para Bash: 4 + 16 = 20

printf %s {a..z}

o 15 con solo:

echo {a..z}

si a b c ...se permite la salida del formulario (como se ve en muchas otras respuestas).


No lo creo. El avance de línea es opcional, la salida es "abcdefghijklmnopqrstuvwxyz"
usuario desconocido el


3

U es 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 es para J, 14 caracteres -> Puntuación: 15

echo u:97+i.26

¿Por qué molestarse con echo? u:97+i.26es un programa completo de J.
Gregory Higley

55
Porque eso no tiene salida cuando se ejecuta como un script (para mí, de todos modos).
Jesse Millikan

3

B, 45 -> Puntuación: 46

main(){auto i;i=95;while(i++<122)putchar(i);}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.