アルファベットの階段


30

チャレンジ

あなたのタスクは、入力なしで以下を出力するプログラムまたは関数を作成することです。

a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj
kkkkkkkkkkk
llllllllllll
mmmmmmmmmmmmm
nnnnnnnnnnnnnn
ooooooooooooooo
pppppppppppppppp
qqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrr
sssssssssssssssssss
tttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzz

得点

これはであるため、各言語で最も短い回答が優先されます。


4
行のリストとして出力しますか?
完全に人間

5
代わりに大文字のアルファベットを使用できますか?
ウリエル

9
アルファベットのチャレンジがありませんでした!(しかし、リーキー修道女に知らせないでください)
ルイスメンドー

9
私はそれがだまされているかどうかを非常に一生懸命チェックしましたが、明らかにそうではありません
ブルー

4
@totallyhumanそれはあなた次第です。
-SpookyGengar

回答:


14

05AB1E、2バイト

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

OPが明示的に許可しているため、これは行のリストとして出力することに注意してください。リンクでは、プリティプリント(改行で結合)されたバージョンが使用されます。

使い方

  • A 小文字のアルファベットを生成します。
  • ƶ アルファベットを持ち上げます(各要素にインデックスを乗算します)。
  • » 改行で結合します。


9

APL(Dyalog)12 8 5バイトSBCS

@ngnのおかげで3バイト節約

@Adámのおかげで4バイト節約

⍴⍨⌸⎕A

OPで明確にされた大文字は有効であり、文字列の配列として出力されます。

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

どうやって?

⎕Aインデックスを含むlphabet 内のすべての文字を提供⍴⍨し、文字を左引数として、インデックスesを右引数として関数に渡します。

⍴⍨reshaは、右引数を左引数で指定された長さに変換します。左右を切り替えます(したがって、この説明を読んでいる人の顔のように見えるそのシンボル)。


819⌶↑⎕A⍴¨⍨⍳26
アダム

@Adámありがとう!/と\のすべてのバリエーションを試しましたが、形状を完全に無視しました⍨–
Uriel

あなたはできる削除すぎ。
アダム

@Adámしかしbutいように見えるlook
Uriel

ボクシングをオンにします!
アダム

8

Haskell、27バイト

[c<$['a'..c]|c<-['a'..'z']]

オンラインでお試しください!行のリストを返します。(これが現在許可されていることを指摘してくれた@totallyhumanに感謝します)

説明:

             c<-['a'..'z']  -- for each character c from 'a' to 'z'
[           |c<-['a'..'z']] -- build the list of
[   ['a'..c]|c<-['a'..'z']] -- the lists from 'a' to c, e.g. "abcd" for c='d'
[c<$['a'..c]|c<-['a'..'z']] -- with each element replaced by c itself, e.g. "dddd"

*弓* noobの説明?<$最初の引数を繰り返すのn倍、nは 2番目の引数の長さですが?
完全に人間

@totallyhumanそこに行きます。Of Monads and Menで さらに質問がある場合は、お気軽にお問い合わせください。
ライコニ

Preludeには非常に興味深い演算子がいくつかあります...説明をありがとう!
完全に人間

7

brainfuck、74バイト

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

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

説明

++++++++[>+>+++>++++++++++++<<<-]>++>++>+>+
TAPE:
  000
  010   C_NEWLINE
  026   V_ITERCOUNT
  097   V_ALPHA
 >001<  V_PRINTCOUNT
  000   T_PRINTCOUNT

V_ITERCOUNT TIMES:      <<[-   

  V_PRINTCOUNT TIMES:     >>[-
    INC T_PRINTCOUNT        >+
    OUTPUT V_ALPHA          <<.
                          >]

  RESTORE V_PRINTCOUNT    >[-<+>]
  INC V_PRINTCOUNT        <+
  INC V_ALPHA             <+
  OUTPUT C_NEWLINE        <<.
                        >]

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


7

Befunge-98(FBBI)、27バイト

1+:0\::'`j'@+\k:$$>:#,_$a,

where は置換文字(ASCII 26)です

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

大文字を使用し、末尾に改行があります。

説明

コードは、カウンター(最初は0)を格納することで、すべてのループで機能します。

  • 1+ -1ずつ増加
  • :0\:: -スタックが次のようになるようにプッシュします: bottom [N, 0, N, N, N] top
  • '`j'@ -カウンターが26より大きいかどうかを確認します
    • j'@-もしそうなら、ジャンプして'終了して@
    • j'@ -そうでない場合は、実行します '、ASCII値を@スタックにプッシュします

スタックは次のようになります。 bottom [N, 0, N, N, 64] top

  • +\-追加してからトップ2に切り替えます:bottom [N, 0, (N+64), N] top 初回通過時、これはASCII 65、またはA
  • k:-上から2番目を複製します(N+1)- スタック上に(N+2)値が(N+64)あります(プラスN0以前から)
  • $$ -上位2つの値を捨てます-現在は N値ます(N+64)
  • >:#,_-各上位の値をaに達するまで出力します0-これは、N(N+64)印刷します、getのコピーが印刷されるます
  • $ -捨てる 0 -スタックはちょうどN
  • a, -エンターを印刷します

そして繰り返す


@プログラムの終了とカウンターへの追加の両方を使用した方法が気に入っています。


@JamesHoldernessうん。キャッチしてくれてありがとう!
MildlyMilquetoast



6

Excel VBA、38バイト

イミディエイトウィンドウを使用します。:)

[A1:A26]="=REPT(CHAR(96+ROW()),ROW())"

あ。私の悪い。イミディエイトウィンドウを使用してExcel関数を使用したため、Excelであると考えました。
remoel

あなたは、端末削除することでバイトをドロップすることができます"
テイラー・スコット


5

ルビー、38バイト

文字列の配列を返します

->{(a=*?a..?z).map{|x|x*-~a.index(x)}}

完全に人間のおかげで-5バイト

*ジョーダンによる素晴らしいゴルフのおかげで、-11バイト。


これは私のカウントではわずか48バイトです。
ヨルダン

1
まったく必要ありません"\n"putsそれはあなたのために行います(ただし、将来の参照で$/は2バイト短くなります)puts。また、変更することができますa=[*?a..?z];puts a.mapputs (a=*?a..?z).mapしてx*(a.index(x)+1)までx*-~a.index(x)。全部で38バイトです。
ヨルダン

38バイトバージョンはTiOで正常に動作します(前のコメントのリンクを参照)。(a=*?a..?z)は、ラムダの引数部分ではなく、ブロック内にあることに注意してください。
ヨルダン


4

MATL、9バイト

2Y2"@X@Y"

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

説明

2Y2     % Push string 'abc...z'
"       % For char in that string each
  @     %   Push current char
  X@    %   Push iteration index (1-based)
  Y"    %   Run-length decoding: repeat char that many times
        % Implicit end. Implicit display

なぜ&複製と転置に2Y2使用できないのか知っていますか?
スティービーグリフィン

@StewieGriffin &は実際には複製および転置を行いませんが、それと同じ結果になる場合があります。次の関数の入力/出力の数を変更します。たとえば、を使用する&+場合、+関数は2つではなく1つの入力を受け取り、転置された入力の合計を出力します。しかし、それは、それ+ が1つの入力で動作する方法だからです(=>および他のいくつかと同じ)
ルイスメンドー


4

ゼリー 5  4 バイト

卑劣なPython実装の悪用

Adámのおかげで-1バイト(行のリストの出力が許可されました。現在、プログラムではなく関数を記述しています)

Øa×J

文字列、行のリストを返すニラディックリンク
(改行で完全なプログラムとして印刷するには、単に追加Yしてください)。

オンラインでお試しください!(フッターはリンクをnilad(¢)として呼び出し、結果のPython表現()を取得しŒṘて、デフォルトのフルプログラム動作が結果を一緒に破壊するので、明確にしますabbccc...

どうやって?

Øa×J - main link: no arguments
Øa   - yield the alphabet = ['a','b','c',...,'z']
   J - range of length    = [1,2,3,...,26]
  ×  - multiplication     = ["a","bb","ccc",...,"zzzzzzzzzzzzzzzzzzzzzzzzzz"]
     - (Python multiplication lengthens chars to strings - not usually a Jelly thing)

1
Øa×J 十分なはずです。
アダム

うーん、たぶん-行のリストを「出力」できますが、「プログラムを作成」する必要があります-プログラムとして実行する場合、4バイトの出力はリストの性質を示さないために破壊されます。
ジョナサンアラン

プログラムまたは機能
アダム

4

MATL、11バイト

2Y2t!g*!YRc

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

ブロードキャスト乗算に1を使用して、目的の文字の大きな正方形26x26マトリックスを取得します。次に、下の三角形の部分が取得され、暗黙的に印刷されます。

また11バイト:

2Y2!t~!+YRc  % Using broadcast addition with zeroes
2Y2!l26X"YR  % Using 'repmat'

@StewieGriffin私は実際に、同じ解決策を思いついた偶然のOctaveの回答について途中でコメントしていました。
Sanchises

4

Javascript、87バイト、72バイト(@steenberghに感謝)

私の最初の答えも:

for(i=1,j=97;j<123;){console.log(String.fromCharCode(j++).repeat(i++))};

ようこそ!ind=1最初のスペース、その後のセミコロンi<123、最後のセミコロンを削除することで、少し短くすることができます。また、言語を指定してヘッダーをもう少し明確にしてください-バイトカウント、#の接頭辞。
-steenbergh

j完全にドロップすることで、6バイトを節約できますfor(i=1;i<27;){console.log(String.fromCharCode(i+96).repeat(i++))}
。– steenbergh

@steenbergh、もう一度あなたに感謝します。
NTCG

4

ジャプト9 7バイト

行の配列を出力します

;C¬Ëp°E

それを試してみてください


説明

¬小文字のアルファベット(;C)を文字の配列に分割()し、配列(Ë)にマッピングしp、現在の要素を現在のインデックスE°)回インクリメント()回繰り返します()。


私が使用した以外、私は、持っていたまさに®p°Y
ETHproductions

3

ピップ、9バイト

FczPcX++i

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

擬似コードでは、これは

For-each c in z
    Print (c string-multiply ++i)

どこz小文字のアルファベットに事前設定されており、i0に設定されています。


マップベースのソリューションは-n、複数行に表示するフラグが必要なため、1バイト余分に必要です。

{aX++i}Mz
B X_+1MEz

3

Acc !! 、66バイト

Count i while 26-i {
Count j while i+1-j {
Write 97+i
}
Write 10
}

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

コメント付き

# Loop i from 0 to 25
Count i while 26-i {
    # Loop j from 0 to i (inclusive)
    Count j while i+1-j {
        # Print a letter
        Write 97+i
    }
    # Print a newline
    Write 10
}


3

R、38バイト

比較的面白くない答え。i1から26まで反復しi、アルファベットi時間の文字を印刷します(暗黙的な改行付き)。

for(i in 1:26)print(rep(letters[i],i))

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

より興味深いアプローチは、次のようなものを使用することです。

cat(letters[(1:351*2)^.5+.5])

これにより、適切な量のすべての文字が得られますが、改行はありません。おそらく私よりも賢い人なら、それを使ってゴルファーの答えを出す方法を見つけられるでしょう。


2
2番目のアプローチの使用方法もわかりませんが、rep(letters, 1:26)もっと短いことはわかっています
ジュゼッペ

@Giuseppe Hah!私が言ったように、「私より賢い人」が絶対に必要です。
rturnbull




3

J18 17バイト

a.{~(#"0+&96)i.27

説明:

              i.27      - list of integers 0 - 26
     (   +&96)          - adds 96 to the above list (starting offset of 'a')
      #"0               - copies the right argument left argument times  
  {~                    - select items from a list (arguments reversed)
a.                      - the whole alphabet


#"0 +&96 is a hook, which means that at first +96 is applied to the list i.27,
resulting in a list 96, 97, 98... 122, then #"0 is applied to this result. 
So it is evaluated as ((i.27)#"0(96+i.27)){a:

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



3

オクターブ25 24バイト

['',tril((x=65:90)'+~x)]

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

OPが大文字を許可することを通知してくれたGiuseppeに感謝します。

説明:

x大文字のアルファベットのASCII値でベクトルを作成し、転置します。x(のASCII値)でグリッドを作成するために、否定(行ベクトルで26個のゼロ)を追加します。

AAAA
BBBB
CCCC

下三角行列を取得し、空の文字列と連結して文字に変換します。


3

C(gcc)48バイト 50バイト

以下のコメントのcleblancおよびSteadyboxによると、再実行可能なバージョン。

s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}

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


1
いい答えだ。あなたの関数は次に呼び出されたときに失敗し、このリンクによれば再利用できるはずです。codegolf.meta.stackexchange.com/questions/4939/...
cleblanc

50バイトの固定バージョンを次に示します。s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}まだ数バイトだけ私の答えを打ち負かしています:)
Steadybox


3

ジャプト、17 16 11バイト

Oliverのおかげで-5バイト

ISO-8859-1で

;26ÆCgX pXÄ

最高のスコアではありませんが、私はまだ初心者です。どんな提案も大歓迎です。

OPが許可するように、行のリストを出力します。リンクには、改行用にさらに3バイトが含まれます。

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

;                      - Use string variables
 26                    - Literal 26
   Æ                   - For range 0..26
    C                  - Alphabet
     gX                -         . character at index X
        pXÄ            - Duplicate X+1 times
                       - End function (implicit)

1
いいね!1oBÊÄに置き換えることができます26õ。あなたのような何かをすることによって、カップルより多くのバイトを保存することができます;26ÆCgX pXÄ
オリバー

@Oliver 26がアルファベットの長さよりも短いとは思いませんでした。ありがとう。また、私の悪い私は引数をo取ることが見つかりませんでしたf
...-RedClover
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.