紛らわしいアルファベット階段


25

入力がない場合、受け入れられた出力方法を介して、どちらの場合でもこの興味深いアルファベットパターンを出力します(大文字と小文字が一致している必要があります)。

A
AB
ACBC
ADBDCD
アベケデ
AFBFCFDFEF
AGBGCGDGEGFG
AHBHCHDHEHFHGH
AIBICIDIEIFIGIHI
AJBJCJDJEJFJGJHJIJ
AKBKCKDKEKFKGKHKIKJK
ALBLCLDLELFLGLHLILJLKL
AMBMCMDMEMFMGMHMIMJMKMLM
ANBNCNDNENFNGNHNINJNKNLNMN
AOBOCODOEOFOGOHOIOJOKOLOMONO
APBPCPDPEPFPGPHPIPJPKPLPMPNPOP
AQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQ
ARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQR
ASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRS
ATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTST
AUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURSTU
AVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUV
AWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVW
AXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXTXVVXWX
AYBYCYDYEYFYGYHYYYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXY
AZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZ

末尾のスペースと改行は許容され、標準の抜け穴は許可されません。これはたまたまであるため、バイト単位の最短回答が優先されます。



ところで、驚くべき答えが見られたら、50 rep
FantaC

13
リーダーはA本当に私のために物事を台無しにします...
ETHproductions

2
一部の人々は、私が思うこの種の課題を単純に嫌います。
ジョナサンアラン

1
@ETHproductionsそれは私にとって物事を簡素化します!
ニール

回答:


5

Canvas、7 バイト

Z[K*¹+]

ここで試してみてください!

説明:

Z[     ] for each prefix of the uppercase alphabet
    K        pop off the last letter
     *       and join the rest of the string with that character
      ¹+     and append the current iterated character to it

以前の回答を編集しなかったのはなぜですか?
ニール

@ニール良い質問。わからない
-dzaima

受け入れました!ゼリーとチャコールを2バイト倒しました!
FantaC

8

ゼリー、9バイト

ØAjṪ$Ƥż¹Y

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

使い方

ØAjṪ$Ƥż¹Y  Main link. No arguments.

ØA         Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
     Ƥ     Map the link to the left over all prefixes, i.e., ["A", "AB", ...].
    $        Combine the two links to the left into a chain.
   Ṫ           Tail; yield and remove the last letter of each prefix.
  j            Join the remainder, using that letter as separator.
      ż¹   Zip the resulting strings and the letters of the alphabet.
        Y  Separate the results by linefeeds.

2
ああ、ハハと私はちょうど投稿しようとしていたØAjṪ$ƤżØAY:D
ジョナサンアラン



6

、9バイト

Eα⁺⪫…ακιι

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:

 α          Predefined uppercase alphabet
E           Map over each character
    …ακ     Get current prefix of alphabet
   ⪫   ι    Join with current character
  ⁺     ι   Append current character
            Implicitly print on separate lines


4

6502マシンコードルーチン(C64)、39バイト

A9 41 20 D2 FF AA A8 84 FB E4 FB B0 0B 8A 20 D2 FF 98 20 D2 FF E8 D0 F1 A9 0D
20 D2 FF A2 41 C0 5A F0 03 C8 D0 E1 60

位置に依存しないマシンコードサブルーチン、クロバーA、X、およびY。

オンラインデモ

デモはでロードされる$C000ため、を使用SYS49152してルーチンを呼び出します。


コメント付きの分解:

A9 41       LDA #$41            ; 'A'
20 D2 FF    JSR $FFD2           ; Kernal CHROUT (output character)
AA          TAX                 ; copy to X (current pos)
A8          TAY                 ; copy to Y (current endpos)
  .outerloop:
84 FB       STY $FB             ; endpos to temporary
  .innerloop:
E4 FB       CPX $FB             ; compare pos with endpos
B0 0B       BCS .eol            ; reached -> do end of line
8A          TXA                 ; current pos to accu
20 D2 FF    JSR $FFD2           ; and output
98          TYA                 ; endpos to accu
20 D2 FF    JSR $FFD2           ; and output
E8          INX                 ; next character
D0 F1       BNE .innerloop      ; (repeat)
  .eol:
A9 0D       LDA #$0D            ; load newline
20 D2 FF    JSR $FFD2           ; and output
A2 41       LDX #$41            ; re-init current pos to 'A'
C0 5A       CPY #$5A            ; test endpos to 'Z'
F0 03       BEQ .done           ; done when 'Z' reached
C8          INY                 ; next endpos
D0 E1       BNE .outerloop      ; (repeat)
  .done:
60          RTS

3

Java 8、93 91 90バイト

v->{String t="";for(char c=64;++c<91;t+=c)System.out.println(t.join(c+"",t.split(""))+c);}

-1バイトのおかげで@OlivierGrégoireを直接印刷する代わりに返すことによって、

説明:

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

v->{                     // Method with empty unused parameter and String return-type
  String t="";           //  Temp-String, starting empty
  for(char c=64;++c<91;  //  Loop over the letters of the alphabet:
      t+=c)              //    After every iteration: append the letter to the temp-String
    System.out.println(  //   Print with trailing new-line:
       r.join(c+"",t.split(""))
                         //    The temp-String with the current letter as delimiter
       +c);}             //    + the current letter as trailing character 

2
90バイト(返す代わりにstdoutを使用するだけ)。
オリビエグレゴワール

いい答えだ!私はそれが短かったかどうかを確認するためにC#に移植し、私は91(Iが含まれている場合多くを得るSystem.:))
aloisdgは回復モニカ言う

3

SNOBOL4(CSNOBOL4)169 143バイト

i &ucase len(x) . r len(1) . s
 o =
 i =
t r len(i) len(1) . k :f(o)
 o =o s k
 i =i + 1 :(t)
o o s =
 output =o s
 x =lt(x,25) x + 1 :s(i)
end

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

i &ucase len(x) . r len(1) . s	;* set r to the first x characters and s to the x+1th.
 o =				;* set o,i to empty string
 i =
t r len(i) len(1) . k :f(o)	;* set k to the ith letter of r. on failure (no match), go to o.
 o =o s k			;* concatenate o,s,k
 i =i + 1 :(t)			;* increment i, goto t
o o s =				;* remove the first occurrence of s (the first character for x>1, and nothing otherwise)
 output =o s			;* output o concatenated with s
 x =lt(x,25) x + 1 :s(i)	;* increment x, goto i if x<25.
end

ここの問題は最初の行です

を使用o s kすると、s各行の先頭に余分な区切り文字が追加され、末尾にも追加されませんs。行tが次の2 行を飛び越えるので、これは問題ありませんx=0。これは、o空白のままであることを意味します。したがって、からo s =最初のs文字を削除し、適切なlastを持つようにo単純に印刷できます。o ss


2

JavaScript(ES6)、81バイト

f=
_=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ"].map((c,i,a)=>a.slice(0,i).join(c)+c).join`
`
;document.write('<pre>'+f());

文字列配列の戻り値が受け入れられる場合、9バイトを節約します。


2

Japt-Rフラグ)、14 12バイト

@Shaggyのおかげで-2バイト

;B¬
ËiU¯E qD

オンラインでテストしてください!


のショートカットがあればs0,!; p
シャギー

12バイト。しかし、なぜ-Rここを数えないのですか?
シャギー

@Shaggy Ohうわー、私は何かを見逃していることを知っていた:P iトリックは素晴らしい、ありがとう!フラグについては、プログラムの一意の呼び出しはそれぞれ個別の言語と見なされるべきであるという新しいコンセンサスがあるようです。(これにより、Japtのフラグシステムは一種のチートに見えます...)
ETHproductions


2

PowerShell、56バイト

"A";65..89|%{([char[]](65..$_)-join[char]++$_)+[char]$_}

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

ループ6589構築各反復charの配列65現在の数には$_、次いで、-joinそのアレイは、その性質上、鋲、最後に、その後、次の文字を含む文字列に一緒です。

89他のASCII番号に変更して、動作を改善します。


2

> <>44 34バイト

"BA"oao"ZA"\=?;1+40.
o1+:{::o}=?\:

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

> <>、44バイト

"A"o10ao\55*=?;1+40.
1+:{:}=?\:"A"+o{:}"A"+o

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

出力を生成するために別のルートを使用しているため、独自の> <>回答を投稿しました。他の<>回答はここにあります。

発見してくれたジョー・キングに感謝します。26の代わりに「Z」と比較した場合、スタックに「A」を入れ続ける必要はありませんでした。(-10バイト)

説明

説明はコードの流れに従います。

"BA"                 : Push "BA" onto the stack;
                       [] -> [66, 65]
    oao              : Print the stack top then print a new line;
                       [66, 65] -> [66]
       "ZA"\         : Push "ZA" onto the stack then move down to line 2;
                       [66, 90, 65]
o          \:        : Duplicate the stack top then print
 1+:                 : Add one to the stack top then duplicate;
                       [66, 90, 65, 65]
    {::              : Shift the stack right 1 place then duplicate the stack top twice;
                       [90, 65, 65, 66, 66]
       o}            : Print the stack top then shift the stack left 1 place;
                       [66, 90, 65, 65, 66]
         =?\         : Comparison for equality on the top 2 stack items then move to line 1 if equal otherwise continue on line 2;
                       [66, 90, 65]
           \=?;      : Comparison for equality on the top 2 stack items then quit if equal else continue on line 1;
                       [66]
               1+    : Add 1 to the stack top;
                       [67]
                 40. : Move the code pointer to column 4 row 0 of the code box and continue execution of code. 

36バイト。あなたの方法は私の方法よりも優れています
ジョーキング

inb4 "取り消し線44はまだ44;("
ジョーキング

@JoKing Zとの比較で優れた点です。ラインロジックを移動し、Zをスタックアイテムの中央に配置して、それらの引用符を使用して再度保存することだけが改善されました。
ティールペリカン



1

ゼリー、13バイト

ØA¹Ƥ+"¹Ṗ€Yṭ”A

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

説明

ØA¹Ƥ+"¹Ṗ€Yṭ”A  Main Link
ØA              Uppercase Alphabet
  ¹Ƥ            Prefixes
    +"¹         Doubly-vectorized addition to identity (uppercase alphabet) (gives lists of lists of strings)
       Ṗ€      a[:-1] of each (get rid of the double letters at the end)
         Y     Join on newlines
          ṭ”A  "A" + the result

Jellyの文字列と文字リストの違いを部分的に悪用


早かった!
FantaC

@tfbninjaえー、ジェリーは11分で大丈夫です。ありがとう
ござい

2番目ØA¹(デニスのように)に置き換えることができます
ジョナサンアラン

@JonathanAllanすごい、ありがとう!
ハイパーニュートリノ


1

APL + WIN、51バイト

⍎∊'a←⎕av[65+⍳26]⋄a[n←1]',25⍴⊂'⋄,⊃a[⍳n-1],¨a[n←n+1]'

説明:

a←⎕av[65+⍳26] create a vector of upper case letters

a[n←1] first A

25⍴⊂'⋄,⊃a[⍳n-1],¨a[n←n+1]' create an implicit loop to concatenate subsequent letters

1

> <>、47バイト

d2*:1-v
-&$:?!\$:&$:1
1-:?!v\69*-$1-:
+*88~< 1o

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

使い方:

d2*:1-v Initialise the stack with 26 (outer loop counter) and 26-1 (inner loop counter)
....
....
....

....
-&$:?!\$:&$:1 Repeatedly make copies of both counters
....          And decrement the inner loop counter
....          Go to third line when inner loop counter is 0

....            Add -54 to the stack (for the newline) and decrement the outer loop counter
....            Initialise the inner loop counter as outer-1
1-:?!v\69*-$1-: If the inner counter is 0, go to the fourth line, else back to the second.
....

....
....      
....      Transform numbers and -54s into letters and newlines by adding 64
+*88~< 1o Output each character until it runs out of stack and errors



1

GNU M4、119バイト

これまでの最悪。さて、時間はすでに費やされています...

define(f,`ifelse($1,$2,,`format(%c%c,$1,$2)`'f(incr($1),$2)')')define(g,`f(65,$1)ifelse($1,90,,`
g(incr($1))')')A
g(66)

1

、13バイト

Γ·:mhSzJḣ…"AZ

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

説明

このリードはA本当に物事を台無しにします-.-

          "AZ  -- string literal: "AZ"
         …     -- fill gaps: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     S         -- with alphabet and
        ḣ      -- | alphabet rangified: ["A","AB","ABC",…,"AB……XYZ"]
      zJ       -- : zipWith join: ["A","ABB","ACBCC","ADBDCDD",…,"AZB……ZYZZ"]
Γ              -- pattern match (x:xs) with the following function (x is "A" and xs ["ABB","ACBCC",…,"A……ZYZZ"]
 · mh          -- | drop the last element of each element of xs: ["AB","ACBC",…,"A……ZYZ"]
  :            -- | cons (construct list): ["A","AB","ACBC",…,"A……ZYZ"]
               -- : strings are printed implicitly

1

C#(.NET Core)

Kevin Cruijssenの回答のポート:

91 90バイト

_=>{var t="";for(char c='@';++c<91;t+=c)Console.WriteLine(string.Join(c+"",t.Skip(0))+c);}

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

132の 122 110 109 104 103バイト

_=>"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Select((c,i)=>string.Join(""+c,"ABCDEFGHIJKLMNOPQRSTUVWXYZ".Take(i))+c)

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

  • と置き換え()_、未使用の変数を宣言することを示します。Kevin Cruijssenに感謝します。

Javaの回答で行ったように、空の未使用のパラメーターを使用して、90バイトに減らすこともできます。のo=>{...}代わりに()=>{...}オンラインで試してください:90バイト
ケビンクルーッセン

@KevinCruijssen知らなかった!ありがとうございました!
aloisdgは、

@KevinCruijssen私はこのヒントを追加したC#のコード・ゴルフのためのヒント
aloisdgは回復モニカ言う

1

ゼリー、22バイト

ØAż€Ð€`F€µJ’Ḥ»1ż@¹ḣ/€Y

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

使い方:

                       take argument implicitly
ØA                     the uppercase alphabet
    Ѐ`                for C in the alphabet
  ż€                     appends C to every letter in the alphabet
       F€              flatten every sublist
          J            get indices
           ’           subtract 1
            Ḥ          and double
             »1        take max([n, 1])
         µ     ż@¹     interleave alphabet list and indices
                  ḣ/€  reduce on head() for each element
                     Y join on newline
                       implicitly output




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