Kafa karıştırıcı Alfabe Merdiveni


25

Giriş yapılmazsa, bu ilginç alfabe desenini her iki durumda da (tutarlı olması gerekir) kabul edilen bir çıkış yöntemi ile çıkartın :

bir
AB
ACBC
ADBDCD
AEBECEDE
AFBFCFDFEF
AGBGCGDGEGFG
AHBHCHDHEHFHGH
AIBICIDIEIFIGIHI
AJBJCJDJEJFJGJHJIJ
AKBKCKDKEKFKGKHKIKJK
ALBLCLDLELFLGLHLILJLKL
AMBMCMDMEMFMGMHMIMJMKMLM
ANBNCNDNENFNGNHNINJNKNLNMN
AOBOCODOEOFOGOHOIOJOKOLOMONO
APBPCPDPEPFPGPHPIPJPKPLPMPNPOP
AQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQ
ARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQR
ASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRS
ATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTST
AUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTU
AVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUV
AWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVW
AXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWX
AYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXY
AZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZ

Sondaki boşluklar ve yeni satırlar kabul edilebilir, standart boşluklar kullanılmaz ve bu , bu yüzden bayt cinsinden en kısa cevap kazanır!



Btw inanılmaz bir cevap görürsem, 50 rep
ödeyeceğim

13
Lider Agerçekten ... benim açımdan işleri haberci
ETHproductions

2
Bazı insanlar bence bu tür zorlukları sevmiyorlar.
Jonathan Allan,

1
@ETHproductions Benim için işleri kolaylaştırıyor!
Neil

Yanıtlar:


5

Tuval , 7 bayt

Z[K*¹+]

Burada dene!

Açıklama:

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

Neden önceki cevabınızı düzenlemediniz?
Neil

@Neil iyi bir soru. Emin değilim
dzaima

Kabul edilmiş! Jelly ve Charcoal'ı iki byte yendin!
FantaC

8

Jöle , 9 bayt

ØAjṪ$Ƥż¹Y

Çevrimiçi deneyin!

Nasıl çalışır

Ø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
Aa, haha ​​ve ben neredeyse postalamak üzereydik ØAjṪ$ƤżØAY: D
Jonathan Allan,


6

R , 50 bayt

l=LETTERS
for(i in 0:25)cat(l[0:i],"
",sep=l[i+1])

Çevrimiçi deneyin!

Belki de buradaki en zeki kısım letters[0]boş dizgenin cat(character(0),'\n',sep="A")ilk satırı basmak için kullanmasıdır.


6

Kömür , 9 bayt

Eα⁺⪫…ακιι

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Açıklama:

 α          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 makine kodu rutini (C64), 39 bayt

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

Konumdan bağımsız makine kodu alt yordamı, pelerinler A, X ve Y

Çevrimiçi demo

Demo yüklendi , rutini çağırmak için $C000kullanın SYS49152.


Yorum yapılan sökme:

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 bayt

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

@ OlivierGrégoire sayesinde doğrudan iade etmek yerine baskı yaparak -1 bayt

Açıklama:

Çevrimiçi deneyin.

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 bayt (sadece yerine stdout kullanarak).
Olivier Grégoire

Güzel cevap! Daha kısa olsaydı ben görmek için C # taşıdık ve ben (ı dahil daha eğer 91 olsun System.) :)
aloisdg eski durumuna Monica diyor

3

SNOBOL4 (CSNOBOL4) , 169 143 bayt

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

Çevrimiçi deneyin!

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

Buradaki sorun ilk satır

kullanarak , her satırın başına o s kek bir sayırıcı karakter ekleyecek sve sonunda bir sonu olmayacaktır . Bu TAMAM çünkü satır taşağıdaki iki satırın üstünden atlayacaktır x=0. Bu o, yine de boş olacağı anlamına gelir . Bu nedenle, o s =ilk skarakteri alandan kaldıracak ove sonra o suygun sonuncuyu elde etmek için basitçe yazdırabiliriz s.


2

JavaScript (ES6), 81 bayt

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

Bir dize dizisi dönüş değeri kabul edilebilir ise 9 bayt kaydedin.


2

Japt ( -Rbayrak), 14 12 bayt

@Shaggy sayesinde -2 bayt

;B¬
ËiU¯E qD

Çevrimiçi test edin!


Keşke bir kestirme daha olsaydı s0,! ; p
Shaggy,

12 bayt . Ama neden -Rburada saymıyorsun ?
Shaggy

@Shaggy Oh vay, bir şey kaçırdığımı biliyordum: P iPüf noktası harika, teşekkürler! Bayrağa gelince , bir programın her benzersiz çağrısının ayrı bir dil olarak kabul edilmesi gerektiği konusunda yeni bir fikir birliği var gibi görünüyor . (Bu, Japt'un bayrak sistemini biraz aldatıcı hale getiriyor ...)
ETH sunumları


2

PowerShell , 56 bayt

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

Çevrimiçi deneyin!

Döngüler 65için 89, bir inşa her bir tekrar chardizisi 65mevcut sayıya $_sonra,-join sonraki karaktere sahip bir dizeye birlikte bu diziyi s, ardından sonunda bu karakter üzerinde çiviler.

Değişim 89iyi davranışı görmek için diğer bazı ASCII numarasına.


2

> <> , 44 34 bayt

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

Çevrimiçi deneyin!

> <> , 44 bayt

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

Çevrimiçi deneyin!

Çıktıyı üretmek için farklı bir rota kullandığımda, kendime> <> cevabını gönderdim; Diğer> <> cevabı bulunabilir burada .

Jo King’e bulduğum için teşekkürler, 26 yerine "Z" ile karşılaştırdığımda yığına "A" koymaya devam etmeme gerek kalmadı. (-10 bytes)

açıklama

Açıklama kodun akışını takip edecektir.

"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 bayt . Yöntemin benimkinden çok daha iyi
Jo King

inb4 "çarpı 44 hala 44'tür; ("
Jo King

@JoKing Z'ye kıyasla mükemmel nokta, yaptığım sadece iyileştirme, satır mantığını hareket ettirmek ve Z'yi bu alıntı işaretlerini kullanarak kaydetmek için yığın öğelerinin ortasına koymaktı.
Teal Pelikan



1

Jöle , 13 bayt

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

Çevrimiçi deneyin!

açıklama

Ø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

dizelerin ve karakter listelerinin Jelly’de farklılık gösterme şeklini kısmen ihlal ediyor


Bu hızlı oldu!
FantaC,

@tfbninja ehhh, Jelly için 11 dakika tamam. Yine de teşekkürler: P
HyperNeutrino


@ JonathanAllan oh cool, teşekkürler!
HyperNeutrino


1

APL + WIN, 51 bayt

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

Açıklama:

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 bayt

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

Çevrimiçi deneyin!

Nasıl çalışır:

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 bayt

Şimdiye kadarki en kötüsü. Şey, zaman çoktan harcandı…

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

Kabuğu , 13 bayt

Γ·:mhSzJḣ…"AZ

Çevrimiçi deneyin!

açıklama

Bu lider Agerçekten işleri berbat ediyor.

          "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 Çekirdeği)

Kevin Cruijssen en Port cevap :

91 90 bayt

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

Çevrimiçi deneyin!

132 122 110 109 104 103 bayt

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

Çevrimiçi deneyin!

  • Kullanılmayan bir değişken bildirdiğimizi göstermek için ()ile değiştirin _. Teşekkürler Kevin Cruijssen.

Java cevabımda yaptığım gibi boş bir kullanılmamış parametre kullanarak da 90 bayta azaltabilirsiniz . Öyleyse o=>{...}yerine ()=>{...}. Çevrimiçi deneyin: 90 bayt .
Kevin Cruijssen

@KevinCruijssen Bilmiyordum! Teşekkür ederim!
aloisdg diyor 13: 33'te Monica

@KevinCruijssen Bu ipucunu C # kod kodlu golf
aloisdg Reinstate Monica

1

Jöle , 22 bayt

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

Çevrimiçi deneyin!

Nasıl çalışır:

                       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




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.