アルファベット波を印刷する


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

スペック

  • すべて大文字の代わりにすべて小文字を印刷できます。ただし、出力全体で大文字と小文字を一致させる必要があります。
  • 余分な末尾の改行を1つ印刷できます。

得点

これはわずかに変動するアルファベットの波であるため、バイトカウントの観点からもコードは小さくする必要があります。実際、バイト数の面で最小のコードが優先されます。


39
真剣に、別のアルファベットの挑戦?
ネイサンメリル

6
@NathanMerrill彼らは数多くありますが、彼らは下票に値するとは思いません。(あなたがダウン投票したことを意味するのではなく、単に言っているだけです。)
コナーオブライエン

14
パターンが十分に異なる限り、アルファベット、10進数、アスタリスク、アンダースコアなどを使用しても問題ないと思います
デニス

9
@Dennisは、使用される文字、使い古されているこれらのタイプの「パターン」チャレンジに関係なく、IMOです。私はそのトピックをオフトピックとは思わないが、新鮮な空気を楽しむだろう。
ネイサンメリル

13
アルファベットチャレンジに対する需要がこれ以上ないことは明らかです。最初の15時間で回答したのは39人だけ
でした...-trichoplax

回答:


37

C、60バイト

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

10
これは天才です。
漏れの修道女

コードゴルフチャレンジでCに会えてうれしいです。
マイケルジョンソン

@MichealJohnson " see C "、あなたがそこでしたことをIC。;)Leaky Nunに同意します。時々、これらの独創的な答えのいくつかを人々がどのように思い付くのかと思います。
ケビンクルイッセン16

@KevinCruijssenそれは意図しない笑でした。
マイケルジョンソン

17

Brainfuck、104バイト

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

1
Hello Worldとほぼ同じサイズ。印象的!
phyrfox

3
@phyrfox 実際に...
Sp3000

14

凸、10バイト

U_(+]D*zN*

オンラインでお試しください!

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バイト

: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>エスケープキーです。これらはすべて1バイトとしてカウントされました。

このgifを記録しましたが、めちゃくちゃになりました。ビデオは問題ありません:http : //recordit.co/ldLKvho9Gi


8

ルビー、42 39 38 37バイト

@ user81655のおかげで-3バイト@manatworkの
おかげで
-1バイト@NotthatCharlesのおかげで-1バイト

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

repl.itで参照してください:https ://repl.it/CmOJ


7

チェダー、48バイト

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

チェダーは文字列に適しています: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がfalseの場合。l+1次の文字を返します


@"それらの間に挿入できると思いました。
リーキー修道女

これは関数の戻り値を使用していませんか?
コナーオブライエン

@ ConorO'Brienええ?
ダウンゴート


@ ConorO'Brienああ、チャレンジ仕様には見ませんでした。修正予定
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当時存在しませんでしたか?また、10万回の繰り返しおめでとうございます!!
エリックアウトゴルファー16

ありがとう!私はチェックし、悲しいことYに、チャレンジが投稿されてから2日後に追加されました。
デニス

あなたはそれをさらにゴルフできたから26ḶḂØAṙZYです。しかし、今のところ、それはまだ良いです。
エリックアウトゴルファー16

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:_)各サブリストの最初の2文字(少なくとも2文字)に一致し、13個のコピーを作成します。


他の言語で定期的に使用されるいくつかのチートを考慮すると、実際の印刷を含めないのは公平だと思います。この場合、 "(++" \ n ")= <<"に置き換えて2バイト節約できます。おそらくもっと。
MarLinn

@MarLinn:いいえ、そうは思いません。ゴルフ言語は暗黙的な印刷を念頭に置いて設計されており、他のほとんどの回答には何らかの印刷コマンドがあります。ところで、unlinesさらに短いです(++"\n")=<<
-nimi

7

PowerShell、49 43バイト

TimmyDのリミックス:

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

だった、49バイト:

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

Example output


6

パイソン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,,"")

余分な4バイトをオフにしてくれた@Giuseppeに感謝します!

rep60バイトの古いベースのソリューション:

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

オンライン通訳についてはこちらをご覧ください。余分な7バイトをオフにしてくれた@ user5957401に感謝します!

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バイト :)
ジュゼッペ

5

MATL、13バイト

1Y2tn:!to~!+)

オンラインでお試しください!

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

クラゲ、26バイト

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

最後の2行の末尾の印刷できない文字に注意してください。 オンラインでお試しください!

説明

これは基本的に算術操作のアプローチです。0-1パターンを交互に使用して26×26グリッドを作成し、各行のインデックスを行のすべての要素に追加し、mod 26を減らし、ASCII値を追加しますA。クラゲのキャラクターは特別なフラグの付いた数字であり、すべての算術は期待どおりに機能します。

下から上へ:

  • 'sが文字リテラルです。ASCIIコード26の印刷できない文字が続き、それらの文字を表します。
  • 下限は、r0〜25の文字範囲を計算します。
  • ,2つの印刷できない文字のペアを形成しています。
  • 上位にrは引数が与えられ2、範囲を形成します[0 1]
  • $その範囲をとり、unprintables一対のあるその他の引数によって所定の形状にそれを整形します。これにより、交互の行の26×26マトリックスが得られます。0 1 0 1 0 1 ...
  • 下部で+は、0〜25のchar範囲がこのマトリックスに追加されます。さらには、行に分配するので、行iはインクリメントされ、I。south引数はcharで構成されるため、charマトリックスにも変換されます。
  • ~|反転引数を持つ係数である:(南引数(上記チャー行列)は東引数を法として低減されS、これは印刷できないリテラル26であるので、ターン引数探索プロセス南)。
  • 高いほど、結果のマトリックスのすべての座標に+リテラルAが追加されます。
  • P引用符なしでそれ自身のライン上に、各行である行列形式で結果を印刷します。

1
ゴルフをやってみたかったのですが、コードを書いた彼の名前を見ました。
リーキー修道女

@LeakyNunあなたはまだ試すことができます!26バイトがこの課題に適していますが。
ズガーブ

5

Vim、31バイト

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

Returnキーはどこにありますか。

enter image description here


5

Perl、26バイト

@Dom Hastingsからのソリューション。(私のものより12バイト短い!)@Ton Hospelの
おかげで-1バイト

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...
ドムヘイスティングス

なぜ私が--そこにいるのか分かりません、それは必要ありません!O_o。27:say+($_++,/^./g)x13for A..Z
Dom Hastings

@DomHastingsよくできました!say+($_,$_++)x13for A..Z最初は試してみましたが、うまくいきませんでしたが、その方向にさらに進める必要があるようです!
ダダ

1
say+($_++,chop)x13for A..Zもう1バイトを節約
トンホスペル

@TonHospel素晴らしい、ありがとう。
ダダ

5

T-SQL 133バイト(ゴルフ:@ 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それは素晴らしいです。回答を投稿してください。私は私のものを削除します。
アヌジトリパティ

あなたの答えを削除する理由はありません。あなたの答えを改善するために私のフィドルを使うことができます。すでに1時間前に投稿しましたが、TSQLを楽しんでいるのであれば、他の回答をご覧ください。私はそれらのほとんどのためのフィドルを作った
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についてあなたがそうであるようにずっととして知っていたい
スタン・ストラム


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)
漏れ尼僧

右!文字列メタテーブルはデフォルトで文字列ライブラリのインデックスを忘れていました。
アタコ

Although good, numbers such as 65+(i%26) don't count as strings unless stored as such. I'll work on a way to make that work for the hell of it.
ATaco


3

05AB1E, 12 bytes

ADÀ)øvyJ5Ø×,

Explanation

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

Try it online


I know this is an old question but i just can't help myself. ADÀ)ø13×» works as well with 9 bytes.
Datboi

@Datboi: That does indeed work now, but unfortunately it didn't work at the time this question was posted :(
Emigna

3

Mathematica, 82 75 67 66 bytes

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

Technically shorter, although it prints in lowercase instead of uppercase:

Mathematica, 64 bytes

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

1
Nice trick using PadLeft.
Leaky Nun


1

MATLAB, 47 38 bytes

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

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

The first makes a column array of the alphabet in ASCII, appends a shifted copy as a column to its right, replicates the resulting 26*2 array 13 times columnwise, casts to a character array and prints by default.

The second makes a 2*26 array of alphabet and shifted alphabet, transposes it then continues as above.


You can save one byte using [... ''] instead of char(...).
pajonk

And you can use simply [65:90;66:90 65] saving two bytes.
pajonk



1

PHP, 102 bytes

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

You can remove the quotes from the Alphabet string. Replace \n with an actual enter instead of \n. Stole that idea from @insertusernamehere. So check his answer for what I mean. Edit: Also use the short-tag notation <?. You also do not need a space after <?. So <?$a='ABC' also works.
Jeroen

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.