Cetak gelombang alfabet

37

Anda harus mencetak teks ini:

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

Spesifikasi

  • Anda dapat mencetak semua huruf kecil dan bukan semua huruf besar. Namun, case harus konsisten di seluruh output.
  • Anda dapat mencetak satu linefeed tambahan tambahan.

Mencetak gol

Karena ini adalah gelombang alfabet yang berfluktuasi pada tingkat yang kecil, kode Anda juga harus kecil dalam hal byte-count. Bahkan, kode terkecil dalam hal byte-count menang.

Biarawati Bocor
sumber
39
Serius, tantangan alfabet lain ?
Nathan Merrill
6
@NathanMerrill Sebanyak mereka, saya tidak berpikir mereka layak untuk downvotes. (Saya tidak menyiratkan Anda diturunkan, saya hanya mengatakan.)
Conor O'Brien
14
Selama polanya cukup berbeda, saya tidak berpikir itu penting jika kita menggunakan alfabet, angka desimal, tanda bintang, dan garis bawah, dll.
Dennis
9
@ Dennis terlepas dari karakter yang digunakan, ini jenis "pola" tantangan yang semakin sering digunakan, IMO. Saya tidak berpikir itu offtopic, tetapi saya akan menikmati udara segar.
Nathan Merrill
13
Sudah jelas tidak ada lagi permintaan untuk tantangan alfabet - hanya 39 orang yang menjawab dalam 15 jam pertama ...
trichoplax

Jawaban:

37

C, 60 byte

main(i){for(;i<703;)putchar(i++%27?65+(i/27+i%27%2)%26:10);}
orlp
sumber
10
Ini jenius.
Leaky Nun
Senang melihat C dalam tantangan kode golf.
Micheal Johnson
@MichealJohnson " lihat C ", IC apa yang Anda lakukan di sana. ;) Dan saya setuju dengan Leaky Nun . Terkadang saya bertanya-tanya bagaimana orang-orang memberikan jawaban yang cerdik ini.
Kevin Cruijssen
@KevinCruijssen Itu adalah lol yang tidak disengaja.
Micheal Johnson
17

Brainfuck, 104 byte

>+[+[<]>>+<+]><<+++++[>+++++>>++<<<-]>[-<+++++++++++++[->>.+.-<<]>>>.<+<]<----[>+<----]>++>>+++[-<.<.>>]
orlp
sumber
1
Praktis ukurannya sama dengan Hello World. Impresif!
phyrfox
3
@ phyrfox Sebenarnya ...
Sp3000
14

Cembung, 10 byte

U_(+]D*zN*

Cobalah online!

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"
GamrCorps
sumber
9

Pyth, 11 10 byte

jC*13.<BG1

Coba di sini.

        G   the alphabet
       B    bifurcate over
     .<  1  left shift by 1
  *13       repeat 13 times
 C          transpose
j           join on newlines
Gagang pintu
sumber
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

Saya tahu ini bisa bermain golf lebih banyak, tetapi kepala saya sakit jadi saya harus berhenti sekarang.

<cr>adalah tombol enter, <c+v>adalah ctrl + v, dan <esc>merupakan tombol pelarian. Itu semua dihitung sebagai satu byte.

Saya mencatat gif ini, tapi itu kacau. Video ini baik-baik saja: http://recordit.co/ldLKvho9Gi

addison
sumber
8

Ruby, 42 39 38 37 byte

-3 byte terima kasih kepada @ user81655
-1 byte terima kasih kepada @manatwork
-1 byte terima kasih kepada @NotthatCharles

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

Lihat di repl.it: https://repl.it/CmOJ

Jordan
sumber
7

Cheddar, 48 byte

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

Cheddar baik dengan string: D

Cobalah online!

Penjelasan

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

Apa yang l>89?65:l+1harus dilakukan Nah 89adalah kode untuk char Y. Pada dasarnya, l>89memeriksa apakah surat itu Z, itu berarti kita harus kembali A. Jika l>89salah. Saya akan kembali l+1, char berikutnya

Downgoat
sumber
Saya pikir Anda bisa memasukkan di @"antara mereka.
Leaky Nun
Bukankah ini menggunakan fungsi yang dikembalikan?
Conor O'Brien
@ Conor'Brien ya?
Downgoat
@ ConorO'Brien oh, tidak melihat dalam spec tantangan. akan memperbaiki
Downgoat
7

Jelly , 10 byte

26ḶḂØAṙZj⁷

Cobalah online!

Bagaimana itu bekerja

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.
Dennis
sumber
Tidak Yada saat itu? Juga selamat untuk 100 ribu perwakilan !!
Erik the Outgolfer
Terima kasih! Saya memeriksa dan, sayangnya, Yditambahkan dua hari setelah tantangan diposting.
Dennis
Karena Anda bisa bermain golf lebih jauh ke bawah 26ḶḂØAṙZY. Tapi, seperti sekarang, masih bagus.
Erik the Outgolfer
7

Haskell, 60 58 byte

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

Dimulai dengan "A" scanr(:)membangun daftar dari karakter dari ['A'..'Z']kanan. (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)cocok dengan dua karakter pertama dari masing-masing sublists (dengan setidaknya dua karakter) dan membuat 13 salinannya.

nimi
sumber
Mempertimbangkan beberapa kode curang yang digunakan oleh bahasa lain secara teratur, saya menganggap wajar untuk tidak menyertakan cetakan yang sebenarnya. Dalam hal ini Anda bisa menggantinya dengan "(++" \ n ") = <<" dan menyimpan 2 byte. Mungkin lebih.
MarLinn
@ MarsLinn: Tidak, saya rasa tidak. Bahasa golf dirancang dengan pemikiran pencetakan implisit dan sebagian besar jawaban lain memiliki semacam perintah pencetakan. Btw, unlinesbahkan lebih pendek dari (++"\n")=<<.
nimi
7

PowerShell, 49 43 byte

Remix TimmyD:

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

adalah, 49 byte:

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

Contoh output

TessellatingHeckler
sumber
6

Python 2, 70 68 54 byte

Solusi berbasis daftar:

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

Tetapi mengapa membuat daftar? Terima kasih LeakyNun:

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

R, 72 67 60 56 byte

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

Terima kasih kepada @Giuseppe untuk tambahan 4 byte!

repSolusi berbasis lama pada 60 byte:

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

Lihat di sini di penerjemah online. Terima kasih kepada @ user5957401 untuk off 7 byte tambahan!

Solusi berbasis matriks lama pada 72 byte:

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

Lihat di sini di penerjemah online.

plannapus
sumber
1
jika Anda mengubah indext ke i in 1:26dan kemudian pemilihan huruf untuk LETTERS[c(i,i%%26+1)]Anda dapat turun seperti 6 atau 7 byte
user5957401
1
@ user5957401 arf saya begitu keras kepala melakukan (i+1)%%26itu tidak terpikir oleh saya untuk melakukan yang sebaliknya! Terima kasih!
plannapus
1
56 byte menggunakan matriks lagi :)
Giuseppe
5

MATL , 13 byte

1Y2tn:!to~!+)

Cobalah online!

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.
Luis Mendo
sumber
5

Ubur-ubur , 26 byte

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

Perhatikan trailing karakter yang tidak diinginkan pada dua baris terakhir. Cobalah online!

Penjelasan

Ini pada dasarnya adalah pendekatan manipulasi aritmatika: buat kisi 26 × 26 dengan pola bolak-balik 0-1, tambahkan indeks setiap baris ke setiap elemen baris, kurangi mod 26, dan tambahkan nilai ASCII dari A. Karakter dalam Ubur-ubur hanyalah angka dengan bendera khusus, dan semua aritmatika berfungsi sesuai harapan.

Dari bawah ke atas:

  • Ini 'adalah karakter literal; mereka diikuti oleh unsintables dengan kode ASCII 26, dan mendukung karakter tersebut.
  • Semakin rendah rmenghitung rentang karakter dari 0 hingga 25.
  • The ,membentuk pasangan dari dua karakter tak patut ditulis.
  • Semakin tinggi rdiberikan argumen 2, dan membentuk kisaran[0 1] .
  • Yang $mengambil rentang itu, dan membentuk kembali ke bentuk yang diberikan oleh argumen lainnya, yang merupakan pasangan yang tidak dapat dicetak. Ini memberikan 26 × 26 matriks bolak baris0 1 0 1 0 1 ...
  • Semakin rendah +menambahkan rentang karakter 0-25 ke matriks ini. Penambahan didistribusikan pada baris, jadi baris i bertambah oleh i . Ini juga dikonversi ke matriks char, karena argumen selatan terdiri dari karakter.
  • The ~|adalah modulus dengan argumen membalik: argumen selatan (di atas arang matriks) berkurang Modulo argumen timur (yangS ternyata argumen-mencari proses selatan, jadi ini adalah tak patut ditulis literal 26).
  • Semakin tinggi +menambahkan literalA ke setiap koordinat dari matriks yang dihasilkan.
  • The Pcetakan hasil dalam format matriks, yaitu, setiap baris pada baris sendiri tanpa tanda kutip.
Zgarb
sumber
1
Saya ingin mencoba golf tetapi kemudian saya melihat nama dia yang menulis kode.
Leaky Nun
@ LeakyNun Anda masih dapat mencoba! Meskipun 26 byte cocok untuk tantangan ini.
Zgarb
5

Vim, 31 byte

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

Di mana tombol Return.

masukkan deskripsi gambar di sini

Lynn
sumber
5

Perl, 26 byte

Solusi dari @Dom Hastings . (12 byte lebih pendek dari milikku!)
-1 byte berkat @Ton Hospel

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

Jalankan dengan -M5.010atau -E:

perl -E 'say+($_++,chop)x13for A..Z'
Dada
sumber
Berhasil mendapatkan ini ke 33:, say+($_++,$_--=~/^./g)x13for A..Ztapi saya yakin ada cara untuk mendapatkan yang lebih pendek dari: say+($_++,$_--)x13for A..Z...
Dom Hastings
Tidak yakin mengapa saya punya --di sana, itu tidak diperlukan! O_o. 27:say+($_++,/^./g)x13for A..Z
Dom Hastings
@HomHastings Dilakukan dengan baik! Saya mencoba say+($_,$_++)x13for A..Zpada awalnya yang tidak berhasil, tetapi tampaknya saya harus mendorong lebih jauh ke arah itu!
Dada
1
say+($_++,chop)x13for A..Zmenghemat satu byte lagi
Ton Hospel
@TonHospel bagus, terima kasih untuk itu.
Dada
5

T-SQL 133 Bytes (Golfed oleh: @ 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 Bytes

Menggunakan CTE untuk menghasilkan urutan angka

;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 Bytes

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
Anuj Tripathi
sumber
Saya telah memasukkan jawaban Anda hingga 113 karakter. Saya memberikan jawaban yang sangat berbeda di TSQL
t-clausen.dk
@ t-Clausen.dk Itu bagus sekali. Silakan kirim jawaban Anda. Saya akan menghapus milik saya.
Anuj Tripathi
tidak ada alasan untuk menghapus jawaban Anda, Anda bisa menggunakan biola saya untuk meningkatkan jawaban Anda. Saya sudah memposting 1 jam yang lalu, jika Anda menikmati TSQL, Anda harus melihat jawaban saya yang lain. Saya membuat Fiddles untuk sebagian besar dari mereka
t-clausen.dk
4

Julia, 46 byte

[println("$c$(c+1-26(c>89))"^13)for c='A':'Z']

Cobalah online!

Dennis
sumber
4

Pyth, 10 byte

jCm.<G~!ZG

Demonstrasi

Penjelasan:

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
isaacg
sumber
Bagus, seandainya aku tahu sebanyak yang Anda lakukan tentang Pyth
Stan Strum
4

Brainfuck, 88 86 byte

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

Membutuhkan juru bahasa dengan sel 8-bit dan selotip tidak dibatasi di sebelah kiri. Cobalah online!

Sp3000
sumber
3

Lua, 80 65 Bytes.

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

Dengan bantuan dari Leaky Nun

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

Lua adalah bahasa yang cukup tidak efisien dalam hal menangani string dan semacamnya, jadi ini adalah yang terbaik yang bisa saya persempit.

ATaco
sumber
Selamat datang di PPCG! Posting pertama yang bagus! Anda dapat menyimpan 5 byte jika Anda menghapus spasi kosong yang tidak perlu: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(tidak diuji)
Leaky Nun
Karena string.rep(x,13)pada dasarnyax:rep(13)
Leaky Nun
Kanan! Saya lupa string metatable diindeks secara default ke perpustakaan string.
ATaco
Meski baik, angka seperti 65+ (i% 26) tidak dihitung sebagai string kecuali disimpan seperti itu. Saya akan bekerja pada cara untuk membuat itu berhasil untuk itu.
ATaco
3

Brachylog , 30 24 20 byte

@Ab: "a" c: @Arz: {: 12jc: @Nc.} A: wa
 @Ab: "a" c: @Arze: 12jcw @ Nw \
@ A $ (: @ Arze: 12jcw @ Nw \

Cobalah online!

Biarawati Bocor
sumber
3

05AB1E, 12 byte

ADÀ)øvyJ5Ø×,

Penjelasan

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

Cobalah online

Emigna
sumber
Saya tahu ini adalah pertanyaan lama tetapi saya tidak bisa menahan diri. ADÀ)ø13×»berfungsi juga dengan 9 byte.
Datboi
@ Datboi: Itu memang bekerja sekarang, tapi sayangnya itu tidak berfungsi pada saat pertanyaan ini diposting :(
Emigna
3

Mathematica, 82 75 67 66 byte

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

Secara teknis lebih pendek, meskipun dicetak dalam huruf kecil dan bukan huruf besar:

Mathematica, 64 byte

Print[""<>FromLetterNumber@Table[{i-1,i}~Mod~26+1,13]]~Do~{i,26}
Michael Lee
sumber
1
Trik yang bagus untuk digunakan PadLeft.
Leaky Nun
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))

Yang pertama membuat array kolom alfabet di ASCII, menambahkan salinan bergeser sebagai kolom di sebelah kanannya, mereplikasi array 26 * 2 yang dihasilkan 13 kali secara kolom, dilemparkan ke array karakter dan dicetak secara default.

Yang kedua membuat 2 * 26 array alfabet dan alfabet bergeser, transpos kemudian melanjutkan seperti di atas.

pengguna58384
sumber
Anda dapat menyimpan satu byte menggunakan [... '']bukan char(...).
pajonk
Dan Anda dapat menggunakan hanya [65:90;66:90 65]menyimpan dua byte.
pajonk
1

J, 20 19 byte

1 byte berkat mil.

u:65+26|(+/2&|)i.26

Penerjemah online

Ini sebenarnya adalah program yang saya gunakan untuk menghasilkan teks dalam tantangan.

Biarawati Bocor
sumber
Anda dapat menghapus@
miles
1

Neoscript , 59 byte

a=('A:[]:'Z)+'Aeach n=0:[]:25console:log((a[n]+a[n+1])*13);
TuxCrafting
sumber
1

PHP, 102 byte

<?php $a='ABCDEFGHIJKLMNOPQRSTUVWXYZA';$i=-1;while($i++<25){echo str_repeat(substr($a,$i,2),13)."\n";}
gabe3886
sumber
Anda dapat menghapus tanda kutip dari string Alfabet. Ganti \ n dengan input aktual, bukan \ n. Curi ide itu dari @insertusernamehere. Jadi, periksa jawabannya untuk apa yang saya maksud. Sunting: Juga gunakan notasi tag pendek <?. Anda juga tidak perlu spasi setelah <?. Begitu <?$a='ABC'juga bekerja.
Jeroen
1

Ruby, 41 byte

26.times{|i|puts [*?A..?Z,?A][i,2]*''*13}
daniero
sumber