Alfabet w językach programowania

69

Naszym zadaniem jest, aby dla każdej litery alfabetu (angielskiego) napisać program, który drukuje alfabet, w języku, którego nazwa zaczyna się od tej litery.

Wejście: brak

Wynik:

abcdefghijklmnopqrstuvwxyz

wielkie litery i końcowe znaki nowej linii są opcjonalne

Zasady :

  • Punktacja metryka jest długość języka programowania nazwy , oraz długość kodu. Stąd C zostanie oceniony jako „kara” 1, a GolfScript zostanie ukarany karą 10.
  • Jeden język / wdrożenie na odpowiedź. Zachęca się do uzyskania wielu odpowiedzi.
  • Język programowania powinien istnieć przed napisaniem tego postu, w dniu 18 kwietnia 2011 r.
  • Jeśli pierwsza litera nazwy języka programowania nie jest literą angielską, nie należy jej wymuszać na jedną. Będzie traktowany jako osobny list (co oznacza mniej konkurencji).
  • Żadna odpowiedź nie zostanie zaakceptowana, dopóki każdy angielski list nie znajdzie rozwiązania.

Aktualne rankingi:

Powiedz mi, czy kogoś brakuje.

Automatyczna tabela wyników (eksperymentalna)

Joey Adams
źródło
1
Czy wolno nam drukować śmieci do stderr?
Peter Taylor,
@Peter Taylor: Zwariuj. Aby odpowiedzieć na twoje pytanie, tak, drukowanie śmieci na stderr jest w porządku (o ile standardowe wyjście jest prawidłowe).
Joey Adams,
2
Czy *0*5AB1Eto samo co *o*sabie: P?
Magic Octopus Urn
1
@MagicOctopusUrn Nie miałoby znaczenia z powodu tej zasady: „ Język programowania powinien istnieć przed napisaniem tego postu, w dniu 18 kwietnia 2011 r .
Kevin Cruijssen

Odpowiedzi:

13

K jest dla K , 12 znaków -> Wynik: 13

`0:_ci97+!26
Jesse Millikan
źródło
Z pewnością możesz dostosować jedno ze swoich rozwiązań do A +, prawda?
Joey,
Konfiguracja A + jest trochę funky. Zrobiłem to wcześniej, ale tak naprawdę nie mam na to ochoty. (Sowa, newLISP i zshell były pod klucz.)
Jesse Millikan
3
zakładam, że to k2 lub k3. w k4 / q możesz to zrobić za pomocą 7 znaków 1 .Q.a;.
Aaron Davies,
nie potrzebujesz `0:lub 1@w codegolf
ngn
25

P jest (faktycznie) dla koderów Piet - 57

Duża wersja (rozmiar kodu = 6)

p is for piet - big

Mała wersja (rozmiar kodu = 1)

p is for piet - small

Przetestowane za pomocą interpretera pieta Erika npieti opracowane przy użyciu narzędzia Piet Creator .

Edycja : Oto wersja „śledzenia” (wygenerowana przy pomocy npiet -tpf), dzięki czemu można zobaczyć, jak to działa.

Wykonanie rozpoczyna się w lewym górnym rogu i przebiega wokół granicy zgodnie z ruchem wskazówek zegara. Górna i prawa krawędź są ustawione (obliczenie wartości a(97) zajmuje sporo kodeli). Pętla zaczyna się od dolnej krawędzi i przechodzi do lewej krawędzi. Po osiągnięciu wartości zprogram przekręca się w prawo w przekrój pod pierwszym Pi kończy.

Kliknij obraz, aby powiększyć i zobaczyć szczegóły

Casey
źródło
Oooh, Piet jest zawsze miły. I nie zdarza się, żebyś miał działający plik binarny Piet Creator dla Windows, prawda? (Byłem zbyt leniwy, by polować na wszystkie zależności i warunki wstępne, żeby się trochę pobawić.)
Joey,
I nie są faktycznie 400 codels i 57 kodowania codels? (Nie sądzę jednak, że mieliśmy konsensus, jak liczyć Piet tutaj)
Joey
1
@Joey Zobaczę, czy mogę przygotować wersję Piet Creator dla systemu Windows. Minęło trochę czasu, odkąd go tam przetestowałem. Masz rację co do kodów. Gdybym miał ustawić program w linii, byłoby to 57 kodów (daj lub weź kilka), powyższa wersja jest bardziej przyjazna dla oka (jak białe znaki w innych językach). Być może zgłoszenia Piet powinny mieć zarówno minimalne, jak i przyciągające uwagę źródła. Lepiej zdecydujmy, bo planuję o wiele więcej odpowiedzi Piet :)
Casey
Cóż, możesz otworzyć pytanie dotyczące meta, aby poprosić o wyjaśnienie, jak należy traktować kod Piet :-). Już dawno przedstawiłbym rozwiązania Piet. Tyle że pietdev był dość wadliwy, a dla Piet Creator potrzebowałem Qt i kilku innych rzeczy, aby go zbudować ;-). A samo użycie edytora map bitowych jest dość ... kłopotliwe ...
Joey,
@Joey Piet Creator nadal potrzebuje kilku ważnych ulepszeń, aby być naprawdę niesamowitym, mam nadzieję, że wkrótce je dodam. W końcu używam głównie Piet Creatora, a następnie używam Paint lub GIMP do przesuwania bloków koloru. Pietdev był moją główną inspiracją na PC. Uzyskiwanie informacji zwrotnych na temat komputera byłoby świetne, jak najszybciej to zrobię.
Casey
18

P oznacza Perla, 10 znaków -> Wynik: 14

print a..z
Ventero
źródło
28
Co say a..z?
mbx
14

Y oznacza Yoix , 44 znaki → Wynik: 48

int x;for(;++x<27;)yoix.stdio.putchar(96+x);
Joey
źródło
12

W oznacza białe znaki, 72 znaki -> Wynik: 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]

Spędziłem całe wieki starając się, aby ta głupia rzecz zadziałała zeszłej nocy, a potem odkryłem, że białe znaki nie pokazują się tutaj jako kod! Potem, gdy się dąsałem, moje połączenie internetowe przestało działać. Więc piszę to teraz, żeby nie zmarnować godziny mojego życia zeszłej nocy, żeby go uruchomić.

Gareth
źródło
6
Wydawało mi się, że po usuniętym komentarzu i moim rozwiązaniu jest oczywiste, że nigdy wcześniej nie pisałem żadnych białych znaków. Najwyraźniej nie.
Gareth
@Mego Czy jest szansa, że ​​moje imię zostanie usunięte, ponieważ nie mam z tym nic wspólnego?
Gareth
11

A dotyczy APL,  14  11 znaków / bajtów * → wynik 14

⎕UCS 96+⍳26

Działa to przynajmniej w Dyalog i Nars2000 .


* APL można zapisać we własnym (starszym) jednobajtowym zestawie znaków, który odwzorowuje symbole APL na górne 128 bajtów. Dlatego do celów oceniania program N znaków, który używa tylko znaków ASCII i symboli APL, może zostać uznany za N-bajtowy.

jpjacobs
źródło
1
⎕adziała w APLX .
Adám
wielkie litery i końcowe znaki nowej linii są opcjonalne, więc ⎕Adziała.
Adám
10

G oznacza Golfscript, 8 znaków -> Wynik: 18

123,97>+
Ventero
źródło
8

R oznacza R, 19 → Wynik: 20

cat(letters,sep="")
Joey Adams
źródło
Alternatywnie (20 znaków): cat (litery, sep = "")
Paolo
Czy to nie letterswystarczy? Nie widzę specyfikacji określającej, że dane wyjściowe muszą być ciągłym ciągiem. Oczywiście podany przykład ma taką postać, ale „końcowy znak nowej linii jest opcjonalny”?
Gaffi,
@Gaffi: Wydaje mi się, że utrzymałem inne języki na tym samym poziomie w tym wątku, a mianowicie, wynik musi być dokładnie „abc ... xyz”, bez żadnych ingerujących znaków). Przypuszczam, że mógłbym zmienić regułę i wygrać własny konkurs, ale nie byłoby to zbyt zabawne.
Joey Adams,
8

P jest dla Pythona 2, 33 znaków -> Wynik: 39

print'%c'*26%tuple(range(97,123))
JBernardo
źródło
1
Jest to ta sama długość, co print'abcdefghijklmnopqrstuvwxyz'...
nneonneo
@nneonneo Więc ... To wciąż jest najmniejszy! (dzielenie pozycji z tym innym nudnym i trywialnym kodem).
JBernardo
7

R oznacza Ruby, 13 znaków -> Wynik: 17

Rozwiązanie Ruby 1.9 Matma Rex wymyśliło:

print *?a..?z

Moje oryginalne rozwiązanie Ruby 1.8 (15 znaków -> Wynik: 19):

$><<[*'a'..'z']
Ventero
źródło
Ten nie spełnia kryteriów? Dane wyjściowe zawierają dodatkowe znaki. Ponadto, jeśli wszystko jest w porządku, byłoby tak w $><<[*?a..?z]przypadku Ruby 1.9 (golenie 2 znaków).
Matma Rex,
1
Najkrótsza poprawna wersja jaką mogę sobie wyobrazić print *?a..?z. Ma tę samą długość i tę, którą zasugerowałem powyżej. Nie możemy użyć, $><<ponieważ <<ma dziwne reguły pierwszeństwa i wszystko się wysadza. Nie możemy używać pani putszamiast tego, printponieważ drukują każdą literę w osobnej linii.
Matma Rex,
Przepraszam, powinienem wspomnieć, że dotyczy to Ruby 1.8. W Ruby 1.8 Array#to_sjest taki sam jak Array#join, więc po prostu wydrukuje alfabet bez dodatkowych znaków. Ale twoje rozwiązanie 1.9 jest rzeczywiście krótsze.
Ventero
Dane wyjściowe: codepad.org/atGFGVuQ
Nathan Osman
@George: Twój wynik pochodzi z Ruby 1.8 (który można zweryfikować tutaj: codepad.org/pvyqzaPP ). Jak wspomina post, jest to rozwiązanie dla Ruby 1.9.
Ventero,
7

F oznacza rybę (> <>), 19 znaków -> Wynik: 23

Ponieważ to cholernie piękny język!

30"`"1+::o&p&"y"(?;
jpjacobs
źródło
Czy ta odpowiedź nie ma 22 punktów, ponieważ <>>ma tylko trzy znaki, a nie cztery. Czy istnieje powód, dla którego użyłeś dłuższej nazwy w partyturze?
pppery
@ppperry Cóż, nazwa języka nie może zaczynać się od F i być <><.
trzęsienie ziemi
1
Nazwa języka jest ><>nie<><
TuxCrafting
To nie działa - po prostu drukuje a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Chris
6

O jest dla Sowy , 11 znaków -> Wynik: 14

a[%)1+%z>]!
Jesse Millikan
źródło
6

S oznacza Scalę, 16 znaków => wynik 21

'a'to'z'mkString

18 znaków => wynik 23

'a'to'z'mkString""

22 znaki => wynik 27

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

Gareth
źródło
6

B oznacza Befunge → 18 znaków

"a"::,1+10p"y"`#@_
ninjalj
źródło
Można to zrobić za pomocą 16 znaków , z wynikiem 23.
James Holderness
6

P oznacza Python 2, 42 znaki → Wynik: 48

import string
print string.ascii_lowercase
Metoda pomocnicza
źródło
6
print 'abcdefhijklmnopqrstuvwxyz'
Charles Beattie
7
print'abcdefhijklmnopqrstuvwxyz'
nneonneo
6

D oznacza dc, 17 znaków → Wynik: 19

97[dP1+dBD>x]dsxx
ninjalj
źródło
wyprowadza „ab” i wychodzi z wersji DC 1.06.95
Wossname
@Wossname echo '97[dP1+dBD>x]dsxx' | dcdziała w wersji DC 1.07.1
BlackCap
6

C oznacza C, 36 35 znaków → Wynik: 36

main(a){for(;putchar(a+++64)-90;);}
Joey
źródło
Możesz upuścić 2 znaki, zakładając, że (argc) równa się jednemu, zamiast konieczności jego inicjalizacji.
Joey Adams,
Ale to nawet się nie kompiluje ...
spowolniławszy
Najlepsze, co udało mi się skompilować, to 59 lub 42 bez uwzględnienia: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
deceleratedcaviar
Daniel, działa tutaj z MSVC 10.
Joey,
5

W oznacza Windows PowerShell, 22 znaki → Wynik: 40

-join[char[]](97..122)
Joey
źródło
1
Hmm, nie jestem pewien, czy zrobić to W czy P.
Joey Adams
1
Technicznie jest to W, ponieważ poprawna nazwa języka (i produktu) to Windows PowerShell . Tak, to też mnie wkurza.
Joey,
5

P oznacza Python 2, 41 znaków → Wynik: 47

print''.join(chr(i+97)for i in range(26))
Oleh Prypin
źródło
4

B jest dla bc - 2 + 28 = 30

"abcdefghijklmnopqrstuvwxyz"
Joey Adams
źródło
4

L oznacza logo, 26 znaków → Wynik: 30

for[i 97 122][type char i]
Proszę wstać
źródło
4

T jest dla Czw., 35 znaków → Wynik: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0
Joey
źródło
4

A jest dla AppleScript, 41 -> Wynik: 52

display alert"abcdefghijklmnopqrstuvwxyz"
Lowjacker
źródło
1
Wiem, że minęło dużo czasu od opublikowania, ale możesz z niego skorzystać "abcdefghijklmnopqrstuvwxyz", ponieważ zwracana wartość jest wyświetlana w okienku wyników.
Addison Crump
4

M jak Matlab, 13 znaków, wynik 19

disp('a':'z')

M jak Matlab, 18 znaków, wynik 24

disp(char(97:122))
jpjacobs
źródło
1
Nie mam pod ręką Matlaba, ale myślę, że musisz disp(..)temu zapobiec ans = .
Nabb,
Prawidłowo, zmieniono w odpowiedzi.
jpjacobs
4

B oznacza BrainF ***, 38 + 9 = 47

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

Można zmniejszyć do 31 + 9 = 40 , jeśli komórki zawijają się w 256:

++[>+>++<<+++++]>----->[<.+>++]
Ry-
źródło
4

B oznacza Bash: 4 + 16 = 20

printf %s {a..z}

lub 15 z po prostu:

echo {a..z}

jeśli wyjście formularza a b c ...jest dozwolone (jak widać w wielu innych odpowiedziach).

Eelvex
źródło
Nie wydaje mi się Podawanie liniowe jest opcjonalne, wyjście to „abcdefghijklmnopqrstuvwxyz”
użytkownik nieznany
3

Jestem za Inform 6 , 41 + 6 = 47

[Main i;for(i=26:i--:)print(char)'z'-i;];
Joey Adams
źródło
3

U oznacza 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
źródło
3

J jest dla J, 14 znaków -> Wynik: 15

echo u:97+i.26
Jesse Millikan
źródło
Po co zawracać sobie głowę echo? u:97+i.26to kompletny program J.
Gregory Higley
5
Ponieważ nie ma danych wyjściowych po uruchomieniu jako skrypt (w każdym razie dla mnie).
Jesse Millikan
3

B, 45 -> Wynik: 46

main(){auto i;i=95;while(i++<122)putchar(i);}
Lowjacker
źródło