Bir alfabe dalgası yazdır


37

Bu tam metni basacaksınız:

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

gözlük

  • Tüm büyük harf yerine küçük harf yazdırabilirsiniz. Bununla birlikte, durum çıktı boyunca tutarlı olmalıdır.
  • Bir ekstra sondaki satır beslemesini yazdırabilirsiniz.

puanlama

Bu, küçük ölçüde dalgalanan bir alfabe dalgası olduğundan, kodunuz da bayt sayısı açısından küçük olmalıdır. Aslında, bayt sayısı açısından en küçük kod kazanır.


39
Cidden, başka bir alfabe mücadelesi?
Nathan Merrill,

6
@NathanMerrill Kadar olduğu kadar, onların aşağı oy almaya layık olduklarını sanmıyorum. (Sizi düşürmüyorum demek istemiyorum, sadece söylüyorum.)
Conor O'Brien

14
Desenler yeterince farklı olduğu sürece, alfabeyi, ondalık basamakları, yıldızları ve alt
Dennis

9
@Dennis, kullanılan karakterlere bakılmaksızın, aşırı kullanılmakta olan bu "kalıp" zorluklarının bu türü, IMO. Offtopik olduğunu sanmıyorum ama biraz temiz havanın tadını çıkarırdım
Nathan Merrill,

13
Alfabe zorlukları için daha fazla talep olmadığı açık - ilk 15 saatte sadece 39 kişi cevap verdi ...
trichoplax

Yanıtlar:


37

C, 60 bayt

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

10
Bu bir dahi.
Sızdıran Rahibe

C kod golf mücadelesinde görmek güzel.
Micheal Johnson

@MichealJohnson " C'yi görün ", orada ne yaptığını IC. ;) Ve Leaky Nun’a katılıyorum . Bazen insanların bu ustaca cevaplardan bazılarını nasıl bulduğunu merak ediyorum.
Kevin Cruijssen

@KevinCruijssen Bu istemeden lol oldu.
Micheal Johnson

17

Brainfuck, 104 bayt

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

1
Neredeyse Hello World ile aynı boyutta. Etkileyici!
phyrfox

3
@phyrfox Aslında ...
Sp3000

14

Dışbükey, 10 bayt

U_(+]D*zN*

Çevrimiçi deneyin!

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"

9

Pyth, 11 10 bayt

jC*13.<BG1

Burada dene.

        G   the alphabet
       B    bifurcate over
     .<  1  left shift by 1
  *13       repeat 13 times
 C          transpose
j           join on newlines

8

Vim, 85 83 bayt

: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

Bunun daha çok golf oynayabileceğini biliyorum, ama kafam ağrıyor bu yüzden şimdilik durmam gerekiyor.

<cr>Enter tuşu, <c+v>ctrl + v ve <esc>kaçış tuşudur. Bunların hepsi bir bayt olarak sayıldı.

Bundan bir gif kaydettim ama mahvoldu. Video olsa iyi: http://recordit.co/ldLKvho9Gi


8

Ruby, 42 39 38 37 bayt

@ User81655
-1 byte sayesinde @te_t @ byatwork -1 byte @NotthatCharles
sayesinde - byte

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

Repl.it üzerinde bakın: https://repl.it/CmOJ


7

Çedar, 48 bayt

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

Çedar dizeleri ile iyidir: D

Çevrimiçi deneyin!

açıklama

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

Ne yapar l>89?65:l+1? Eh 89char için kod Y. Temel olarak, l>89mektubun olup olmadığını kontrol ediyor Z, bu da geri dönmemiz gerektiği anlamına geliyor A. Eğer l>89yanlışsa. Bir l+1sonraki karaktere döneceğim


@"Aralarına girebileceğini düşündüm .
Sızdıran Rahibe

Bu bir fonksiyon dönüşü kullanmaz mı?
Conor O'Brien,

@ ConorO'Brien evet?
Downgoat


@ ConorO'Brien oh, meydan okumada spec görmedim. düzeltecek
Downgoat

7

Jöle , 10 bayt

26ḶḂØAṙZj⁷

Çevrimiçi deneyin!

Nasıl çalışır

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.

YO zamanlar yoktu mu? Ayrıca 100k temsilcisi için tebrikler !!
Outgolfer Erik,

Teşekkürler! Kontrol ettim ve ne yazık ki, itirazın Yyayınlanmasından iki gün sonra eklendi.
Dennis,

Çünkü daha ileride golf oynayabilirdin 26ḶḂØAṙZY. Ama şu anda olduğu gibi hala iyi.
Outgolfer Erik,

7

Haskell, 60 58 bayt

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

"A" ile başlamak, scanr(:)listeyi ['A'..'Z']sağdaki karakterlerden oluşturur . (-> ["ABCDE...A", "BCDEF..A", ..., "XYZA", "YZA", "ZA", "A"]). (a:b:_)her bir alt listenin ilk iki karakteriyle (en az iki karakter ile) eşleşir ve 13 kopya çıkarır.


Düzenli olarak diğer dillerin kullandığı hilelerin bazılarını göz önünde bulundurarak, gerçek baskıyı içermemenin adil olduğunu düşünüyorum. Bu durumda "(++" \ n ") = <<" ile değiştirebilir ve 2 bayt kaydedebilirsiniz. Muhtemelen daha fazla.
MarLinn

@MarLinn: Hayır, sanmıyorum. Golf dilleri örtük baskı göz önünde bulundurularak tasarlanmıştır ve diğer çoğu yanıtın bir tür yazdırma komutu vardır. BTW, unlineshatta daha kısadır (++"\n")=<<.
nimi

7

PowerShell, 49 43 bayt

TimmyD'in remiksi:

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

49 bayt oldu:

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

Örnek çıktı


6

Python 2, 70 68 54 bayt

Liste tabanlı çözüm:

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

Ama neden bir liste yarattın? Teşekkürler LeakyNun:

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

6

R, 72 67 60 56 bayt

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

Ekstra 4 bayt için @Giuseppe'e teşekkürler !

rep60 byte'ta eski tabanlı çözüm:

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

Çevrimiçi tercüman için buraya bakınız . Ekstra 7 bayt için @ user5957401 'e teşekkürler !

72 byte'taki eski matris tabanlı çözüm:

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

Çevrimiçi tercüman için buraya bakınız .


1
Eğer indext olarak değiştirirseniz, i in 1:26o zaman harf seçimi LETTERS[c(i,i%%26+1)]6 ya da 7 bayt gibi düşebilir
user5957401

1
@ user5957401 arf öylesine inatla (i+1)%%26karşımda bunu yapmak için başıma gelmediğimi yapıyordum ! Teşekkürler!
plannapus

1
Matrisleri tekrar kullanarak 56 byte :)
Giuseppe

5

MATL , 13 bayt

1Y2tn:!to~!+)

Çevrimiçi deneyin!

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

Denizanası , 26 bayt

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

Son iki satırdaki sondaki yazdırılamayan karakterleri not alın. Çevrimiçi deneyin!

açıklama

Bu temelde bir aritmetik manipülasyon yaklaşımıdır: değişken 0-1 deseniyle 26 × 26 ızgara yapın, her satırın dizinini satırın her elemanına ekleyin, mod 26'yı azaltın ve ASCII değerini ekleyin A. Denizanası'ndaki karakterler sadece özel bir bayrağa sahip rakamlardır ve beklendiği gibi üzerlerindeki tüm aritmetik işler.

Aşağıdan yukarıya doğru:

  • 'Karakteri sembollerdir; Bunları ASCII kod 26 ile yazdırılamaz izler ve bu karakterleri temsil eder.
  • Düşük r, karakter aralığını 0 ile 25 arasında hesaplar.
  • ,İki basılamaz karakter bir çifti oluşturur.
  • Yüksek rargüman verilir 2ve aralığı oluşturur [0 1].
  • Bu $menzili alır ve yazdırılamaz çifti olan diğer bağımsız değişkeni tarafından verilen şekle yeniden şekillendirir. Bu, 26 × 26 alternatif satır matrisi verir0 1 0 1 0 1 ...
  • Düşük +, 0-25 karakter aralığını bu matrise ekler. Satırlarda ilaveli dağıtır, bu satır i artırılır i . Güney argümanı karakterlerden oluştuğundan dolayı, bir karakter matrisine de dönüştürülür.
  • ~|Ters çevrilmiş bağımsız değişken ile modülüdür: (Güney bağımsız değişken (yukarıdaki karakter matrisi) doğusunda değişken modülo azalır Sbu basılamaz değişmez 26 bu nedenle, döner argüman arayan işlem Güney).
  • Yüksek , sonuçtaki matrisin her koordinatına +değişmezleri ekler A.
  • PBaskılar, tırnaklar olmadan kendi satırında her satır olan matris biçiminde sonucu.

1
Golf oynamaya çalıştım ama sonra kodu yazan kişinin adını gördüm.
Sızdıran Rahibe

@LeakyNun Hala deneyebilirsiniz! 26 byte bu meydan okuma için uygun olmasına rağmen.
Zgarb

5

Vim, 31 bayt

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

Dönüş anahtarı nerede .

görüntü tanımını buraya girin


5

Perl, 26 bayt

@Dom Hastings'den bir çözüm . (12 bayt benimkinden daha kısa!) @Ton Hospel
sayesinde -1 bayt

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

-M5.010Veya ile koş -E:

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

Bunu 33'e düşürmeyi başardı: say+($_++,$_--=~/^./g)x13for A..Zama eminim ki daha kısa olanı almanın bir yolu var: say+($_++,$_--)x13for A..Z...
Dom Hastings

Neden içeri girdiğimden emin değilim --, buna gerek yok! O_o. 27:say+($_++,/^./g)x13for A..Z
Dom Hastings,

@DomHastings Güzel bitti! say+($_,$_++)x13for A..Zİlk başta işe yaramadı denedim , ama sanırım o yöne daha fazla itmem gerekiyordu!
Dada

1
say+($_++,chop)x13for A..Zbir bayttan daha fazla tasarruf sağlar
Ton Hospel

@TonHospel harika, bunun için teşekkürler.
Dada,

5

T-SQL 133 Bayt (Golf tarafından: @ 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 Bayt

Sayı dizisi oluşturmak için CTE kullanma

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

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

Cevabınızı 113 karaktere kadar indirdim .
TSQL'de

@ t-Clausen.dk Bu mükemmel. Lütfen cevabınızı gönderin. Benimkini silerdim.
Anuj Tripathi,

Cevabınızı silmek için hiçbir sebep yok, cevabınızı geliştirmek için kemanımı kullanabilirsiniz. Zaten 1 saat önce yayınlandım, eğer TSQL'den hoşlanıyorsanız, diğer cevaplarıma bir göz atmalısınız. Çoğu için Fiddles yaptım
t-clausen.dk


4

Pyth, 10 bayt

jCm.<G~!ZG

gösteri

Açıklama:

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

Eğer Pyth hakkında yaptığı gibi güzel, ben kadar bilseydim
Stan Strum

4

Brainfuck, 88 86 bayt

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

8 bit hücreli bir tercüman ve solda bağlı olmayan bir kaset gerektirir. Çevrimiçi deneyin!


3

Lua, 80 65 Bayt.

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

Leaky Nun'un yardımıyla

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

Lua, karakter dizileri ve bununla ilgili olarak oldukça yetersiz bir dildir, bu yüzden onu daraltabileceğim en iyisi budur.


PPCG'ye Hoşgeldiniz! Güzel ilk mesaj! Gereksiz beyaz boşlukları kaldırırsanız 5 bayt tasarruf edebilirsiniz:s=string c=s.char for i=1,26 do print(s.rep(c(64+i)..c((65+(i%26))),13))end
GamrCorps 10:16

for i=1,26 do print(((64+i):char()..(65+(i%26)):char()):rep(13))end(test edilmedi)
Sızdıran Rahibe

Çünkü string.rep(x,13)temeldex:rep(13)
Leaky Nun

Sağ! Metatable'ın varsayılan olarak string kütüphanesine endekslediği dizgiyi unuttum.
ATaco

Her ne kadar iyi olsa da, 65+ (i% 26) gibi sayılar saklanmadıkça string olarak sayılmaz. Bu işi cehenneme çevirecek şekilde çalışacağım.
ATaco


3

05AB1E, 12 bayt

ADÀ)øvyJ5Ø×,

açıklama

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

Çevrimiçi deneyin


Bunun eski bir soru olduğunu biliyorum ama kendime yardım edemiyorum. ADÀ)ø13×»9 bayt ile de çalışır.
Datboi

@Datboi: Bu gerçekten işe yarıyor ama maalesef bu sorunun gönderildiği tarihte işe yaramadı :(
Emigna

3

Mathematica, 82 75 67 66 bayt

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

Teknik olarak daha kısa, ancak büyük harf yerine küçük harfle yazdırılıyor:

Mathematica, 64 bayt

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

1
Güzel numara kullanarak PadLeft.
Sızdıran Rahibe


1

MATLAB, 47 38 bayt

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

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

İlki, ASCII'deki alfabenin sütun dizisini oluşturur, sağa sütun olarak kaydırılmış bir kopyasını ekler, sonuçta elde edilen 26 * 2 dizisini 13 kez sütun yönünde çoğaltır, karakter dizisine kopyalar ve varsayılan olarak yazdırır.

İkincisi, 2 x 26 alfabe dizisi ve kaydırılmış alfabe oluşturur, daha sonra yukarıdaki gibi devam eder.


Bunun [... '']yerine bir bayt kaydedebilirsiniz char(...).
pajonk,

Ve sadece [65:90;66:90 65]iki bayt kaydetmeyi kullanabilirsiniz .
pajonk,



1

PHP, 102 bayt

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

Tırnakları Alfabe dizesinden kaldırabilirsiniz. \ N yerine \ n yerine gerçek bir enter yazın. Bu fikri @insertusernamehere den çaldı. Yani ne demek istediğime cevabını kontrol et. Düzenleme: Ayrıca kısa etiket gösterimini <? Kullanın. Ayrıca <? 'Den sonra bir alana gerek duymazsınız. Yani <?$a='ABC'aynı zamanda çalışır.
Jeroen

1

Ruby, 41 bayt

26.times{|i|puts [*?A..?Z,?A][i,2]*''*13}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.