Üçgen alfabe dilimleri


15

Bir giriş numarası verilir ndan 1kadar 26(veya 0hiç 25), çıkış alfabe okuma soldan sağa yukarı ve birlikte, mektup karşılık gelen de dahil olmak üzere a=1, b=2, c=3, .... Büküm, harflerin alfabedeki konumlarına göre dikey olarak tekrarlanması gerektiğidir. Tek sayılar ( 1-dekslendiğinde) yatay çizgide dengelenmelidir, hatta sayılar üst veya alt tarafları tercih etmek arasında değişmelidir (önce hangi yöne gideceğinizi seçebilirsiniz). 0 dizine ekliyorsanız, önceki cümlede tek / çift arasında geçiş yapın.

Başka bir şekilde ifade edildi - eğer bir harfin alfabetik değeri ?ise #, o #harfin çıktıda, tümü #th sütununda kopyaları olmalıdır . Bu harfler, yatay çizginin üstünde ve altında eşit olarak dengelenmelidir a. Harfler eşit olarak dengelenemiyorsa, o satırın üstünde ve altında "ekstra" harfi bulun.

İşte yeni altı n = 1,2,3,4,5,6satırla ayrılmış ilk altı çıkış ( , 1 dizine eklenmiş, ilk önce alt tarafa geçmeyi seçerek), böylece deseni görebilirsiniz. Deseni açıklayan yorumlar ile başlar #.

a         # On a line by itself

ab
 b        # The "extra" letter is below the horizontal

  c
abc       # The 'c' splits evenly
 bc

   d      # Because the 'b' was below, the extra 'd' must be above
  cd
abcd
 bcd


   de
  cde
abcde     # The 'e' balances
 bcde
    e

   def
  cdef
abcdef
 bcdef
    ef
     f    # Since the 'd' was above, the extra 'f' must be below

(birkaçını atla n=26)

                       xyz
                      wxyz
                   tuvwxyz
                  stuvwxyz
               pqrstuvwxyz
              opqrstuvwxyz
           lmnopqrstuvwxyz
          klmnopqrstuvwxyz
       hijklmnopqrstuvwxyz
      ghijklmnopqrstuvwxyz
   defghijklmnopqrstuvwxyz
  cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
 bcdefghijklmnopqrstuvwxyz
    efghijklmnopqrstuvwxyz
     fghijklmnopqrstuvwxyz
        ijklmnopqrstuvwxyz
         jklmnopqrstuvwxyz
            mnopqrstuvwxyz
             nopqrstuvwxyz
                qrstuvwxyz
                 rstuvwxyz
                    uvwxyz
                     vwxyz
                        yz
                         z

kurallar

  • Büyük veya küçük harf olarak çıkmayı seçebilirsiniz, ancak tutarlı olmalıdır.
  • Çıktı, isteğe bağlı bir son satırsonu dışında, yabancı boşluklara sahip olamaz.
  • Tam bir program veya bir işlev kabul edilebilir.
  • Giriş numarası herhangi bir uygun formatta alınabilir .
  • Standart boşluklar yasaktır.
  • Bu bu nedenle her zamanki golf kuralları geçerlidir ve en kısa kod (bayt cinsinden) kazanır.

Yanıtlar:


5

Jöle ,2018 bayt

Ḷ&2’×ḶỤØaḣ⁸¤ṫW€UGU

Python cevabımın limanı. Çevrimiçi deneyin.

DÜZENLEME: Dennis (sırala ) yerine Þ(sıralama ) kullanarak iki bayt kaydetti !


8

Python 2, 101 99 bayt

r=range(input())
for x in sorted(r,key=lambda x:x*-(x&2)):print bytearray([97+i,32][i<x]for i in r)

xsot x*-(x&2), bir sıralama anahtarı olarak yeterlilikleri gerçekleştirerek iki bayt kaydetti - sonuçta elde edilen görüntünün alt yarısı, sortedkararlı bir sıralama garanti edilmesinden etkilenmez .


-İzin verilen olduğuna inandığım satırları ters sırada çıkarmak için a bırakamaz mısınız?
Neil

Bence x*-(x&2)işe yarıyor.
xsot



2

JavaScript (ES6), 127 126 bayt

n=>[...Array(n).keys()].sort((a,b)=>a*~-(a&2)-b*~-(b&2)).map(i=>` `.repeat(i)+`abcdefghijklmnopqrstuvwxyz`.slice(i,n)).join`\n`

@ Lynn'in sıralama hilesini kullanır. Tüm alfabeyi yazmak, onu hesaplamaktan iki bayt daha ucuzdu. Düzenleme: @ETHproductions sayesinde 1 bayt kaydedildi çünkü \naslında gerçek satırsonu karakterini temsil ettiğini unutmayın . (Hat çok uzun olduğunda cevabıma gerçek satırsonu koymayı sevmiyorum.)


Alfabeye iki bayt kaydedin: btoa`...` burada ..., sonucuyla değiştirilir atob`abcdefghijklmnopqrstuvwxyzz` . (Ayrıca, \ndeğişmez bir satırsonu ile değiştirebilirsiniz .)
ETHproductions

@ETHproductions UTF yerine, ISO kodlaması kullanan olur mu?
Neil

Evet, olurdu. JS'de UTF-8 yerine ISO-8859-1 kullanmamıza izin var mı?
ETHproductions

@ETHproductions Muhtemelen ama işe yaramaz gibi görünmüyor, bu yüzden göstermeyeceğim.
Neil
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.