Alfabe Merdiveni


30

Meydan okuma

Göreviniz, girişleri olmayan ve aşağıdakileri veren bir program veya işlev oluşturmak:

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

puanlama

Bu , yani her dilde en kısa cevap kazanır.


4
Satır listesi olarak çıktı?
tamamen insan

5
Bunun yerine büyük harfli alfabe kullanabilir miyiz?
Uriel

9
Alfabe zorluklarını özlüyordum! (ama Leaky Nun’un bilmesine izin verme)
Luis Mendo

9
Dupe olup olmadığını kontrol etmek çok çalıştım ve görünüşe göre öyle değil
Blue

4
@totallyhuman size kalmış.
SpookyGengar

Yanıtlar:


14

05AB1E , 2 bayt

Çevrimiçi deneyin!

OP'nin açıkça izin verdiği şekilde, bunun bir satır listesi olarak çıktığını unutmayın. Bağlantı, oldukça baskısı olan bir sürüm kullanır (yeni satırlara eklenir).

Nasıl çalışır

  • A küçük harfli alfabeyi verir.
  • ƶ alfabeyi kaldırır (her bir öğeyi dizini ile çarpar).
  • » newlines tarafından katılır.


9

APL (Dyalog) , 12 8 5 bayt SBCS

@Ngn sayesinde 3 bayt kaydedildi

@ Adám sayesinde 4 bayt kaydedildi

⍴⍨⌸⎕A

OP ile açıklığa kavuşturulmuş büyük harfler geçerlidir, ayrıca bir dizi dizge olarak verilir.

Çevrimiçi deneyin!

Nasıl?

Bize her mektup veren ⎕Aişleve uzattı o da endeksler, ile lphabet ⍴⍨sol argüman ve indeks olarak harfi ile es doğru argüman olarak.

⍴⍨yeniden soldaki tarafından verilen uzunluğa doğru argümanını değiştirir. sola ve sağa kaydırır (bu nedenle, bu açıklamayı okuyan birinin yüzüne benzeyen sembolü).


819⌶↑⎕A⍴¨⍨⍳26
Ad

@ Adám teşekkürler! Tüm ve / ve \ varyasyonlarını tamamen göz ardı edilen şekil tried
Uriel

Siz de kaldırabilirsiniz .
Ad

@ Adám ama daha çirkin görünürdü ⍨
Uriel

Boksu aç!
Ad

8

Haskell , 27 bayt

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

Çevrimiçi deneyin! Satır listesini döndürür. (Buna izin verildiğine işaret ettiği için @totallyhuman'a teşekkürler)

Açıklama:

             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"

* yaylar * Bir noob için açıklama? Does <$ilk argüman tekrarlamak n defa n ikinci argüman uzunluğudur?
tamamen insan

@totallyhuman Oraya gitmek. Başka sorularınız varsa Of Monads and Men'de sormaktan çekinmeyin .
Laikoni

Prelude'de çok ilginç bazı operatörler var ... Açıklama için teşekkürler!
tamamen insan

7

brainfuck , 74 bayt

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

Çevrimiçi deneyin!

açıklama

++++++++[>+>+++>++++++++++++<<<-]>++>++>+>+
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        <<.
                        >]

Çevrimiçi deneyin!


7

Befunge-98 (FBBI) , 27 bayt

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

bir ikame karakteri nerede (ASCII 26)

Çevrimiçi deneyin!

Büyük harf kullanır ve sonunda yeni bir satırsonu vardır.

açıklama

Kod, bir sayacı (başlangıçta 0) ve her döngüde depolayarak çalışır:

  • 1+ - 1 artırır
  • :0\:: - Bir şeyleri iterek yığının şöyle görünmesini sağlar: bottom [N, 0, N, N, N] top
  • '`j'@ - Sayacın 26'dan büyük olup olmadığını kontrol eder
    • j'@- Eğer öyleyse, üstünden atlayıp 'kullanarak çıkıyoruz.@
    • j'@- Değilse ', ASCII değerini @yığına iten, komutunu çalıştırırız.

Şimdi yığın şöyle gözüküyor: bottom [N, 0, N, N, 64] top

  • +\- Ekler, sonra ilk 2'yi değiştirir: bottom [N, 0, (N+64), N] top İlk kez, bu ASCII 65 veyaA
  • k:- İkinciyi en üst (N+1)zamanlardan çoğaltır - şimdi yığında (N+2)değerleri vardır (N+64)(artı Nve 0önceki)
  • $$- İlk 2 değeri atın - şimdi sadece Ndeğerleri(N+64)
  • >:#,_- bir bulunana kadar her üst değerini yazdırır 0- Bu araçlar Nkopyaları (N+64)get baskılı
  • $- Atar 0- - Şimdi yığın sadeceN
  • a, - Bir giriş yazdırır

Ve tekrarlar


Her @ikisini de programı sonlandırmak ve tezgâha eklemek için nasıl kullandığımı seviyorum .


@JamesHolderness Yep. Onu yakaladığın için teşekkürler!
MildlyMilquetoast

7

Ruby , 32 30 bayt

@EricDuminil sayesinde -2 bayt.

27.times{|n|puts (n+96).chr*n}

Çevrimiçi deneyin!


1
Mükemmel. OP'nin yorumuna göre, izleyen / önde gelen yeni hatlara izin verilir. Bu durumda 27.times{|n|puts (n+96).chr*n}30 byte ile doğru olurdu
Eric Duminil

6

JavaScript (ES6), 54 bayt

f=(n=9)=>++n<36?n.toString(36).repeat(n-9)+`
`+f(n):''

O.innerText = f()
<pre id=O></pre>


6

Excel VBA, 38 bayt

Hemen Pencereyi Kullanma. :)

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

Ah. Benim hatam. Ben Excel sandım çünkü ben hemen penceresini kullanarak Excel işlevlerini kullandım.
1917’de 02:58

Terminali kaldırarak bir bayt bırakabilirsiniz"
Taylor Scott


5

Ruby, 38 bayt

Bir dizge dizisi döndürür

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

-Topan insanlık sayesinde -5 bayt

* -11 byte, Jordan tarafından sunulan bazı mükemmel golf oyunları sayesinde.


Bu sadece benim sayımla 48 bayttır .
Ürdün

1
Hiç ihtiyacınız yok "\n"; putsbunu sizin için yapar (ileride başvurmak için $/2 bayt daha kısa olsa da ) - ancak bunu putsbir satır dizisi döndüren bir lambda yaparsanız tamamen kurtulabilirsiniz . Ayrıca değiştirebilir a=[*?a..?z];puts a.mapiçin puts (a=*?a..?z).mapve x*(a.index(x)+1)için x*-~a.index(x). Hep birlikte 38 bayt .
Ürdün

38 baytlık sürüm TiO üzerinde iyi çalışıyor (önceki yorumdaki bağlantıya bakın). (a=*?a..?z)Lambda'nın argümanlarının değil bloğun içinde olduğuna dikkat edin .
Ürdün


4

MATL , 9 bayt

2Y2"@X@Y"

Çevrimiçi deneyin!

açıklama

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

Neden biliyor musunuz &çoğaltmak ve kullanılamaz devrik2Y2 ?
Stewie Griffin,

@StewieGriffin &, bazen aynı sonucu vermesine rağmen aslında kopyalamaz ve aktarılmaz. Yaptığı şey bir sonraki işlevin giriş / çıkış sayısını değiştirmek. Örneğin, kullanırsanız &+, +işlev şimdi iki yerine bir giriş alır ve girişin toplamını kendisinin aktarılmış haliyle çıkarır. O çünkü Ama bu sadece nasıl + 1 girişi (aynı ile çalışma =, >ve bazı diğerleri)
Luis Mendo


4

Jöle ,  5  4 bayt

sinsi Python uygulama kötüye

Adám sayesinde -1 bayt (satır listesi çıkmasına izin verildi; şimdi program yerine bir fonksiyon yazıyor)

Øa×J

Dizelerin bir listesini döndüren bir niladik bağlantı, satırlar
(bunu yeni satırlarla tam bir program olarak yazdırmak için geri eklemekY yeterlidir ).

Çevrimiçi deneyin! (altbilgi, bağlantıyı bir nilad (¢)olarak çağırır veŒṘnetlikiçin sonucun Python temsilini alır;abbccc... )

Nasıl?

Ø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)


hmm, belki - satır listesini "çıktı" yapabiliriz, ancak "program oluşturmalıyız" - bir program olarak çalışırken dört baytın çıktısı, liste niteliğini göstermediği için parçalanır.
Jonathan Allan,

program veya işlev
Adám

4

MATL , 11 bayt

2Y2t!g*!YRc

Çevrimiçi deneyin!

İstenilen harflerden büyük kare kare 26x26 elde etmek için yayın çarpımını kullanır. Daha sonra, alt üçgen kısım alınır ve örtük olarak basılır.

Ayrıca 11 bayt:

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

@StewieGriffin Aslında aynı çözümü bulmanın tesadüfü hakkındaki Octave cevabınız hakkında yorum yapmak için yarı yolda kaldım.
Sanchises

4

Javascript, 87 bayt , 72 bayt (@steenbergh 'e çok teşekkür ederim)

Benim de ilk cevabım:

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

Hoşgeldiniz! Görünüşe göre ind=1başlangıçtaki, sonraki noktalı virgül i<123ve son noktalı virgül etrafındaki boşlukları kaldırarak biraz kısaltabilirsiniz . Ayrıca, lütfen # işaretli bir dil biti - bytecount yazarak da başlığınızı biraz daha net hale getirin.
steenbergh

jfor(i=1;i<27;){console.log(String.fromCharCode(i+96).repeat(i++))}
Toplamı

@steenbergh bir kez daha teşekkür ederim, nasıl yardım edersiniz?
NTCG

4

Japt , 9 7 bayt

Bir dizi diziyi çıktılar

;C¬Ëp°E

Dene


açıklama

Bölünmüş ( ¬) küçük alfabe ( ;Ckarakter dizisi için), diziyi (over map Ë) ve yineleme ( p) geçerli indeksi (güncel eleman E) artırılır ( °) kez.


Tam olarak sahip olduklarım dışında, kullandıklarım dışında®p°Y
ETHproductions

3

Pip , 9 bayt

FczPcX++i

Çevrimiçi deneyin!

Sözde kodda bu

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

burada zküçük alfabe için ayarlanmıştır ve i0 olarak ayarlanmıştır.


Harita tabanlı çözümler bir bayt alır çünkü -nbayrağın birden fazla satırda gösterilmesi gerekir :

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

3

Acc !! , 66 bayt

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

Çevrimiçi deneyin!

Yorumlarla

# 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 bayt

Nispeten ilginç bir cevap. 1'den i26'ya kadar yineleyin i, alfabe izamanlarının th harfini yazdırın (örtülü bir satır sonu ile).

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

Çevrimiçi deneyin!

Daha ilginç bir yaklaşım aşağıdaki gibi bir şey kullanmak olabilir:

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

Bu bize tüm harfleri doğru miktarda veriyor, ancak satır sonu yok. Belki de benden daha akıllı biri bunu golfçülerin cevaplaması için kullanmanın bir yolunu bulabilir.


2
İkinci yaklaşımınızı nasıl kullanacağınızı da bilmiyorum, ama rep(letters, 1:26)bunun çok daha kısa olduğunu biliyorum ...
Giuseppe

@Giuseppe Hah! Dediğim gibi, "benden daha akıllı biri" kesinlikle gerekli.
rturnbull




3

J , 18 17 bayt

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

Açıklama:

              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:

Çevrimiçi deneyin!



3

Octave , 25 24 bayt

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

Çevrimiçi deneyin!

OP'nin büyük harflere izin verdiğini söyleyen Giuseppe sayesinde bir bayt kurtardı.

Açıklama:

xBüyük harfli alfabenin ASCII değerleriyle bir vektör oluşturun ve onu dönüştürün. x(ASCII-değerleri) olan bir ızgara oluşturmak için , negatif (bu nedenle, bir satır vektöründe 26 sıfır) ekleyin :

AAAA
BBBB
CCCC

Alt üçgen matrisi alın ve boş dizeyle birleştirerek karakterlere dönüştürün.


3

C (gcc) , 48 bayt 50 bayt

Aşağıdaki yorumlarda cleblanc ve Steadybox'a göre yeniden çalıştırılabilir versiyon.

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

Çevrimiçi deneyin!


1
Güzel cevap Bir dahaki sefere işleviniz başarısız olacağını ve bu bağlantıya göre yeniden kullanılabilir olması gerektiğini düşünüyorum; codegolf.meta.stackexchange.com/questions/4939/…
cleblanc

İşte 50 byte'lık sabit bir versiyon: s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}Hala cevabımı birkaç byte
atar


3

Japt, 17 16 11 bayt

Oliver sayesinde -5 bayt

ISO-8859-1’de

;26ÆCgX pXÄ

En iyi skor değil, ama hala bir acemiyim. Herhangi bir öneriniz çok açıktır.

OP izinli olarak satırların listesini çıkarır. Bağlantı yeni satırlar için 3 bayt daha fazla içeriyor.

Çevrimiçi deneyin!

;                      - 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
Güzel! 1oBÊÄtarafından değiştirilebilir 26õ. Gibi bir şey yaparak birkaç bayttan tasarruf edebilirsiniz;26ÆCgX pXÄ
Oliver

@Oliver Nasıl halter görmedim ben 26 alfabe uzunluğundan daha kısa olduğunu ?! Teşekkürler. Ayrıca, benim of
kötüsüm
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.