Köşegen Alfabe


66

Girdi olmadığında göreviniz aşağıdakileri oluşturmaktır:

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

Görme dışı olarak, sizin göreviniz alfabedeki her harfi eksi alfabesindeki konumuna eşit boşluklar olmadan oluşturmaktır.

Bunu yazdırırsanız, yukarıdaki gibi görünmesi gerekir. Sonucu bir yeni satırın yanı sıra görünümü etkilemeyen yabancı boşluk bırakılabilir. Tüm küçük harfleri veya tüm büyük harfleri kullanabilirsiniz.

Bunu, her zamanki kurallara göre, yeni satırlı bir dize veya bir dize listesi olarak da kullanabilirsiniz.

Bu , bayt cinsinden en kısa cevap!


Boşlukların gerçek ASCII boşlukları olması gerekiyor a<VERTICAL-TAB>b<VERTICAL-TAB>c...mu , yoksa çıktı gibi verebilir miyim ? İçeride de bazı geri al karakterleri varsa? Görsel sonuç aynı olduğu sürece?
Dijital Travma

@DigitalTrauma aynı gözüktüğü sürece, ne tür bir boşluk kullandığınız umrumda değil.
Stephen

Boşluk yerine sekme kullanabilir miyim?

@ yamboy1 hmm, muhtemelen değil. Çoğu sekme çok sayıda boşluğa ayarlanır - köşegeniniz 4boşluktan önce boşluklara benziyorsa b, çok köşegen görünmez. Eğim gibi görünüyorsa ~ -1o zaman iyidir.
Stephen

Görünümü etkilemeyen, fazladan bir lider boşluğuna mı yoksa 2'ye mi sahip?
MildlyMilquetoast

Yanıtlar:


87

Kömür , 2 bayt

↘β

Çevrimiçi deneyin!

Nasıl?

 β - the lowercase alphabet
↘  - direction

Tam olarak Kömür'ün aslen tasarlandığı zorluk türü.


4
Doğru dil :)
Stephen

2
Bu bana hatırlatıyor, muhtemelen Crayon üzerinde biraz daha çalışmalıyım ... ↘"abc ... xyz"qEn kısa çalışma programı olacağına inanıyorum . ( Çevrimiçi deneyin! ) ↘``26O;)qÇalışmalıdır (bir backtick ile başlayın; her 0 0 ... 25 için, gizli I'i açın, backtick'i ve çıktıyı artırın), ancak bir nedenden dolayı "boş yığın" hatası veriyor. .
ETHproductions

2
2 bayt ?! GÜNEY DOĞU OK tek bir bayt hangi kodlamada ?
Wyck

6
@Wyck Charcoal (not: spekülasyon), 1 byte komutuna kadar sıkıştırılabilecek özel bir kod sayfası kullanır. Bu Code Golf için meşru. codegolf.meta.stackexchange.com/questions/9428/…
Draco18

14
@StephenS, sağ alt dili kastediyorsunuz :)
Wossname

18

C, 45 bayt

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

5 bayt tasarrufu için @Dennis teşekkürler !


9
Makinemde çalışıyor ™
Yıkılabilir Limon

Bir inoktada başlatmanız veya sıfırlamanız gerekeceğini düşünüyorum . En azından TIO'da, f()yalnızca bir kez çalışır .
Dennis,

@Dennis Ah, haklısın. Bunu düzeltdim.
Doorknob

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}birkaç bayt kaydeder.
Dennis,

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}41 bayt için - bunu gerçek bir terminalde çalıştırdığınızdan emin olun (evet, buna izin verilir )
NieDzejkob

13

05AB1E , 14 8 6 bayt

@Emigna sayesinde -2 bayt

AvyNú»

Nasıl çalışır

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

Çevrimiçi deneyin!

Orijinal sürüm, 14 bayt

26FNð×N65+ç«}»

İle başka bir 2 byte kaydedebilirsiniz AvyNú».
Emigna

@Emigna: Teşekkürler! Bunu düzenleyecektir.
Neil A.

ƶçok mükemmel görünüyor, ama öyle değil :(.
Magic Octopus Urn

ΛMuhtemelen o zamanlar henüz müsait değildi, fakat 26A3Λbir bayt kazandırdı.
Kevin Cruijssen

1
@ MagicOctopusUrn ₂A3Λdaha da kısa olurdu.
Kevin Cruijssen

12

JavaScript (ES6), 60 59 bayt

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

İzleyen yeni satırlı bir dize döndüren özyinelemeli bir işlev.


1
Whoa, bu çok sinsi. 10 ila 36 aralığındaki bir sayıyı tuhaf temeldeki bir sayıya dönüştürme. Üssün neden bu kadar artması gerektiğini henüz anlamadım.
Steve Bennett,

2
@SteveBennett Doğru, ancak n.toString(++n)+f(n)bundan daha az bir bayt n.toString(36)+f(n+1).
ETHproductions

1
f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""55 için yapabilirsin .
Arnauld

1
Bazı ES8: ile bir bayt kaydedin "".padEnd(n-10)+n.toString(++n).
Shaggy

1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):sizin verilebilir gibi görünüyordu.
Shaggy

12

Ruby , 28 bayt

26.times{|a|puts" "*a<<97+a}

Çevrimiçi deneyin!

Açıklama:

Ruby'de bir dizgede bulunan << işleci, Dokümantasyonda açıklandığı gibi, işe yarar.

  • str << tamsayı → str

  • str << obj → str

Ekleme - Verilen nesneyi str ile birleştirir. Nesne bir Tamsayı ise kod noktası olarak kabul edilir ve birleştirme işleminden önce bir karaktere dönüştürülür.


12

R, 38 37 36 bayt

write(intToUtf8(diag(65:90),T),1,26)

(Kullanımı @ Giuseppe'nin cevabındanwrite ilham almıştır .)


3
Yemin ederim denedim ama işe yaramadı! Aferin. Büyük harfe izin verildiğinden, 65:90 kullanarak 1 byte tasarruf edebilirsiniz.
user2390246

@ user2390246 Gösterdiğiniz için teşekkürler!
Sven Hohenstein

başka bir baytı tıraş etmek 1yerine kullanabilirsiniz "".
Giuseppe

@Giuseppe Gösterdiğiniz için teşekkürler!
Sven Hohenstein

11

Vim, 29 bayt

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

Çevrimiçi deneyin!

↵, geri dönüş tuşuna basılması anlamına gelir

<Esc>, Escape tuşuna basmak anlamına gelir.

Bu nasıl çalışıyor?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

Çevrimiçi deneyin! Bunu göstermek için kullanabilirsiniz (V, Vim'e dayanmaktadır ve görünüşte otomatik bağdaştırıcı varsayılan değerlerinin dışında olması dışında çoğunlukla geriye dönük uyumludur). Ayrıca, daha az önemli olan, +bir saniye beni fırlatan açıklamadaki özlemin kaçtı .
nmjcman101

@ Nmjcman101 teşekkürler! Online vim denemek için bir yol bulmaya çalışıyordum ve V hakkında hiç bir şey bilmiyordum
jmriego

Sen kullanabilirsiniz yerine <Esc>. Bence biraz daha iyi görünüyor.
Buğday Sihirbazı,

Bunu yaparsanız tek bir bayt kaydedebilir {yerinegg
DJMcMayhem

:0 yerine 2↵, y $ yerine belki Y kullanabilirsiniz
TR

11

Python 2,36 bayt

n=65;exec"print'%*c'%(n,n);n+=1;"*26

Bu görünüm kuralını etkilemeyen yabancı boşluktan faydalanır .

Çevrimiçi deneyin!

Alternatif sürüm, 38 bayt

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

Bu, meydan okuma özelliğinden tam çıktı elde eder.

Çevrimiçi deneyin!


Nasıl %*cçalışıyor?
Sızdıran Rahibe,

%*<identifier>iki argüman alır: değiştireceği uzunluk ve yerine konacak gerçek şey. Bazı printfuygulamaların, burada%1$<identifier> kullanılanlar gibi daha belirsiz özelliklere sahip olması .
Dennis


8

Saf Bash, 13

echo {a..z}^K^H

İşte ^Kve ^Hdeğişmez dikey sekme ve geri ASCII kontrol karakterleri. xxdKullanmak - Bu senaryonun dökümü aşağıdaki gibidir xxd -r: gerçek senaryoyu yeniden oluşturmak için

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}üretilecek standart bir bash ayraç genişlemesidir a b c ... z(boşlukla ayrılmış)
  • ^KDikey sekme aynı pozisyona bir satır aşağı imleç düşer
  • ^Hgeri al ayırıcı alanını silmek için geri birini imleci hareket ettirir

Çevrimiçi deneyin . colve tacbunun bir tarayıcı penceresinde doğru şekilde oluşturulmasını sağlamak için altbilgide kullanılır, ancak bu normal bir terminalde gereksizdir.


Çıktıdaki yukarıdaki sıra dışı kontrol karakterleri sizin için çok büyükse, bunu yapabilirsiniz:

Bash + ortak yardımcı programları, 24

echo {a..z}^K^H|col -x|tac

İşte ^Kve ^Hdeğişmez dikey sekme ve geri ASCII kontrol karakterleri. xxdKullanmak - Bu senaryonun dökümü aşağıdaki gibidir xxd -r: gerçek senaryoyu yeniden oluşturmak için

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

Çevrimiçi deneyin . Dikey sekme ve geri alma, tarayıcınız tarafından görünmez olabilir, ancak oradalar (kromda görünmez, firefox'ta görülebilir).

  • col -x girişi, komik kontrol karakterlerinin aynı görsel sonucu elde etmek için boşluklarla ve yeni satırlarla değiştirileceği şekilde yeniden oluşturur
  • Bazı nedenlerden dolayı colsatırları ters sırada verir. tacdüzeltir

Bu çok harika :) (ve meta ve @Dennis 'e göre kodlayıcıya cevapların yerine etkinliklere göre sıralamalarını önerdikleri için, (çok sıkıcı) kodlayıcılara göre daha iyi cevaplar alabilmeleri için: codegolf.meta.stackexchange. com / sorular / 10127 /… )
Olivier Dulac

Birçok terminal ^K, imleç oluşturuyor, bu da colburada taklit edilmesi gereken davranış .
Neil

@Neil evet, bu mantıklı - colmanpage VT'ye "ters satır besleme" diyor. xterm, gnome terminali ve OSX terminali hepsi bir satır aşağı düşüyor ...
Digital Trauma

8

Brain-Flak , 124, 116 , 106 bayt

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

Çevrimiçi deneyin!

Açıklama:

Bu cevap , Yığın Yüksekliği Niladını kötüye kullanıyor , ancak daha önce hiç kullanmadığım, oldukça gurur duyduğum yeni bir yolla. Bunun dışında, cevap çok akıllıca değil.

Dolayısıyla, bu ASCII sanatında kullanılan karakterleri analiz ederken, sıklıkla kullanılan üç değer var:

  • 32 (boşluk),

  • 64 (N’in 64’ünü, alfabenin N’nci harfini almak için ekleyin) ve

  • 10 (yeni satır)

Ayrıca 26. (döngü sayısı) Bu sayılar farklı konumlara itilir, bu nedenle büyük sayıları daha küçük hale getirmek için ara değerleri yeniden kullanamayız. Ve bu sayılar için hepsini zorlamak yalnızca 86 baytlık bir kuyruklu:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

Bu korkunç. İşte nasıl daha uygun hale getireceğimizi. Bariz yaklaşım itmek olduğunu 32bizim kılan alternatif yığını, üzerine 32haline pasajı: (<>({})<>)ve 64pasajı haline (<>({})({})<>). İlk baskı 32'yi ilk baskı 26 ile birleştirirsek , kabaca 8 byte tasarruf sağlayabiliriz. (ilk golfüm).

Ama burada gerçekten gurur duyduğum püf nokta giriyor. Alternatif yığını hiç bir şey için kullanmadığımız için, 10'u da golf oynayabiliriz. Bunu yapmak için, programın başlangıcındaki 4 rasgele sayıyı yığının üstüne iteceğiz. []32'yi de bastığımızdan bu, niladın değerini 5'e yükseltir ve bu da 10snippet'imizi daha rahat bir hale getirir . Ve bizim için çok şanslı, aslında 32 ve 26 numaralı snippet'i aşağıya atmamıza izin veriyor !

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

Oluyor

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

Yani burada ayrıntılı bir açıklama:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}

7

V , 15 13 11 bayt

¬azòÙr klDj

Çevrimiçi deneyin!

açıklama

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down

7

Google Sayfaları 67 65 bayt

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ARRAYFORMULA (IF (SIRA (A1: Z) = KOLON (A1: Z26), CHAR (96 + SIRA (A1: Z26)), ""))

Herhangi bir boşlukun yapacağı açıklığa uyarak, gözle görülür boş hücreler kullandım.

Çıktı

Bu sayılmazsa, bayt sayısını yanlış anladıysam ya da buradaki ilk görevim olduğu için bazı görgü kurallarını bozduysam bana bildirin.

Düzenleme: Google sayfalarının boş bir değeri kabul edeceği için "" dışında bırakarak 2 bayt tasarruf edebileceğim ortaya çıktı.


1
PPCG'ye Hoşgeldiniz :) Güzel görünüyor! Diğer Google E-Tablolar cevabını atmak iyi iş!
Stephen

7

APL (Dyalog) , 9 7 bayt SBCS

Ngn'in ipucuları sayesinde -2 bayt.

↑⍨∘-⌸⎕A

[Çevrimiçi deneyin!] [TIO-j3o0ipjy]

⎕A büyük A lphabet

 her biri (element, indeks listesi) çifti arasına, aşağıdaki tacit fonksiyonunu ekleyin:

↑⍨ elemandan (mektup) almak…

 ...

- negatif-indeksli karakter sayısı, yani arkadan gelen birçok karakter, önde boşluk bırakan karakterlerdir.

Çevrimiçi deneyin!


Güzel. J denemem biraz daha ayrıntılıydı. Bu fiillerin J'ye çevirisi var mı?
Jonah

@Jonah Fiiller: olup {.ve bir i.Zarflar: ¨olup "0ve bir ~.
Adem

Teşekkürler. Görünüşe göre J çevirisi bazı kısalıklarını kaybeder:(a.{~97+i.26){."0~-1+i.26
Jonah

@ Çıktı gerektiği gibi görünmüyor; ipucu: uygun bir matris oluşturmak ve 2 bayt kaydetmek için kullanın
ngn

@ngn Ayrıca bir dizge listesi (…) döndürebilirsiniz. Ama ben araştıracağım. Düzenleme: Ah evet, elbette!
Adám

6

Octave, 25, 19 veya 12? bayt

[diag(65:90)+32 '']

Çevrimiçi deneyin!

@LuisMendo tarafından önerilen (12 bayt) Octave’nin Windows sürümünde test ettiğim diğer çözümler:

diag('a':'z')

Açıklama:

Köşegen matrisini oluşturur a:z.


@LuisMendo Tio'da aynı sonucu veremiyorum. İstenilen sonucu üreten, değerlendirilebilecek bir ifadedir :)
rahnema1

Luis tarafından önerilen çözüm şimdi TIO üzerinde çalışıyor gibi görünüyor ... Belki de Octave'nin yeni sürümü?
Stewie Griffin,

Veya yeni tio sürümü?
rahnema1

6

Java 8, 72 71 70 61 bayt

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

Küçük harf yerine büyük harfli alfabe çıktısı ile -1 bayt.
Çok satırlı bir Dize döndürmek yerine doğrudan yazdırılarak -1 bayt.
-8 bayt @ OliverGrégoire sayesinde printfdoğrudan kurtulmak için kullanarak String s="";. Ayrıca -1 değiştirerek bayt ()->için o->.

Burada dene.


Saf uygulama düşündüğümden daha kısa. Bayt'ı c=65(veya 64aslında) ile kaydedebilirsiniz, böylece 3 basamaklı sayıya ihtiyacınız olmaz. Dize yerine bir dizi döndürmek, kaldırabileceğiniz herhangi bir bayttan tasarruf etmenizi sağlayabilir +"\n"mi?
TheLethalCoder

@ TheLethalCoder Ah, büyük harfli alfabeyi çıkarmamıza izin verildiğini bilmiyordu. Bunun üzerine yağsız. Teşekkürler. Ve bir dizi çıkartarak ne demek istiyorsunuz? Bir dizi dizi gibi?
Kevin Cruijssen

1
@TheLethalCoder Herhangi bir ipucu açığız, çok teşekkürler. Ancak bu durumda daha kısa olmayacak. :)
Kevin Cruijssen

1
@Winter İlk öneriniz hakkında, bu meta-postada hala tartışılıyor , ancak bundan sonra gerçekten izin verildiğini tahmin ediyorum. İkincisi gelince, emin değilim .. Bu meta yazı ve cevapların yorumlarında özellikle bu sıcak tartışmalardan sonra, kuralları aldatma / bükme gibi hissediyorum .
Kevin Cruijssen

1
62 bayt: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}kullanarak başka meydan okuma ile aynı fikri .
Olivier Grégoire

5

Jöle ,  10  9 bayt

Dennis sayesinde -1 bayt ( doğrudan Jdüşürülmüş bir aralık kullanarak düşürmeden kaçının 26Ḷ)

26Ḷ⁶ẋżØaY

Sonucu basan tam bir program.

Çevrimiçi deneyin!

( ØaJ’⁶ẋż7 için, karakter listelerinin bir listesini döndüren, ancak [["a"],[" ","b"],[" ","c"],...]muhtemelen kabul edilemez olana benzer bir monadik bağlantıdır .)

Ancak düşünmedim daha kısa bir yolu olsaydı şaşırmam!

Nasıl?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

Hatta [["a"],[" ","b"],[" "," ","c"],...]bir karakter listesi bir dize için alternatif bir tanım olduğundan izin bile verirdim , ama bir tuple uymuyor gibi görünüyor :)
Stephen

Evet öyle düşündüm.
Jonathan Allan,

1
... yukarıda her "..."birinin bir karakter listesi olduğuna dikkat edin , bu yüzden [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]Jelly'in hiç ipi olmadığı için gerçekten sadece listeler.
Jonathan Allan,

26Ḷ⁶ẋżØaYbir bayt kaydeder.
Dennis,

ØaJ’⁶ẋżiçin 7, sizin alternatif versiyonu için.
Sızdıran Rahibe,


5

Alice , 22 20 bayt

52E&waq'a+q&' d&o]k@

Çevrimiçi deneyin!

Çıktı bir dize olsa da, sıradan modun bu zorluğa girmenin yolu olmadığı ortaya çıkıyor.

açıklama

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

Önceki çözüm

["za/?rO&
' !]\"ohkw@/

Çevrimiçi deneyin!

Bunu bulamadan önce yaklaşık on 23 baytlık çözüm kullandım.

açıklama

Bu program, çıkılacak boşluk sayısını izlemek için bandı kullanır. Kardinal ve sıra modları aynı bandı kullanır, ancak ayrı bant kafaları vardır. İki modda kasette gördükleri hakkında farklı yorumlar var ve program bu farkı tamamen kullanıyor.

Komutlar aşağıdaki sıraya göre yürütülür:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck, 103 bayt

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

Çevrimiçi deneyin!

Değişkenlerin konumu bir şekilde iyileştirilebilir.

açıklama

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Google Sayfaları, 69 bayt

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

Burada hiçbir şey karmaşık değil. Tek numara hile kullanmak ArrayFormulave işlev ROW(A1:A26)için 26 farklı değer döndürmektir JOIN. Çıktı şöyle görünür:

Çıktı


Excel 2016'nın da aynı şeyi yapabileceğini düşünüyorum TEXTJOINancak çevrimiçi sürümde dizi formüllerine giremiyorum ve yalnızca 2013'ü kendim yapıyorum. Formül şöyle olmalı :

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

Dizi formülü ( Ctrl+ Shift+ Enter) olarak girmek { }, her iki tarafa da parantez ekleyerek 67 bayta getirir. Bunu doğrulayabilen herkes, kendi cevabı olarak kullanabilir.


5

Tohum , 6014 bayt

Bunun herhangi bir ödül kazanacağını sanmıyorum, ama sadece eğlence için, İşte Tohum'da bir çözüm.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Aşağıdaki Befunge programına çevirir:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

++ , 1069 bayt ekle

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

Çevrimiçi deneyin!

Evet. Bu kodlanmış. Eminim daha iyi bir yol vardır ve onu bulmak istiyorsanız, devam edin, ancak Add ++ bellekle çalışmak zor olduğundan, bu yol en iyi şekilde çalışıyor gibi görünüyor.


4

R , 59 49 47 bayt

Djhurio sayesinde -10 bayt

Sven Hohenstein sayesinde -2 bayt

write("diag<-"(matrix("",26,26),letters),"",26)

Stdout'a yazdırır. User2390246 tarafından Outgolfed

Çevrimiçi deneyin!


Bir bayt kaydetmek için 26^2ile değiştirebilirsiniz 676.
Doorknob

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 bytes)
djhurio

Aynı miktarda bayt için, matrisi kullanarakcat(m,fill=27)
JAD

1
@djhurio "Aynı miktarda bayt için"
JAD

1
@Giuseppe Komuta "diag<-"(x, y)benzer diag(x) <- y. Değer bir değişkene atanmaz, ancak döndürülür.
Sven Hohenstein

4

> <> , 46 44 42 bayt

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

Çevrimiçi deneyin!

açıklama

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

Bu, önceki 46 baytımdan tamamen farklı bir sonuç, bu yüzden TIO'yu da sadece bunlara ekledim. 46 bytes Çevrimiçi deneyin!

Aşağıda Emigna'nın gönderdiklerine bir link var, ilk cevap <> >ydı, fakat benimki benim ikinci bir emri çıkarmak için yeterince farklı (ve birkaç byte tasarruf ettiğine) inanıyorum.

Emigna'nın cevabı


Ve şimdi bağlandık. Bir
byte'la

@Emigna, 3 kurtarılan baytın yeteceğini düşündüm: sanırım yapacak daha çok işim var :)
Teal pelikan

4

Haskell , 66 65 58 57 45 43 bayt

12 14 bayt tasarruf için @nimi ve @maple_shaft teşekkürler .

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

Çevrimiçi deneyin!


1
Aynı puanı alırsınız ama bazen <$çoğaltmak yerine kullanabilirsiniz :(' '<$[1..(fromEnum n-97)])
maple_shaft

2
@ Maple_shaft'ın önerisini olarak değiştirebilirsiniz (' '<$['b'..n]).
nimi

Adsız işlevlere izin verildiğinden, buna gerek yoktur f=.
nimi

2
Btw, aynı bayt saymak: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi

4

PHP, 23 bayt

Not: IBM-850 kodlamasını kullanır.

<?=join(~¶,range(a,z));

Bu şekilde koş:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

açıklama

Alfabenin tüm karakterlerinden oluşan bir dizi oluşturun, yapıştırıcı olarak dikey bir sekmeyle ekleyin.


4

brainfuck , 80 bayt

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

Çevrimiçi deneyin!

biçimlendirilmiş:

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

Bazı sabitleri belleğe koymak için basit bir çarpımsal üretme işlevi kullanır, daha sonra 'A' + Niçin N boşluk basma işlemini tekrarlar N = 0..25.

Açıklamalı:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]

4

RProgN 2,5 bayt

aS`\x0B.

\ x0B Dikey Sekme Değişmezi

Bu sadece küçük harfli alfabeyi alır, böler ve dikey sekmelerle birleştirir. Bu, bazı Bash Terminalleri üzerinde amaçlanan efekti üretir.

Komut dosyasını çalıştırma

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.