Lファベットの印刷/出力


65

George GibsonのPrint a Tabula Rectaに触発されました。

この正確なテキストを印刷/出力する必要があります。

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

(はい、私はそれを手で入力しました)

すべて大文字ではなく、すべて小文字を使用できます。

ただし、大文字と小文字の選択は、テキスト全体で一貫している必要があります。

ルール/要件

  • 各提出は、完全なプログラムまたは機能である必要があります。関数である場合、プログラムの下部に関数呼び出しを追加するだけで実行可能でなければなりません。他のもの(Cのヘッダーなど)を含める必要があります。
  • 可能であれば、プログラムをテストできるサイトへのリンクを提供します。
  • プログラムはに何も書き込まないでくださいSTDERR
  • 標準の抜け穴は禁止されています。
  • プログラムはどのような場合でも出力できますが、印刷する必要があります(配列などではありません)。

得点

プログラムは、デフォルトでUTF-8または選択した別の文字セットで、バイトに従ってスコア付けされます。

最終的に、バイト数が最小の答えが勝ちます。

提出

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

# Language Name, N bytes

N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

# Ruby, <s>104</s> <s>101</s> 96 bytes

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

# Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。



5
出力(関数からの戻り値として)は行の配列にできますか?
ドアノブ

@Doorknob私はノーと言うでしょう。
リーキー修道女

@GeorgeGibsonはい。
リーキー修道女

@LeakyNun末尾の改行は許可されますか?
寂部

回答:


61

Excel、19,604バイト

=CHAR(64+MAX(COLUMN(),ROW()))

この式を貼り付けてからA1、全体にドラッグしA1:Z26ます。

バイト数:

  1. 式は27バイトです。
  2. 26 ^ 2回コピーする必要があります。27 * 26 * 26 = 19604。
  3. 数式を何度も何度も入力する必要がないので、私と他の人はスコアを低くすべきだと考えました。今では無関係だと思います-プログラムのサイズをカウントします。
  4. 比較のために、この28,187文字のJSの回答を参照してください-明らかに、これをすべて入力するのではなく、誰かがそれを生成しましたが、サイズは変わりません。

22
これは、私はあなたがこれをカウントする方法をメタSKINGに投稿する必要があり、笑わせた
ロハンJhunjhunwala

19
これの公平な数は45になります:(1)A1:Z26名前ボックス(式バーの左側)に入力[ 7バイト]; (2)=CHAR(64+MAX(COLUMN(),ROW()))数式バーに+ enterと入力[ 30バイト]; (3)Alt E I D Alt E I R選択した範囲[ 8バイト] を満たすように入力します。合計 7 + 30 + 8 = 45
ジョファン

8
オートコンプリートをより少ないバイト数としてカウントするとは思わない。次に、netbeansを完全に議論することで、間違いなくJavaを縮小できます。キーストローク46キーストロークによる測定は、より公平だと思います
Rohan Jhunjhunwala

3
@rohan Iは、Javaを呼び出して言語をオートコンプリートすると、まったく問題ありません。
ジョンドヴォルザーク

5
@Joffan [A1:Z26]="=CHAR(64+MAX(COLUMN(),ROW()))"は40バイトで、まだエレガントです
アナスタ

39

Vim、43バイト

:h<_↵jjYZZPqqlmaYp`ajyl:norm v0r♥"↵`ajq25@q

ここではReturn(0x0a)を表し、Ctrl-R(0x12)を表します。

Tabula Rectaの答えほど短くはありませんが、…

ここに画像の説明を入力してください


3
何。。地獄。です。この。ゴッドフォーサケン。魔法。
ハネフムバラク

1
どのヘルプページを開いていますか?私がやるときはh<_↵それはに私をもたらします:help at_t
DJMcMayhem

v_b_<_exampleCygwin用にVim 7.4で公開しています。
リン

@haneefmubarakはい、それはVimの魔法です。
クロム

28

ゼリー、6 バイト

ØA»'j⁷

ここで試してみてください。昨日怠けていなかっただけで、j⁷(改行で結合する)に1バイトの代替を実装していたなら…

ØA      The uppercase alphabet.
  »'    Table of max(x, y).
    j⁷  Join by newlines.

7
Argh、数分で忍者...チェーンが分岐するので、その代替手段は助けにはなりませんでした。
デニス

愚かな質問ですが、これが6バイトの場合、どの文字セットに含まれていますか?
リスター氏

@MrLister:回答のタイトルにJellyコードページへのリンクを追加しました。
リン

改行で結合はYです。
-PurkkaKoodari

@ Pietu1998 Y投稿の日付は挑戦だと思います
ケアイン共犯


16

///141 94 92 82バイト

/:/\\\\A//#/:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z://:/\/a#
\/a\///A/#

オンラインで試す:デモンストレーション

とても楽しい言語です。

説明:

4x4の正方形のみを印刷するショートエンドコード:

/:/\\\\A//#/:b:c:d://:/\/a#
\/a\///A/#

最初の置換/:/\\\\A/はに置き換え:られ\\Aます。これは与える:

/#/\\Ab\\Ac\\Ad\\A//\\A/\/a#
\/a\///A/#

その後、次の/#/\\Ab\\Ac\\Ad\\A//\\A/ものに置き換え#られ\Ab\Ac\Ad\Aます。

/\\A/\/a\Ab\Ac\Ad\A
\/a\///A/\Ab\Ac\Ad\A

これで、後続のコードの/\\A/\/a\Ab\Ac\Ad\A<newline>\/a\//それぞれを\Aで置き換える/aAbAcAdA<newline>/a/ため、次のようになります。

/A//aAbAcAdA
/a/b/aAbAcAdA
/a/c/aAbAcAdA
/a/d/aAbAcAdA
/a/

これで、最初の部分で/A//すべてAのが削除されます。

abcd
/a/b/abcd
/a/c/abcd
/a/d/abcd
/a/

最初の5文字abcd<newline>が印刷されます。次のコマンド/a/b/はに置き換えaられb、次の結果になります。

bbcd
/b/c/bbcd
/b/d/bbcd
/b/

再び、最初の5文字bbcd<newline>が印刷されます。次のコマンド/b/c/b、次のものに置き換えられcます。

cccd
/c/d/cccd
/c/

再び、最初の5文字cccd<newline>が印刷されます。次のコマンド/c/d/c、次のものに置き換えられdます。

dddd
/d/

最初の5文字dddd<newline>が印刷されます。そして、次のコマンド/d/は不完全であるため、何もしません。


くそー、これは賢い。よくやった。:)これらの方針に沿った、表の課題への解決策のアイデアはありますか?
マーティンエンダー

@MartinEnderいいえ、まだです。夕方に見ます。この課題のため、昼休みをすでに1時間(通常の2倍)に延長しました。
ジャクベ

私は何かを考え出しました(あなたのアイデア、特にキャラクターを次々に処理するために後続の指示を修正する方法からの多くの助けを借りて)。
マーティンエンダー


10

Mathematica、69 65 57バイト

@MartinEnderにより8バイトを節約しました

FromCharacterCode[64+Max~Array~{26,26}]~StringRiffle~"
"&

匿名関数。入力を受け取らず、出力として文字列を返します。基本的にはchar('A' + max(x, y))、1から26までのすべてのxyを取ります。


5
10kおめでとうございます!
-Loovjo

9

///、348バイト

/|/\/\///v/NNN|u/MMM|t/LLL|s/WXYZ|r/OOO|q/KLMa|p/RRRR|o/QQQQ|n/PPPP|m/SSS|l/EFGc|k/RSTb|j/UUUU|i/TTTT|h/WWW|g/VVV|f/XXXX|e/ZZZZZ|d/YYYYY|c/HIJq|b/UVs
|a/NOPQk/ABCDlBBCDlCCCDlDDDDlEEEElFFFFFFGcGGGGGGGcHHHHHHHcIIIIIIIIIJqJJJJJJJJJJqKKKKKKKKKKqttttMauuuuMavvvvNarrrrrPQknnnnQkooooQkppppRkmmmmmmSTbiiiiibjjjjjbgggggggVs
hhhhhhhWs
ffffffYZ
dddddZ
eeeeeZ

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

これを構築するために、これに基づいたチャレンジに対する///回答と同じ手法を使用しまし。ただし、CJamスクリプトは、重複する可能性のあるサブストリングを正しく処理しなかったため修正する必要がありました。


私は本当に ...この言語を学ぶ必要がある
ジョージ・ギブソン

9

網膜、41バイト

バイトカウントはISO 8859-1エンコーディングを前提としています。主要な改行は重要です。


26$*Z
{`^[^A].+
$&¶$&
}T0-2`L`_L`^(.)\1+

説明


26$*Z

文字列をの26個のコピーに設定しますZ。次に、{...}文字列が変化しなくなるまで、ループ内の残りの2つの命令を実行するようにRetinaに指示します。

{`^[^A].+
$&¶$&

で始まらない場合、最初の行を複製しAます。

}T0-2`L`_L`^(.)\1+

これは音訳の段階です。文字列が同じ文字の少なくとも2つのコピーで始まる場合にのみ適用されます。その場合、それらの文字の最後を除くすべてがデクリメントされます。減少は、L(大文字のアルファベット)を_L(空白の後に大文字のアルファベット)にマッピングすることによって行われます。「最後を除くすべて」は、-2Retinaに一致の最後から2番目までのすべての文字を音訳するように指示する制限によって示されます。

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


2
おめでとうございます!:)
Yytsi



7

R、58バイト

l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}

演算子の優先順位のおかげで、2:i-1と同等1:(i-1)です。LETTERS大文字のアルファベットを含む組み込み定数を使用します。他のすべてはかなり自明です。
使用法:

> l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

新しいユーザーは、ゴルフへの提案あなたの答えがあるここに
KritixiのLithos

7

Sesos、25バイト

0000000: 2829c0 756fc6 aecae2 aecd9c 39e09e 099c63 7d8e3d  ().uo.......9....c}.=
0000015: 65a7c0 39                                         e..9

オンラインでお試しください!デバッグをチェックして、生成されたSBINコードを確認します。

Sesosアセンブリ

上記のバイナリファイルは、次のSASMコードをアセンブルして生成されています。

add 26
jmp
    jmp
        rwd 1, add 1, rwd 1, add 1, fwd 2, sub 1
    jnz
    rwd 2, add 64
    jmp
        fwd 2, add 1, rwd 2, sub 1
    jnz
    fwd 1, sub 1
jnz
fwd 1
jmp
    jmp
        rwd 1, add 1, fwd 1, sub 1
    jnz
    nop
        rwd 1
    jnz
    fwd 1
    jmp
        put, add 1, fwd 1
    jnz
    fwd 1
    jmp
        put, fwd 1
    jnz
    add 10, put, get
    nop
        rwd 1
    jnz
    fwd 1
; jnz (implicit)

使い方

テープをに初期化することから始めますABCDEFGHIJKLMNOPQRSTUVWXYZ。これは次のとおりです。

26をセルに書き込み、テープを次の状態のままにします。

                                                       v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0

データヘッドの下のセルがゼロ以外である限り、以下を実行します。

左の2つのセルに番号をコピーし、左端のコピーに64を追加します。

                                                   v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 26 0 0

左端のコピーを元の場所に移動し、右端のコピーから1を引きます。

                                                     v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 90 0

右端のコピーはそれまでに0であるため、プロセスは26回の反復後に停止します。セルを右に移動するため、初期化後のテープの最終状態は次のようになります。

     v
0 0 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

これで、データヘッドの下のセルがゼロになるまで次のプロセスを繰り返すことにより、出力を生成する準備が整いました。

最初に、データヘッドの下のセルのコンテンツを1ユニット左に移動し、次にゼロ以外のコンテンツを持つ最後のセルまで左に移動します。

   v
0 65 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

ここで、すべてのセルを印刷します。データヘッドの下のセルから開始して、0セルが見つかるまで右に移動し、印刷後に各印刷セルをインクリメントします。印刷後A、テープは次のようになります。

     v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

ここで右に移動し、0のセルが見つかるまですべてのセルを再度印刷します。印刷後BCDEFGHIJKLMNOPQRSTUVWXYZ、テープは次のようになります。

                                                                                  v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

ここで、現在のセルに10を書き込み、対応する文字(改行)をget出力し、空の入力でを呼び出してセルをゼロにし、テープを変更せずに残します。

最後に、左の最後の非ゼロに移動して、次の反復のためにテープを準備します。

        v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

次の繰り返しも同様です。最初にセルを1つ左に移動し66、両方の66セルを印刷し(67BB)、それらを67にインクリメントしてから、残りの非ゼロセルを右に印刷し(CDEFGHIJKLMNOPQRSTUVWXYZ)、最後にデータヘッドを67に置き、テープを次のように残します。

           v
0 66 66 0 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

後は24回のより多くの反復と印刷後ZZZZZZZZZZZZZZZZZZZZZZZZZZや改行、テープには、以下の状態で残されています。

                                                                                  v
0 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 0 0

データヘッドを次の非ゼロセルまで左に移動すると、データヘッドは現在の位置のままになるため、その下のセルは0になり、ループは終了します。



6

Matlab / Octave、43 39バイト

@beakerの[...,''] charへの変換に使用するアイデアにより、1バイトが削除されました。

@()[91-rot90(gallery('minij',26),2),'']

これは、2D char配列を返す匿名関数です。

Ideoneで試してみてください

説明

gallery('minij',...) 各エントリがその行と列のインデックスの最小値に等しい行列を与えます:

 1     1     1     1  ...
 1     2     2     2
 1     2     3     3
 1     2     3     4
 ...

これは180度回転しrot90(...,2)ます:

26    25    24    23  ...
25    25    24    23
24    24    24    23
23    23    23    23
...  

この91-...操作は、大文字のASCIIコードを提供します。

65    66    67    68
66    66    67    68
67    67    67    68
68    68    69    68 ...
...

最後に[...,'']、空の文字列で水平方向に連結します。これには、charに変換する効果があります。


1
非常に巧妙な使用gallery
Suever

2
残念gallery('maxij',...)ですよね?;)
マーティン・エンダー

@MartinEnder完全に!:-)ところで、私はMathematicaの組み込みを待っています...
ルイスメンドー

あなたは長い間待っています、これは文字列ベースの挑戦です。:P
マーティンエンダー

6

PowerShell v2 +、76 52 40バイト

65..90|%{-join[char[]](,$_*$i+++$_..90)}

から65にループし89ます。各繰り返しは、我々は現在の数で構成され、カンマ演算子使用してアレイを構築している$_ポストインクリメントヘルパー変数を乗じた$i++現在の数の配列を連結し、$_にを90。それはchar-arrayキャストにカプセル化さ-joinれ、文字列にまとめられます。たとえば、最初の反復では、この配列は65..90、またはアルファベット全体に相当します。2番目の反復は66+66..90、またはB繰り返されるnoを持つアルファベット全体Aです。

これらはすべてプログラム終了時にパイプライン上に(配列として)残され、コンソールへの出力は暗黙的です(.ToString()配列のデフォルトは改行で区切られているため、無料で取得できます)。

PS C:\Tools\Scripts\golfing> .\print-the-l-phabet.ps1
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

6

C#、147バイト

void e(){for(int i=0,j=97;i<26;i++,j++)Console.WriteLine(new string((char)j,i)+new string(Enumerable.Range(j,26-i).Select(n=>(char)n).ToArray()));}

時々、なぜ私もしようとしているのだろう

編集:それを修正

オンラインで試す


私も実際にはコンソールを使用しているので、だれもしないSystem.Consoleを入力する必要があります。
downrep_nation

「仕事と短くなるが、私はわからないので、私は唯一のJavaを知っている可能性があり、」J = 97を設定することを検討し、私は(文字)J + I +をbeilieve
ロハンJhunjhunwala

jは最初の文字のオフセットとして使用されます。j = 97を実行する場合、j ++も実行する必要があります
-downrep_nation

2
何悲しいのはbrainfuckソリューションよりもその〜50%が長いことである
fyrepenguin

1
これを実行しても正しい答えが出力されません。リンクを追加して試してください。
TheLethalCoder

5

MATL、10バイト

lY2t!2$X>c

オンラインデモ(あなたはこのインタプリタに問題がある場合は、で私にpingを送信 MATLチャットは。また、ここであなたは問題がある場合はTIOのリンクです)

説明

lY2     % Push an array of characters to the stack: 'AB...Z'
t!      % Duplicate and transpose
2$X>    % Take the element-wise maximum between these two (with expansion)
c       % Explicitly convert back to characters
        % Implicitly display the result.

5

Python 2、76 70 68バイト

a=range(65,91)
i=0
for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a)

リンクされた質問に対する私の答えに非常に似ています

@xnor(再び)のおかげで2バイト節約されました!


1
前と同じように、繰り返し処理される現在の文字を使用するようexecに変更forする方が短くなりますfor c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a)
-xnor



4

05AB1E、9バイト

コード:

AAv¬N×?=¦

説明:

AA         # Push the alphabet twice.
  v        # For each in the alphabet.
   ¬       # Get the first character and
    N×     # multiply by the iteration variable.
      ?    # Pop and print.
       =   # Print the initial alphabet without popping.
        ¦  # Remove the first character of the initial alphabet and repeat.

CP-1252エンコードを使用します。オンラインでお試しください!


4

Javascript ES6、81バイト

x=>[...a='ABCDEFGHIJKLMNOPQRSTUVWXYZ'].map((x,y)=>x.repeat(y)+a.slice(y)).join`
`

一目瞭然。


[... "LETTERS"]。mapのようなものは短くなりますか?
MayorMonty

それは私の最初のアプローチでしたが、2バイト長くなりました。
ママファンロール

それが、このチャレンジを見たときに考えたアプローチでした
-MayorMonty

一般に、文字列を文字ごとに繰り返す場合はreplaceover を使用する方が適切mapです。
ママファンロール

1
ではa.slice(y)どこ変数がないaから来るの?
gcampbell

4

R、56バイト

コメントする担当者はいませんが、@ plannapusの回答は次のように少し削ることができます。

for(i in 1:26)cat({L=LETTERS;L[1:i]=L[i];L},"\n",sep="")

同じ出力になります:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

ただし、マトリックスとしての回答が許可されている場合(つまり、次のように)、49バイトを実行できます。

sapply(1:26,function(l){L=LETTERS;L[1:l]=L[l];L})

私はあなたの答えに彼をリダイレクト@plannapus'の答えにコメント左
KritixiのLithos

これは良いことですが、まだ短いアプローチがあります
ジュゼッペ

4

R42 41バイト

write(outer(L<-LETTERS,L,pmax),'',26,,'')

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

次に短いRの答えはあまりにも長い間、それは行ごとに出力しますので、まだ少しあります。私はこの1つの可能なた以前の今日別の質問を考えるとはるかに短いアプローチを実現した:私はすべてを一度に使用して行列を生成outerし、pmax(パラレル最大)をし、その後で1つのステップで(*)それを印刷しますwrite

(*)技術的には転置ですが、幸いなことに対角線を挟んで対称です。


3

Haskell、53 46バイト

unlines[(i<$['B'..i])++[i..'Z']|i<-['A'..'Z']]

Lファベットで単一の文字列を返します。

iからAまでの文字を調べて、Z(length ['B'..i])コピーのリストを作成i[i..'Z']ます。間に改行を入れて要素を結合します。


3

Python 3、71 65バイト

-6バイトの@LeakyNunに感謝

r=range(26)
for i in r:print(''.join(chr(max(i,x)+65)for x in r))

STDOUTに出力する完全なプログラム。

使い方

0for Aから25forのアルファベット文字に文字コードを割り当てZます。プログラムは、繰り返し対象の現在の文字と繰り返しセクションの長さを決定[0, 25]する行カウンタi、および文字インデックスで間隔をループしますx。を呼び出すことによりmax(i,x)、繰り返し文字の下のすべての文字が同じ文字コードに固定されます。追加65して呼び出すとchr、結果の文字コードが対応するASCIIコードに変換されます。''.join文字を連結し、各行がSTDOUTに出力されます。

Ideoneでお試しください


3

𝔼𝕊𝕄𝕚𝕟、12文字/ 15バイト

ᶐⓢ⒨Ċ_+ᶐč_)ü⬬

Try it here (Chrome Canary only).

基本的にはES6の回答の移植版です。


私はZZZZZZZZZZZZZZZ...一番下の行を取得していません。1つだけを取得しZます。
-cwallenpoole

どのブラウザを使用していますか?
ママファンロール


その負のスコアを取り除くために+1。Google Chromeでは機能しませんが、FireFoxでは機能します。
ケビンCruijssen 16

FFも試しましたが、うまくいきませんでした。しかたがない。-1を削除しました。
-cwallenpoole

3

R、54バイト

v=L=LETTERS;for(i in 2:26){L[1:i]=L[i];v=cbind(v,L)};v

このソリューションでは、R組み込み定数LETTERSを使用します。つまり、...大文字をリストします。letters小文字用の定数もあります。


私は少し気味が悪いですが、これは希望する正確なテキストではなく、マトリックスを出力します(つまり、希望する出力にはすべての引用符、スペース、行名、列名などを含めるべきではありません)。
プランナパス

3

C、78 70 67バイト

f(i,j){for(;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}

このコードは、Cに対して次のゴルフテクニックを使用します。

  • 基本的なインクルードを省略します(などstdio.h
  • 関数と変数のタイプを省略(リターン)し、デフォルトにします int
  • if-elseブロックの代わりに三項演算子を使用します
  • 文字の代わりに(つまりの65代わりに'A')文字のASCIIコードを使用する
  • putchar単一の文字を出力するために使用します
  • メインの引数リストを悪用する
  • puts("")改行を出力するために使用します

また、このルールIf it is a function, it must be runnable by only needing to add the function call to the bottom of the program.は、パラメーターを使用して関数を呼び出すことを禁止していません(ABcDexterのおかげです!)。

Ideoneでお試しください

使用されていないバージョン(gccによる警告なし)は次のようになります。

#include <stdio.h>

#define MAX(x, y) (x>y ? x : y)

int main()
{
    for(int i=0; i<26; i++)
    {
        for(int j=0; j<26; j++)
            printf("%c", MAX(i, j) + 'A');
        printf("\n");
    }
    return 0;
}

8バイト保存:f(i,j){for(i=0;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}。完全なプログラムは必要ありません。呼び出されるたびに同じ操作を実行する関数だけが必要です(これが必要です)。
-owacoder

@owacoderありがとう、修正しました。
sigalor

それを削除しi=0;て、関数呼び出しを次のようにできますf(0,0)か?
ABcDexter

1
@ABcDexterうん、それはうまくいくはずです(ルールIf it is a function, it must be runnable by only needing to add the function call to the bottom of the program.はこれを禁止していないようです、なぜなら関数呼び出しへのより良いパラメータが許可されているとは言えないからです)。とにかく、2番目のforループ(asカウンターを持つループ)の初期化が必要なので、とにかくmain呼び出しをさせます。f(0)j
sigalor

@sigalorはい、正確に。私はCで試してみましたが、あなたのコードが短いことが
わかりました

3

チェダー、90バイト

(|>26).map(i->String.letters.chars.map((j,k,l)->k<i?l[i]:j).fuse).vfuse.slice(1)

それはString.letters長すぎます:/

.slice(1)主要な改行が許可されていないため、を追加する必要がありました

説明

(|>26)       // Range from [0, 26)
.map(i->     // Loop through that range
 String.letters.chars // Alphabet array
  .map(               // Loop through alphabet
  (j,k,l) ->          // j = letter, j = index, l = alphabet
    k<i?l[i]:j        // Basically `l[max(k,i)]` 
  ).fuse     // Collapse the array
).vfuse      // Join on newlines

チェダー、65バイト(非競合)

(|>26).map(i->String.letters.map((j,k,l)->k<i?l[i]:j).fuse).vfuse

で動作します毎晩ブランチ。競合しない...悲しい部分は、すでに変更が加えられていることです...コミットされたことはありません; _;


65@"90String.lettersの作品のようなものだと思った
コナーオブライエン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.