Bảng chữ cái trong ngôn ngữ lập trình


69

Nhiệm vụ của chúng tôi là, đối với mỗi chữ cái trong bảng chữ cái (tiếng Anh), hãy viết một chương trình in bảng chữ cái, bằng ngôn ngữ có tên bắt đầu bằng chữ cái đó.

Đầu vào: không có

Đầu ra:

abcdefghijklmnopqrstuvwxyz

chữ hoa và dòng mới tùy chọn

Quy tắc :

  • Số liệu tính điểm là độ dài của tên ngôn ngữ lập trình , cộng với độ dài của mã. Do đó, C sẽ được đánh giá "hình phạt" là 1, trong khi GolfScript sẽ được đánh giá mức phạt là 10.
  • Một ngôn ngữ / thực hiện cho mỗi câu trả lời. Nhiều câu trả lời được khuyến khích.
  • Ngôn ngữ lập trình nên đã tồn tại trước khi viết bài đăng này, vào ngày mười tám tháng tư năm 2011 này.
  • Nếu chữ cái đầu tiên của tên ngôn ngữ lập trình không phải là chữ cái tiếng Anh, thì nó không nên bị ép buộc thành một chữ cái. Nó sẽ được coi là một chữ cái riêng biệt (có nghĩa là ít cạnh tranh hơn).
  • Không có câu trả lời sẽ được chấp nhận cho đến khi mỗi chữ cái tiếng Anh có một giải pháp.

Bảng xếp hạng hiện tại:

Nói cho tôi biết nếu tôi nhớ bất cứ ai.

Bảng xếp hạng tự động (thử nghiệm)


1
Chúng tôi có được phép in rác lên stderr không?
Peter Taylor

@Peter Taylor: Đi hạt. Để trả lời câu hỏi của bạn, vâng, in rác lên stderr là tốt (miễn là thiết bị xuất chuẩn là chính xác).
Joey Adams


2
*0*5AB1Egiống như *o*sabie: P?
Bạch tuộc ma thuật Urn

1
@MagicOctopusUrn sẽ không thành vấn đề do quy tắc này: " Ngôn ngữ lập trình nên tồn tại trước khi viết bài đăng này, vào ngày mười tám tháng tư năm 2011 này . "
Kevin Cruijssen

Câu trả lời:


13

K dành cho K , 12 ký tự -> Điểm: 13

`0:_ci97+!26

Chắc chắn bạn có thể thích ứng một trong những giải pháp của bạn với A +, phải không?
Joey

Thiết lập A + là một chút sôi nổi. Tôi đã làm nó trước đây nhưng tôi không thực sự cảm thấy thích nó. (Owl, newLISP và zshell đều là chìa khóa trao tay.)
Jesse Millikan

3
tôi giả sử đó là k2 hoặc k3. trong k4 / q, bạn có thể làm điều đó trong 7 ký tự với 1 .Q.a;.
Aaron Davies

bạn không cần `0:hoặc 1@ở codegolf
ngn

25

P là (thực tế) cho Piet - 57 codel

Phiên bản lớn (kích thước codel = 6)

p là dành cho piet - lớn

Phiên bản nhỏ (kích thước codel = 1)

p là dành cho piet - nhỏ

Đã thử nghiệm với trình thông dịch piet của Erik npietvà được phát triển với Piet Creator .

Chỉnh sửa : Đây là phiên bản "theo dõi" (được tạo bằng npiet -tpf) để bạn có thể xem cách thức hoạt động của nó.

Thực thi bắt đầu ở phía trên bên trái và đi xung quanh biên giới theo chiều kim đồng hồ. Cạnh trên và cạnh phải là thiết lập (tính giá trị của a(97) mất khá nhiều codel). Vòng lặp bắt đầu ở cạnh dưới và đi đến cạnh trái. Khi zđạt được giá trị , chương trình sẽ chuyển sang phần cắt ngang dưới phần đầu tiên Pvà kết thúc.

Nhấp vào hình ảnh để phóng to và xem chi tiết


Oooh, Piet luôn là một người tốt. Và bạn không tình cờ có một nhị phân Windows Creator đang hoạt động, phải không? (Tôi đã quá lười biếng để săn tất cả các phụ thuộc và điều kiện tiên quyết chỉ để chơi xung quanh một chút nữa.)
Joey

Và không phải là thực sự 400 codels và 57 codels? (Tuy nhiên, tôi không nghĩ rằng chúng tôi đã có sự đồng thuận về cách tính Piet ở đây)
Joey

1
@Joey Tôi sẽ xem liệu tôi có thể nấu một bản dựng của Piet Creator cho các cửa sổ không. Đã được một lúc kể từ khi tôi thử nó ở đó. Bạn nói đúng về codel. Nếu tôi sắp xếp chương trình thành một dòng thì nó sẽ là 57 codel (cho hoặc lấy một ít), phiên bản trên thân thiện với mắt hơn (như khoảng trắng trong các lang khác). Có lẽ các bài nộp của Piet nên có cả nguồn tối thiểu và bắt mắt. Chúng tôi quyết định tốt hơn, bởi vì tôi đang lên kế hoạch cho nhiều câu trả lời khác của Piet :)
Casey

Chà, bạn có thể mở một câu hỏi trên meta để yêu cầu làm rõ cách xử lý mã Piet :-). Tôi cũng đã gửi giải pháp của Piet quá lâu rồi. Ngoại trừ pietdev khá có lỗi và đối với Piet Creator tôi cần Qt và một vài thứ khác chỉ để xây dựng nó ;-). Và chỉ cần sử dụng trình chỉnh sửa bitmap thì khá ... cồng kềnh ...
Joey

@Joey Piet Creator vẫn cần một số cải tiến quan trọng để thực sự tuyệt vời, hy vọng tôi có thể thêm chúng sớm. Tôi cuối cùng sử dụng chủ yếu là Piet Creator, và sau đó sử dụng Paint hoặc GIMP để di chuyển các khối màu xung quanh. Pietdev là nguồn cảm hứng chính của tôi cho PC. Nhận được một số phản hồi trên PC sẽ rất tuyệt, tôi sẽ nhận được trên các cửa sổ đó xây dựng càng sớm càng tốt.
Casey

17

P dành cho Perl, 10 ký tự -> Điểm: 14

print a..z

28
Thế còn say a..z?
mbx

14

Y dành cho Yoix , 44 ký tự → Điểm: 48

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

12

W dành cho khoảng trắng, 72 ký tự -> Điểm: 82

nhập mô tả hình ảnh ở đây

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

Tôi đã dành nhiều năm để làm điều ngu ngốc này để làm việc tối qua và sau đó thấy rằng khoảng trắng không hiển thị dưới dạng mã ở đây! Sau đó, trong khi tôi đang hờn dỗi, kết nối Internet của tôi đã chết. Vì vậy, tôi đang đăng nó ngay bây giờ để tôi không lãng phí một giờ trong cuộc sống đêm qua để nó hoạt động.


6
Tôi đã nghĩ rằng rõ ràng từ nhận xét đã bị xóa cùng với giải pháp của tôi rằng tôi chưa bao giờ viết bất kỳ khoảng trắng nào trước đây. Rõ ràng là không.
Gareth

@Mego Bất kỳ cơ hội nào chúng ta có thể loại bỏ tên của mình vì tôi không có gì để làm với nó?
Gareth

11

A dành cho APL,  14  11 ký tự / byte * → điểm 14

⎕UCS 96+⍳26

Điều này hoạt động ít nhất trong Dyalog và Nars2000 .


* APL có thể được viết bằng bộ ký tự byte đơn (di sản) riêng để ánh xạ các ký hiệu APL đến các giá trị 128 byte trên. Do đó, với mục đích ghi điểm, một chương trình gồm các ký tự N chỉ sử dụng các ký tự ASCII và các ký hiệu APL có thể được coi là dài N byte.


1
⎕ahoạt động trong APLX .
Adám

chữ hoa và dòng chữ mới tùy chọn để ⎕Alàm việc.
Adám

10

G dành cho Golfscript, 8 ký tự -> Điểm: 18

123,97>+

8

R dành cho R, 19 → Điểm: 20

cat(letters,sep="")

Ngoài ra (20 ký tự): mèo (chữ cái, sep = "")
Paolo

Không lettersđủ tốt sao? Tôi không thấy thông số kỹ thuật chỉ định đầu ra phải là một chuỗi liền kề. Chắc chắn, ví dụ đưa ra là ở dạng đó, nhưng 'dòng mới là tùy chọn'?
Gaffi

@Gaffi: Tôi tin rằng tôi đã giữ các ngôn ngữ khác theo cùng tiêu chuẩn trong chuỗi này, cụ thể là, đầu ra phải chính xác là "abc ... xyz", không có ký tự can thiệp). Tôi cho rằng tôi có thể thay đổi quy tắc và giành chiến thắng trong cuộc thi của riêng mình, nhưng điều đó sẽ không vui lắm.
Joey Adams

8

P dành cho Python 2, 33 ký tự -> Điểm: 39

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

1
Đây là cùng độ dài với print'abcdefghijklmnopqrstuvwxyz'...
nneonneo

@nneonneo Vậy ... Nó vẫn là cái nhỏ nhất! (chia sẻ vị trí với mã nhàm chán và tầm thường này).
JBernardo

7

R dành cho Ruby, 13 ký tự -> Điểm: 17

Một giải pháp Ruby 1.9 Matma Rex đã đưa ra:

print *?a..?z

Giải pháp Ruby 1.8 gốc của tôi (15 ký tự -> Điểm: 19):

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

Điều này không phù hợp với tiêu chí? Đầu ra chứa các ký tự bổ sung. Ngoài ra, nếu nó ổn, nó sẽ $><<[*?a..?z]dành cho Ruby 1.9 (cạo sạch 2 ký tự).
Matma Rex

1
Phiên bản chính xác ngắn nhất tôi có thể hình dung là print *?a..?z. Nó có cùng chiều dài và cái tôi đề nghị ở trên. Chúng tôi không thể sử dụng $><<<<có một số quy tắc ưu tiên kỳ lạ và mọi thứ sẽ nổ tung. Chúng tôi không thể sử dụng phoặc putsthay vì printkể từ khi họ in mỗi chữ cái trên một dòng riêng biệt.
Matma Rex

Xin lỗi, đã đề cập rằng đây là dành cho Ruby 1.8. Trong Ruby 1.8, Array#to_scũng giống như Array#joinvậy, vì vậy nó sẽ chỉ in bảng chữ cái mà không có ký tự phụ. Nhưng giải pháp 1.9 của bạn thực sự ngắn hơn.
Ventero


@George: Đầu ra của bạn là từ Ruby 1.8 (có thể được xác minh tại đây: codepad.org/pvyqzaPP ). Như bài viết đề cập, đây là một giải pháp cho Ruby 1.9.
Ventero

7

F dành cho Cá (> <>), 19 ký tự -> Điểm: 23

Bởi vì đó là một ngôn ngữ đẹp chết tiệt!

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

Không phải câu trả lời này được ghi 22 vì <>>chỉ dài ba ký tự chứ không phải bốn. Có một lý do bạn sử dụng tên dài hơn trong điểm số.
pppery

@ppperry Vâng, tên ngôn ngữ không thể bắt đầu bằng chữ F và be <><.
flornquake

1
Tên của ngôn ngữ này ><>, không phải<><
Thâp

Điều này dường như không hoạt động - nó chỉ in a. tio.run/##S8sszvj/39hAKUHJUNvKKl@tQE2pUknD3vr/fwA
Chris


6

S là dành cho Scala, 16 ký tự => điểm 21

'a'to'z'mkString

18 ký tự => điểm 23

'a'to'z'mkString""

22 ký tự => điểm 27

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




6

D dành cho dc, 17 ký tự → Điểm: 19

97[dP1+dBD>x]dsxx

xuất ra "ab" và thoát trong phiên bản dc 1.06.95
Wossname

@Wossname echo '97[dP1+dBD>x]dsxx' | dckhông hoạt động trong phiên bản dc 1.07.1
BlackCap

6

C dành cho C, 36 35 ký tự → Điểm: 36

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

Bạn có thể thả 2 ký tự bằng cách giả sử một (argc) bằng một thay vì phải khởi tạo nó.
Joey Adams

Nhưng điều này thậm chí không được biên dịch ...
deceleratedcaviar

Tốt nhất tôi có thể biên dịch là 59 hoặc 42 mà không bao gồm: #include <stdio.h> main () {for (int a = 27; - a;) putchar (96 + a);}
deceleratedcaviar

Daniel, nó hoạt động với MSVC 10 ở đây.
Joey

5

W dành cho Windows PowerShell, 22 ký tự → Điểm: 40

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

1
Hmm, không biết nên làm W hay P. này
Joey Adams

1
Về mặt kỹ thuật, đó là W, vì tên chính xác của ngôn ngữ (và sản phẩm) là Windows PowerShell . Vâng, nó cũng làm phiền tôi
Joey

5

P dành cho Python 2, 41 ký tự → Điểm: 47

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



4

T là cho Thue, 35 ký tự → Điểm: 39

0::=~abcdefghijklmnopqrstuvwxyz
::=
0

4

A dành cho AppleScript, 41 -> Điểm: 52

display alert"abcdefghijklmnopqrstuvwxyz"

1
Tôi biết đây là một thời gian dài kể từ khi đăng, nhưng bạn có thể sử dụng "abcdefghijklmnopqrstuvwxyz", vì giá trị trả về là đầu ra cho khung kết quả.
Addison Crump

4

M cho Matlab, 13 ký tự, Điểm 19

disp('a':'z')

M cho Matlab, 18 ký tự, Điểm 24

disp(char(97:122))

1
Tôi không có MATLAB trong tay nhưng tôi nghĩ bạn cần disp(..)ngăn chặn việc xuất này ans = .
Nabb

Đúng, thay đổi trong câu trả lời.
jpjacobs

4

B là dành cho BrainF ***, 38 + 9 = 47

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

Có thể giảm xuống còn 31 + 9 = 40 , nếu các ô bao quanh ở mức 256:

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

4

B là dành cho Bash: 4 + 16 = 20

printf %s {a..z}

hoặc 15 chỉ với:

echo {a..z}

nếu đầu ra của biểu mẫu a b c ...được cho phép (như đã thấy trong nhiều câu trả lời khác).


Tôi không nghĩ vậy. Linefeed là tùy chọn, đầu ra là "abcdefghijklmnopqrstuvwxyz"
người dùng không xác định


3

U là dành cho 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 dành cho J, 14 ký tự -> Điểm: 15

echo u:97+i.26

Tại sao phải bận tâm với echo? u:97+i.26là một chương trình J hoàn chỉnh.
Gregory Higley

5
Bởi vì điều đó không có đầu ra khi chạy như một tập lệnh (dù sao đối với tôi).
Jesse Millikan

3

B, 45 -> Điểm: 46

main(){auto i;i=95;while(i++<122)putchar(i);}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.