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)


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

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


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


14

Y oznacza Yoix , 44 znaki → Wynik: 48

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

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


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.


1
⎕adziała w APLX .
Adám

wielkie litery i końcowe znaki nowej linii są opcjonalne, więc ⎕Adziała.
Adám


8

R oznacza R, 19 → Wynik: 20

cat(letters,sep="")

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

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

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


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

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

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




6

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

97[dP1+dBD>x]dsxx

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

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)

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



4

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

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

A jest dla AppleScript, 41 -> Wynik: 52

display alert"abcdefghijklmnopqrstuvwxyz"

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

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:

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

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


Nie wydaje mi się Podawanie liniowe jest opcjonalne, wyjście to „abcdefghijklmnopqrstuvwxyz”
użytkownik nieznany



3

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

echo u:97+i.26

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.