พิมพ์คลื่นตัวอักษร


37

คุณจะต้องพิมพ์ข้อความที่แน่นอนนี้:

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

รายละเอียด

  • คุณสามารถพิมพ์ตัวพิมพ์เล็กทั้งหมดแทนตัวพิมพ์ใหญ่ทั้งหมด อย่างไรก็ตามเคสต้องสอดคล้องกันตลอดเอาต์พุต
  • คุณสามารถพิมพ์บรรทัดการป้อนบรรทัดพิเศษเพิ่มเติมหนึ่งรายการ

เกณฑ์การให้คะแนน

เนื่องจากนี่เป็นคลื่นตัวอักษรที่มีความผันผวนเล็กน้อยรหัสของคุณควรมีขนาดเล็กในรูปของจำนวนไบต์ ในความเป็นจริงรหัสที่เล็กที่สุดในแง่ของการนับไบต์ชนะ


39
อย่างจริงจังท้าทายตัวอักษรอีกหรือไม่
นาธานเมอร์ริล

6
@NathanMerrill มากเท่าที่พวกเขาเป็นฉันไม่คิดว่าพวกเขามีค่าของการลงคะแนน (ฉันไม่ได้หมายความว่าคุณ downvoted ฉันแค่พูด)
Conor O'Brien

14
ตราบใดที่รูปแบบมีความแตกต่างอย่างเพียงพอฉันไม่คิดว่ามันจะสำคัญถ้าเราใช้ตัวอักษรตัวเลขทศนิยมเครื่องหมายดอกจันและเครื่องหมายขีดล่าง ฯลฯ
Dennis

9
@Dennis โดยไม่คำนึงถึงตัวละครที่ใช้ความท้าทายของ "รูปแบบ" ประเภทนี้ที่กำลังถูกใช้มากเกินไปคือ IMO ฉันไม่คิดว่ามันจะเป็นเรื่องผิดเพี้ยน แต่ฉันจะเพลิดเพลินไปกับอากาศที่บริสุทธิ์
Nathan Merrill

13
เห็นได้ชัดว่าไม่มีความต้องการความท้าทายด้านตัวอักษรอีกต่อไปมีเพียง 39 คนที่ตอบใน 15 ชั่วโมงแรก ...
trichoplax

คำตอบ:


37

C, 60 ไบต์

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

10
นี่คืออัจฉริยะ
Leun Nun

ยินดีที่ได้เห็น C ในการแข่งขันกอล์ฟรหัส
Micheal Johnson

@MichealJohnson " เห็น C ", IC สิ่งที่คุณทำที่นั่น ;) และผมเห็นด้วยกับการรั่วนูน บางครั้งฉันก็สงสัยว่าทำไมคนถึงได้คำตอบที่แยบยลเหล่านี้
Kevin Cruijssen

@KevinCruijssen นั่นมันไม่ได้ตั้งใจเลยนะ
Micheal Johnson




8

เป็นกลุ่ม85 83 ไบต์

: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

ฉันรู้ว่าสิ่งนี้สามารถเล่นกอล์ฟได้มากขึ้น แต่หัวของฉันเจ็บดังนั้นฉันจึงต้องหยุดตอนนี้

<cr>คือคีย์ Enter <c+v>คือ ctrl + v และ<esc>เป็นคีย์ Escape ทั้งหมดนั้นนับเป็นหนึ่งไบต์

ฉันบันทึก gif ของสิ่งนี้ แต่มันทำให้เมาขึ้น วิดีโอนี้ใช้ได้ดี: http://recordit.co/ldLKvho9Gi



7

Cheddar, 48 ไบต์

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

Cheddar ดีกับสาย: D

ลองออนไลน์!

คำอธิบาย

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

อะไรl>89?65:l+1ทำอย่างไร ดีเป็นรหัสถ่านสำหรับ89 Yโดยทั่วไปl>89คือการตรวจสอบถ้าตัวอักษรเป็นนั่นหมายความว่าเราควรจะกลับมาZ Aหากl>89เป็นเท็จ ฉันจะกลับl+1ไปถ่านตัวต่อไป


ฉันคิดว่าคุณสามารถแทรก@"ระหว่างพวกเขา
Leun Nun

สิ่งนี้ไม่ใช้ฟังก์ชันส่งคืนหรือไม่
Conor O'Brien

@ ConorO'Brien ใช่มั้ย
Downgoat


@ ConorO'Brien โอ้ไม่เห็นความท้าทายใน spec จะแก้ไข
Downgoat

7

เยลลี่ 10 ไบต์

26ḶḂØAṙZj⁷

ลองออนไลน์!

มันทำงานอย่างไร

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.

ไม่ได้Yมีอยู่ในตอนนั้น? ขอแสดงความยินดีด้วยตัวแทน 100k !!
Erik the Outgolfer

ขอบคุณ! ฉันตรวจสอบแล้วและน่าเศร้าที่Yถูกเพิ่มเข้ามาอีกสองวันหลังจากความท้าทายถูกโพสต์
เดนนิส

เพราะคุณสามารถตีกอล์ฟลงไป26ḶḂØAṙZYได้ แต่มันก็ยังดีอยู่
Erik the Outgolfer

7

Haskell, 60 58 ไบต์

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

เริ่มต้นด้วย "A" scanr(:)สร้างรายการจากตัวอักษร['A'..'Z']จากทางด้านขวา (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]) (a:b:_)จับคู่สองตัวแรกของแต่ละรายการย่อย (อย่างน้อยสองตัวอักษร) และทำสำเนา 13 ชุด


พิจารณากลโกงบางอย่างที่ใช้โดยภาษาอื่นเป็นประจำฉันคิดว่ามันยุติธรรมที่จะไม่รวมการพิมพ์จริง ในกรณีนี้คุณสามารถแทนที่ด้วย "(++" \ n ") = <<" และบันทึก 2 ไบต์ อาจเป็นไปได้มากขึ้น
MarLinn

@ MarLinn: ไม่ฉันไม่คิดอย่างนั้น ภาษากอล์ฟได้รับการออกแบบโดยคำนึงถึงการพิมพ์โดยปริยายและคำตอบอื่น ๆ ส่วนใหญ่จะมีคำสั่งการพิมพ์บางประเภท Btw, แม้จะสั้นกว่าunlines (++"\n")=<<
nimi


6

Python 2, 70 68 54 ไบต์

รายการโซลูชั่นพื้นฐาน:

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

แต่ทำไมต้องสร้างรายการ ขอบคุณ LeakyNun:

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

6

R, 72 67 60 56 ไบต์

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

ขอบคุณ@Giuseppeสำหรับการปิด 4 ไบต์พิเศษ!

repโซลูชันพื้นฐานแบบเก่าที่ 60 ไบต์:

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

ดูที่นี่ในล่ามออนไลน์ ขอบคุณ@ user5957401สำหรับการเพิ่มพิเศษ 7 ไบต์!

โซลูชันแบบเมทริกซ์แบบเก่าที่ 72 ไบต์:

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

ดูที่นี่ในล่ามออนไลน์


1
ถ้าคุณเปลี่ยน indext เป็นi in 1:26และจากนั้นการเลือกตัวอักษรที่LETTERS[c(i,i%%26+1)]คุณสามารถวางเช่น 6 หรือ 7 ไบต์
user5957401

1
@ user5957401 arf ฉันทำอย่างดื้อรั้นและ(i+1)%%26ไม่ได้ทำในสิ่งที่ตรงกันข้าม! ขอบคุณ!
plannapus

1
56 bytesโดยใช้เมทริกซ์อีกครั้ง :)
Giuseppe


5

แมงกะพรุนขนาด 26 ไบต์

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

สังเกตอักขระที่ไม่สามารถพิมพ์ได้ที่ด้านหลังของสองบรรทัดสุดท้าย ลองออนไลน์!

คำอธิบาย

นี้นั้นเป็นวิธีการจัดการเลขคณิต: ทำ 26 × 26 ตารางที่มีสลับ 0-1 รูปแบบการเพิ่มดัชนีของแต่ละแถวให้กับองค์ประกอบของแถวทุกลด mod 26 และเพิ่มค่า ASCII Aของ ตัวละครในแมงกะพรุนเป็นเพียงตัวเลขที่มีธงพิเศษและการคำนวณทางคณิตศาสตร์ทั้งหมดทำงานตามที่คาดไว้

จากล่างขึ้นบน:

  • 's เป็นตัวอักษรตัวละคร; พวกเขาจะตามมาด้วย unprintables ด้วยรหัส ASCII 26 และยืนสำหรับตัวละครเหล่านั้น
  • ด้านล่างrคำนวณช่วงอักขระตั้งแต่ 0 ถึง 25
  • ,รูปแบบคู่จากสองตัวอักษร unprintable
  • ที่สูงขึ้นrจะได้รับการโต้แย้งและรูปแบบช่วง2[0 1]
  • การ$ใช้ช่วงนั้นและปรับรูปร่างให้เป็นรูปร่างที่กำหนดโดยอาร์กิวเมนต์อื่นซึ่งเป็นคู่ของ unprintables นี่ให้เมทริกซ์ 26 × 26 ของแถวสลับ0 1 0 1 0 1 ...
  • ด้านล่าง+เพิ่มช่วงถ่าน 0-25 ลงในเมทริกซ์นี้ กระจายนอกจากนี้ในแถวเพื่อให้แถวฉันจะเพิ่มขึ้นโดยฉัน มันถูกแปลงเป็นเมทริกถ่านด้วยเนื่องจากอาร์กิวเมนต์ทิศใต้ประกอบด้วยตัวอักษร
  • ~|เป็นโมดูลัสที่มีการขัดแย้งพลิก: อาร์กิวเมนต์ใต้ (ถ่านเมทริกซ์ด้านบน) จะลดลงแบบโมดูโลอาร์กิวเมนต์ตะวันออก (คนSผลัดอาร์กิวเมนต์-กระบวนการแสวงหาทิศใต้ดังนั้นนี้คือไม่สามารถพิมพ์ตัวอักษร 26)
  • ยิ่งสูง+เพิ่มตัวอักษรAไปยังทุกพิกัดของเมทริกซ์ที่เกิดขึ้น
  • Pพิมพ์ผลในรูปแบบเมทริกซ์, ที่อยู่, แต่ละแถวในสายของตัวเองโดยไม่ต้องมีคำพูด

1
ฉันอยากลองเล่นกอล์ฟ แต่แล้วฉันก็เห็นชื่อของเขาที่เขียนรหัส
Leun Nun

@LeakyNun คุณยังสามารถลองได้! แม้ว่า 26 ไบต์จะเหมาะสำหรับความท้าทายนี้
Zgarb


5

Perl, 26 ไบต์

วิธีการแก้ปัญหาจาก@Dom เฮสติ้งส์ (สั้นกว่าของฉัน 12 ไบต์!)
-1 ไบต์ขอบคุณ@Ton Hospel

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

ทำงานด้วย-M5.010หรือ-E:

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

จัดการเพื่อให้เรื่องนี้ลงที่ 33: say+($_++,$_--=~/^./g)x13for A..Zแต่ฉันแน่ใจว่ามีวิธีที่จะทำให้ได้คะแนนที่สั้นกว่าจาก: say+($_++,$_--)x13for A..Z...
Dom Hastings

ไม่แน่ใจว่าทำไมฉันถึงมี--อยู่ในนั้นมันไม่จำเป็น! O_o 27:say+($_++,/^./g)x13for A..Z
Dom Hastings

@DomHastings ทำได้ดีมาก! say+($_,$_++)x13for A..Zตอนแรกฉันพยายามแล้วซึ่งไม่ได้ผล แต่ดูเหมือนว่าฉันควรผลักดันต่อไปในทิศทางนั้น!
Dada

1
say+($_++,chop)x13for A..Zประหยัดอีกหนึ่งไบต์
Ton Hospel

@ TonHospel ดีขอบคุณสำหรับสิ่งนั้น
Dada

5

T-SQL 133 Bytes (Golfed โดย: @ 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 ไบต์

การใช้ CTE เพื่อสร้างลำดับของตัวเลข

;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 ไบต์

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

ฉันตีกอล์ฟคำตอบของคุณลงได้ถึง 113 ตัว ฉันให้คำตอบที่แตกต่างกันมากใน TSQL
t-clausen.dk

@ t-Clausen.dk นั่นยอดเยี่ยม กรุณาโพสต์คำตอบของคุณ ฉันจะลบของฉัน
Anuj Tripathi

ไม่มีเหตุผลที่จะลบคำตอบของคุณคุณสามารถใช้ซอของฉันเพื่อปรับปรุงคำตอบของคุณ ฉันโพสต์แล้ว 1 ชั่วโมงที่ผ่านมาถ้าคุณสนุกกับ TSQL คุณควรดูคำตอบอื่น ๆ ของฉัน ฉันทำ Fiddles เพื่อพวกเขาส่วนใหญ่
t-clausen.dk


4

Pyth, 10 ไบต์

jCm.<G~!ZG

สาธิต

คำอธิบาย:

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

ดีหวังว่าฉันรู้มากเท่าที่คุณทำเกี่ยวกับ Pyth
Stan Strum

4

Brainfuck, 88 86 ไบต์

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

ต้องการล่ามที่มีเซลล์ 8 บิตและเทปไม่ได้ล้อมรอบด้านซ้าย ลองออนไลน์!


3

Lua, 80 65 ไบต์

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

ด้วยความช่วยเหลือจาก Leaky Nun

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

Lua เป็นภาษาที่ไร้ประสิทธิภาพในการจัดการกับสายอักขระและดังนั้นนี่จึงเป็นสิ่งที่ดีที่สุดที่ฉันสามารถ จำกัด ให้แคบลงได้


ยินดีต้อนรับสู่ PPCG! โพสต์แรกที่ดี! คุณสามารถบันทึกได้ 5 ไบต์หากคุณลบช่องว่างที่ไม่จำเป็นออก: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(ไม่ได้ทดสอบ)
แม่ชีที่รั่ว

เพราะstring.rep(x,13)โดยทั่วไปแล้วx:rep(13)
แม่ชีที่ไม่น่าไว้วางใจ

ขวา! ฉันลืมสตริง metatable เริ่มต้นดัชนีไปยังห้องสมุดสตริง
ATaco

แม้ว่าจะดี แต่ตัวเลขเช่น 65+ (i% 26) จะไม่นับเป็นสตริงเว้นแต่จะเก็บไว้เช่นนั้น ฉันจะพยายามหาทางทำให้นรกเป็นจริง
ATaco


3

05AB1E, 12 ไบต์

ADÀ)øvyJ5Ø×,

คำอธิบาย

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

ลองออนไลน์


ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันก็ช่วยตัวเองไม่ได้ ADÀ)ø13×»ทำงานได้ดีกับ 9 ไบต์
Datboi

@Datboi: มันใช้งานได้จริงตอนนี้ แต่น่าเสียดายที่มันไม่ทำงานในเวลาที่คำถามนี้ถูกโพสต์ :(
Emigna

3

Mathematica, 82 75 67 66 ไบต์

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

ในทางเทคนิคที่สั้นกว่าแม้ว่ามันจะพิมพ์เป็นตัวพิมพ์เล็กแทนตัวพิมพ์ใหญ่:

Mathematica, 64 ไบต์

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

1
PadLeftเคล็ดลับที่ดีโดยใช้
แม่ชีที่รั่ว


1

MATLAB, 47 38 ไบต์

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

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

ตัวแรกสร้างอาร์เรย์คอลัมน์ของตัวอักษรใน ASCII ต่อท้ายสำเนาที่ถูกเลื่อนเป็นคอลัมน์ทางด้านขวาทำซ้ำอาร์เรย์ 26 * 2 ที่ได้ผลลัพธ์ 13 ครั้งในแนวตั้งตามแนวคอลัมน์แล้วพิมพ์ลงในอาร์เรย์อักขระและพิมพ์ตามค่าเริ่มต้น

ตัวที่สองทำอาร์เรย์ของตัวอักษร 2 * 26 และตัวอักษรที่ถูกเลื่อนสลับและสลับจากนั้นดำเนินการต่อตามที่กล่าวไว้ข้างต้น


คุณสามารถบันทึกหนึ่งไบต์ใช้แทน[... ''] char(...)
pajonk

และคุณสามารถใช้เพียง[65:90;66:90 65]บันทึกสองไบต์
pajonk



1

PHP, 102 ไบต์

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

คุณสามารถลบเครื่องหมายคำพูดออกจากสตริงตัวอักษร แทนที่ \ n ด้วยการป้อนจริงแทน \ n ขโมยความคิดนั้นจาก @insususernamehere ดังนั้นตรวจสอบคำตอบของเขาสำหรับสิ่งที่ฉันหมายถึง แก้ไข: ใช้สัญกรณ์แท็กสั้นด้วยหรือไม่ คุณไม่ต้องการช่องว่างหลังจาก <? ดังนั้น<?$a='ABC'ยังใช้งานได้
Jeroen

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.