In một làn sóng bảng chữ cái


37

Bạn phải in văn bản chính xác này:

ABABABABABABABABABABABABAB
BCBCBCBCBCBCBCBCBCBCBCBCBC
CDCDCDCDCDCDCDCDCDCDCDCDCD
DEDEDEDEDEDEDEDEDEDEDEDEDE
EFEFEFEFEFEFEFEFEFEFEFEFEF
FGFGFGFGFGFGFGFGFGFGFGFGFG
GHGHGHGHGHGHGHGHGHGHGHGHGH
HIHIHIHIHIHIHIHIHIHIHIHIHI
IJIJIJIJIJIJIJIJIJIJIJIJIJ
JKJKJKJKJKJKJKJKJKJKJKJKJK
KLKLKLKLKLKLKLKLKLKLKLKLKL
LMLMLMLMLMLMLMLMLMLMLMLMLM
MNMNMNMNMNMNMNMNMNMNMNMNMN
NONONONONONONONONONONONONO
OPOPOPOPOPOPOPOPOPOPOPOPOP
PQPQPQPQPQPQPQPQPQPQPQPQPQ
QRQRQRQRQRQRQRQRQRQRQRQRQR
RSRSRSRSRSRSRSRSRSRSRSRSRS
STSTSTSTSTSTSTSTSTSTSTSTST
TUTUTUTUTUTUTUTUTUTUTUTUTU
UVUVUVUVUVUVUVUVUVUVUVUVUV
VWVWVWVWVWVWVWVWVWVWVWVWVW
WXWXWXWXWXWXWXWXWXWXWXWXWX
XYXYXYXYXYXYXYXYXYXYXYXYXY
YZYZYZYZYZYZYZYZYZYZYZYZYZ
ZAZAZAZAZAZAZAZAZAZAZAZAZA

Thông số kỹ thuật

  • Bạn có thể in tất cả chữ thường thay vì tất cả chữ hoa. Tuy nhiên, trường hợp phải nhất quán trong suốt đầu ra.
  • Bạn có thể in thêm một linefeed trailing.

Chấm điểm

Vì đây là một sóng bảng chữ cái dao động ở một mức độ nhỏ, mã của bạn cũng phải nhỏ về số lượng byte. Trong thực tế, mã nhỏ nhất về số lượng byte chiến thắng.


39
Nghiêm túc, một thách thức bảng chữ cái khác ?
Nathan Merrill

6
@NathanMerrill Nhiều như họ, tôi không nghĩ rằng họ xứng đáng với sự hạ bệ. (Tôi không ám chỉ bạn bị hạ thấp, tôi chỉ nói.)
Conor O'Brien

14
Miễn là các mẫu đủ khác nhau, tôi không nghĩ nó có vấn đề gì nếu chúng ta sử dụng bảng chữ cái, chữ số thập phân, dấu hoa thị và dấu gạch dưới, v.v.
Dennis

9
@Dennis bất kể các ký tự được sử dụng, loại thách thức "mẫu" này đang bị lạm dụng, IMO. Tôi không nghĩ nó lạ, nhưng tôi sẽ tận hưởng không khí trong lành.
Nathan Merrill

13
Rõ ràng là không có nhu cầu về các thách thức bảng chữ cái nữa - chỉ có 39 người trả lời trong 15 giờ đầu tiên ...
trichoplax

Câu trả lời:


37

C, 60 byte

main(i){for(;i<703;)putchar(i++%27?65+(i/27+i%27%2)%26:10);}

10
Đây là thiên tài.
Leaky Nun

Rất vui khi thấy C trong một thử thách golf mã.
Micheal Johnson

@MichealJohnson " xem C ", IC những gì bạn đã làm ở đó. ;) Và tôi đồng ý với Leaky Nun . Đôi khi tôi tự hỏi làm thế nào mọi người đưa ra một số câu trả lời khéo léo này.
Kevin Cruijssen

@KevinCruijssen Đó là lol vô tình.
Micheal Johnson

17

Brainfuck, 104 byte

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

1
Thực tế có cùng kích thước với Hello World. Ấn tượng!
phyrfox

3
@phyrfox Thật ra ...
Sp3000

14

Lồi, 10 byte

U_(+]D*zN*

Hãy thử trực tuyến!

U               Predefined Variable: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 _(+            Push a copy with the 'A at the end.
    ]           Add both strings to an array.
     D*         Repeat array 13 times. D defaults to 13.
       z        Transpose.
        N*      Join by newlines. N defaults to "\n"


8

Vim, 85 83 byte

:h<_<cr><cr><cr>YZZP:s/./\0\r/g<cr><c+v>ggy25Pqqlxj:let @a='xkPjj'<cr>25@akia<esc>25klq11@qh<ctrl+v>25jylpl<c+v>25jdGdd

Tôi biết điều này có thể được đánh gôn nhiều hơn, nhưng đầu tôi đau nên tôi phải dừng lại ngay bây giờ.

<cr>là khóa enter, <c+v>là ctrl + v và <esc>là phím thoát. Tất cả đều được tính là một byte.

Tôi đã ghi lại một gif này, nhưng nó đã bị hỏng. Video vẫn ổn mặc dù: http://recordit.co/ldLKvho9Gi


8

Ruby, 42 39 38 37 byte

-3 byte nhờ @ user81655
-1 byte nhờ @manatwork
-1 byte nhờ @NotthatCharles

?A.upto(?Z){|a|puts (a+a.next[0])*13}

Xem nó trên repl.it: https://repl.it/CmOJ


7

Cheddar, 48 byte

print(65|>90).map(l->@"[l,l>89?65:l+1]*13).vfuse

Cheddar là tốt với chuỗi: D

Hãy thử trực tuyến!

Giải trình

print
  (65|>90)            // Range from 65 (A) to 90 (Z)
  .map(l->            // Map through range
    @"                // Convert following array of char codes to string
      [l,             // The character 
       l>89?65:l+1]   // See below for explanation
      *13             // Repeat 13 times
  ).vfuse             // Vertically fuse

Không gì l>89?65:l+1làm gì? Vâng 89là mã char cho Y. Về cơ bản, l>89là kiểm tra nếu bức thư là Z, điều đó có nghĩa là chúng ta sẽ trở lại A. Nếu l>89là sai. Tôi sẽ trở lại l+1, char tiếp theo


Tôi nghĩ bạn có thể chèn @"giữa chúng.
Leaky Nun

Điều này không sử dụng trả về chức năng?
Conor O'Brien

@ ConorO'Brien vâng?
Hạ cấp


@ ConorO'Brien oh, không thấy trong thử thách spec. sẽ khắc phục
Downgoat

7

Thạch , 10 byte

26ḶḂØAṙZj⁷

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

26ḶḂØAṙZj⁷  Main link. No arguments.

26Ḷ         Yield [0, ..., 25].
   Ḃ        Bit; compute the parity of each intger.
    ØAṙ     Rotate the alphabet by these amounts.
       Z    Zip; transpose rows and columns.
        j⁷  Join, separating by linefeeds.

Không Ytồn tại trước đó? Cũng xin chúc mừng cho đại diện 100k !!
Erik the Outgolfer

Cảm ơn! Tôi đã kiểm tra và thật đáng buồn, Yđã được thêm hai ngày sau khi thử thách được đăng.
Dennis

Bởi vì bạn có thể đã đánh gôn nó xuống hơn nữa 26ḶḂØAṙZY. Nhưng, như bây giờ, nó vẫn tốt.
Erik the Outgolfer

7

Haskell, 60 58 byte

mapM putStrLn[[0..12]>>[a,b]|a:b:_<-scanr(:)"A"['A'..'Z']]

Bắt đầu với "A" scanr(:)xây dựng một danh sách từ các ký tự ['A'..'Z']bên phải. (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)khớp với hai ký tự đầu tiên của mỗi danh sách phụ (có ít nhất hai ký tự) và tạo ra 13 bản sao của nó.


Xem xét một số mánh gian lận được sử dụng bởi các ngôn ngữ khác một cách thường xuyên, tôi cho rằng nó chỉ công bằng khi không bao gồm in ấn thực tế. Trong trường hợp này, bạn có thể thay thế nó bằng "(++" \ n ") = <<" và lưu 2 byte. Có thể nhiều hơn.
MarLinn

@MarLinn: Không, tôi không nghĩ vậy. Ngôn ngữ chơi gôn được thiết kế với ý tưởng in ấn ngầm và hầu hết các câu trả lời khác đều có một số loại lệnh in. Btw, unlinesthậm chí còn ngắn hơn (++"\n")=<<.
nimi

7

PowerShell, 49 43 byte

Bản phối lại của TimmyD:

65..89|%{-join[char[]]($_,++$_)*13};"ZA"*13

là, 49 byte:

0..25|%{(""+[char]($_+++65)+[char]($_%26+65))*13}

Ví dụ đầu ra


6

Python 2, 70 68 54 byte

Danh sách giải pháp dựa trên:

L=map(chr,range(65,91))
for i in range(-26,0):print(L[i]+L[i+1])*13

Nhưng tại sao tạo một danh sách? Cảm ơn LeakyNun:

for i in range(26):print(chr(i+65)+chr(-~i%26+65))*13

6

R, 72 67 60 56 byte

write(matrix(LETTERS[c(1:26,2:26,1)],26,26,T),"",26,,"")

Cảm ơn @Giuseppe đã giảm thêm 4 byte!

repGiải pháp dựa trên cơ sở cũ ở 60 byte:

for(i in 1:26)cat(rep(LETTERS[c(i,i%%26+1)],13),"\n",sep="")

Xem ở đây trên một thông dịch viên trực tuyến. Cảm ơn @ user5957401 đã tắt thêm 7 byte!

Giải pháp dựa trên ma trận cũ ở 72 byte:

for(i in 1:26)cat(matrix(LETTERS[c(1:26,2:26,1)],26,26)[i,],"\n",sep="")

Xem ở đây trên một thông dịch viên trực tuyến.


1
nếu bạn thay đổi indext thành i in 1:26và sau đó lựa chọn chữ cái cho LETTERS[c(i,i%%26+1)]bạn có thể giảm xuống như 6 hoặc 7 byte
user5957401

1
@ user5957401 arf Tôi đã rất bướng bỉnh khi làm (i+1)%%26điều đó không xảy ra với tôi để làm điều ngược lại! Cảm ơn!
plannapus

1
56 byte sử dụng ma trận một lần nữa :)
Giuseppe

5

MATL , 13 byte

1Y2tn:!to~!+)

Hãy thử trực tuyến!

1Y2    % Predefined string literal: 'AB···Z'
tn:    % Duplicate, number of elements, range: gives [1, 2, ···, 26]
!      % Transpose into a column vector
to~!   % Duplicate and transform into [0, 1, 0, 1, ···, 1] using modulo 2
+      % Addition with broadcast. Gives 2D numeric array
)      % Index (modularly) into string. Implicitly display.

5

Sứa , 26 byte

P
+'A
~
| S
+$ r2
 ,'
r'

Lưu ý các ký tự không thể in dấu trên hai dòng cuối cùng. Hãy thử trực tuyến!

Giải trình

Về cơ bản, đây là cách tiếp cận thao tác số học: tạo lưới 26 × 26 với mẫu 0-1 xen kẽ, thêm chỉ số của mỗi hàng vào mỗi phần tử của hàng, giảm mod 26 và thêm giá trị ASCII của A. Các ký tự trong Sứa chỉ là những con số có một lá cờ đặc biệt và tất cả các số học hoạt động trên chúng như mong đợi.

Từ dưới lên trên:

  • Các 's là chữ nhân vật; chúng được theo sau bởi các dấu không thể in được với mã ASCII 26 và viết tắt của các ký tự đó.
  • Thấp hơn rtính toán phạm vi ký tự từ 0 đến 25.
  • Các ,hình thành một cặp từ hai ký tự không thể in được.
  • Cao hơn rđược đưa ra đối số 2, và hình thành phạm vi [0 1].
  • $lấy phạm vi đó và định hình lại nó thành hình dạng được đưa ra bởi đối số khác của nó, đó là cặp không thể in được. Điều này đưa ra ma trận 26 × 26 của các hàng xen kẽ0 1 0 1 0 1 ...
  • Thấp hơn +thêm phạm vi char 0-25 vào ma trận này. Bổ sung phân phối trên các hàng, vì vậy hàng i được tăng bởi i . Nó cũng được chuyển đổi thành ma trận char, vì đối số phía nam bao gồm các ký tự.
  • Các ~|là mô đun với các đối số lộn: đối số về phía nam (ma trận char ở trên) được rút gọn theo modulo đối số đông (các Slượt tham số-quá trình tìm kiếm về phía nam, vì vậy đây là chưa in ra đen 26).
  • Cao hơn +thêm nghĩa đen Acho mỗi tọa độ của ma trận kết quả.
  • Các Pkết quả in ở định dạng ma trận, nghĩa là, mỗi hàng trên một dòng riêng mà không có dấu ngoặc kép.

1
Tôi muốn thử chơi gôn nhưng sau đó tôi thấy tên của anh ấy đã viết mã.
Leaky Nun

@LeakyNun Bạn vẫn có thể thử! Mặc dù 26 byte phù hợp cho thử thách này.
Zgarb

5

Vim, 31 byte

:h<_↵↵↵YZZPJra0qqy2l13Plr↵25@qD

Trong trường hợp là chìa khóa Return.

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


5

Perl, 26 byte

Giải pháp từ @Dom Hastings . (12 byte ngắn hơn của tôi!)
-1 byte nhờ @TonMedel

say+($_++,chop)x13for A..Z

Chạy với -M5.010hoặc -E:

perl -E 'say+($_++,chop)x13for A..Z'

Được quản lý để giảm xuống còn 33: say+($_++,$_--=~/^./g)x13for A..Znhưng tôi chắc chắn có cách để rút ngắn hơn từ: say+($_++,$_--)x13for A..Z...
Dom Hastings

Không chắc chắn tại sao tôi có --trong đó, nó không cần thiết! Ôi. 27:say+($_++,/^./g)x13for A..Z
Dom Hastings

@DomHastings Hoàn thành tốt! Lúc đầu tôi đã thử say+($_,$_++)x13for A..Zmà không hiệu quả, nhưng có vẻ như tôi nên đẩy xa hơn về hướng đó!
Dada

1
say+($_++,chop)x13for A..Ztiết kiệm thêm một byte
TonMedel

@TonHeach thật tuyệt, cảm ơn vì điều đó.
Dada

5

T-SQL 133 Byte (Được đánh dấu bởi: @ t-clausen.dk)

SELECT REPLICATE(Char(number+65)+IIF(number=25,'A',Char(number+66)),13)FROM spt_values WHERE number<26and'P'=TYPE

T-SQL, 151 byte

Sử dụng CTE để tạo chuỗi số

;WITH n(a,v) AS(SELECT CHAR(65)+CHAR(66), 66 UNION ALL SELECT CHAR(v)+CHAR(v+1), v+1 FROM n WHERE v < 91)SELECT REPLICATE(REPLACE(a,'[','A'),13) FROM n

T-SQL, 155 byte

SELECT REPLICATE(Char(number+65)+ CASE WHEN number=25 THEN 'A' ELSE Char(number+66) END, 13) FROM master.dbo.spt_values  WHERE name IS NULL AND number < 26

Tôi đã đánh golf câu trả lời của bạn xuống 113 ký tự. Tôi đã cung cấp một câu trả lời rất khác trong TSQL
t-clausen.dk

@ t-Clausen.dk Điều đó thật tuyệt vời. Xin vui lòng gửi câu trả lời của bạn. Tôi sẽ xóa của tôi.
Anuj Tripathi

không có lý do để xóa câu trả lời của bạn, bạn chỉ có thể sử dụng fiddle của tôi để cải thiện câu trả lời của bạn. Tôi đã đăng cách đây 1 giờ, nếu bạn thích TSQL, bạn nên xem các câu trả lời khác của tôi. Tôi đã thực hiện Fiddles cho hầu hết trong số họ
t-clausen.dk


4

Bình thường, 10 byte

jCm.<G~!ZG

Trình diễn

Giải trình:

jCm.<G~!ZG
  m      G    Map over G, predefined to the lowercase alphabet.
              This will give 26 columns.
   .<G        Left shift (cyclically) G by
        Z     Z elements. Z is initialized to 0.
      ~!      After using its value, logical not Z. (0 -> 1, 1 -> 0)
 C            Transpose
j             Join on newlines

Thật tuyệt, ước gì tôi biết nhiều như bạn làm về Pyth
Stan Strum

4

Brainfuck, 88 86 byte

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

Yêu cầu trình thông dịch có các ô 8 bit và một băng không bị chặn ở bên trái. Hãy thử trực tuyến!


3

Lua, 80 65 byte.

s = string c = s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13)) end

Với sự giúp đỡ từ Leaky Nun

c=("").char for i=1,26 do print((c(64+i)..c(65+i%26)):rep(13))end

Lua là một ngôn ngữ không hiệu quả liên quan đến việc xử lý các chuỗi và như vậy, vì vậy đây là cách tốt nhất tôi có thể thu hẹp nó.


Chào mừng đến với PPCG! Bài đăng đầu tiên rất hay! Bạn có thể lưu 5 byte nếu bạn xóa một số khoảng trắng không cần thiết:s=string c=s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13))end
GamrCorps

for i=1,26 do print(((64+i):char()..(65+(i%26)):char()):rep(13))end(không được kiểm tra)
Leaky Nun

Bởi vì string.rep(x,13)về cơ bản làx:rep(13)
Leaky Nun

Đúng! Tôi quên chuỗi chỉ mục mặc định có thể truy cập được vào thư viện chuỗi.
ATaco

Mặc dù tốt, các số như 65+ (i% 26) không được tính là chuỗi trừ khi được lưu trữ như vậy. Tôi sẽ làm việc theo cách để biến công việc đó thành địa ngục.
ATaco


3

05AB1E, 12 byte

ADÀ)øvyJ5Ø×,

Giải trình

AD            # push 2 copies of the alphabet
  À           # rotate the 2nd one left by 1
   )ø         # add to list and zip
     v        # for each
      yJ      # join the pair
        5Ø×   # repeat it 13 times
           ,  # print with newline

Dùng thử trực tuyến


Tôi biết đây là một câu hỏi cũ nhưng tôi không thể tự giúp mình. ADÀ)ø13×»hoạt động tốt với 9 byte.
Datboi

@Datboi: Điều đó thực sự hoạt động ngay bây giờ, nhưng tiếc là nó không hoạt động vào thời điểm câu hỏi này được đăng :(
Emigna

3

Toán học, 82 75 67 66 byte

Print@FromCharacterCode@PadLeft[{},26,{i-1,i}~Mod~26+65]~Do~{i,26}

Về mặt kỹ thuật ngắn hơn, mặc dù nó in bằng chữ thường thay vì chữ hoa:

Toán học, 64 byte

Print[""<>FromLetterNumber@Table[{i-1,i}~Mod~26+1,13]]~Do~{i,26}

1
Thủ thuật đẹp bằng cách sử dụng PadLeft.
Nữ tu bị rò rỉ


1

MATLAB, 47 38 byte

a=(65:90)';char(repmat([a a([2:end 1])],1,13))

char(repmat([65:90;[66:90 65]]',1,13))

Đầu tiên tạo một mảng cột của bảng chữ cái trong ASCII, nối thêm một bản sao đã được dịch chuyển thành một cột bên phải, sao chép mảng 26 * 2 kết quả 13 lần theo cột, chuyển sang một mảng ký tự và in theo mặc định.

Thứ hai tạo ra một mảng 2 * 26 của bảng chữ cái và bảng chữ cái thay đổi, chuyển đổi nó sau đó tiếp tục như trên.


Bạn có thể lưu một byte bằng cách sử dụng [... '']thay vì char(...).
pyjama

Và bạn có thể sử dụng chỉ cần [65:90;66:90 65]lưu hai byte.
pyjama



1

PHP, 102 byte

<?php $a='ABCDEFGHIJKLMNOPQRSTUVWXYZA';$i=-1;while($i++<25){echo str_repeat(substr($a,$i,2),13)."\n";}

Bạn có thể loại bỏ các trích dẫn từ chuỗi Bảng chữ cái. Thay thế \ n bằng một lần nhập thực tế thay vì \ n. Lấy trộm ý tưởng đó từ @insertusernamehere. Vì vậy, kiểm tra câu trả lời của anh ấy cho những gì tôi có ý nghĩa. Chỉnh sửa: Cũng sử dụng ký hiệu thẻ ngắn <?. Bạn cũng không cần một khoảng trắng sau <?. Vì vậy, <?$a='ABC'cũng hoạt động.
Jeroen

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.