Kayan Başkentler


11

Arkaplan

Büyük harflerle üst üste yazılmış İngiliz alfabesini düşünün ABCDEFGHIJKLMNOPQRSTUVWXYZ. Satır üzerine yerleştirildiğinde, alfabenin belirli bir "penceresini" gösterecek ve lensin dışındaki harfler görünmeyecek şekilde özel bir değişken genişlikte lense sahip olduğumuzu varsayalım. Ek olarak, bu mercek bir çözgü özelliğine sahiptir, böylece merceğin içindeki ilk harf ve daha sonra her ikinci harf alt kasalıdır, ancak kalan harfler hala büyük harfle gösterilir.

Örneğin, alfabenin ortasında bir yerde yerleştirilen uzunluğunun 5 bir lens olabilir ve biz sadece görecekti . jKlMn(boşluk gösterileri sağlamak için burada dönemini açan) - Notu Kve Mhala büyük harfle edilir iken j, lven tüm düşüktür -cased. Bu lensi alfabe boyunca soldan sağa kaydırdığımızda, farklı harfler gösterilecek ve farklı harfler büyük olacak. Buradaki görev, mercek alfabe boyunca kayarken ortaya çıkan harfleri çıkarmaktır.

Meydan okuma

Bir giriş tamsayı alan 0 < n < 27ve yukarıda açıklanan mercek alfabeye kaydırarak görünür olan dizeleri çıkaran veya döndüren bir program veya işlev yazın .

Daha nbüyük değerler için 1, objektif alfabenin sol tarafından "asılarak" başlar, bu nedenle Aobjektifin en sağ yuvasında yalnızca gösterilir. Dolayısıyla, herhangi bir çıktının ilk satırı A, merceğin uzunluğuna bağlı olarak tek , büyük veya küçük harf olacaktır.

Benzer şekilde, lens, lensin Zen sol yuvasındayken kaymayı bitirir (yani herhangi bir çıktıdaki en son satırın her zaman 25 boşluk ve ardından küçük harf olacağı anlamına gelir z).

Örnekler

Giriş: 1

Çıktı:

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

Giriş: 4

Çıktı:

A
aB
AbC
aBcD
 bCdE
  cDeF
   dEfG
    eFgH
     fGhI
      gHiJ
       hIjK
        iJkL
         jKlM
          kLmN
           lMnO
            mNoP
             nOpQ
              oPqR
               pQrS
                qRsT
                 rStU
                  sTuV
                   tUvW
                    uVwX
                     vWxY
                      wXyZ
                       xYz
                        yZ
                         z

Giriş: 26

Çıktı:

A
aB
AbC
aBcD
AbCdE
aBcDeF
AbCdEfG
aBcDeFgH
AbCdEfGhI
aBcDeFgHiJ
AbCdEfGhIjK
aBcDeFgHiJkL
AbCdEfGhIjKlM
aBcDeFgHiJkLmN
AbCdEfGhIjKlMnO
aBcDeFgHiJkLmNoP
AbCdEfGhIjKlMnOpQ
aBcDeFgHiJkLmNoPqR
AbCdEfGhIjKlMnOpQrS
aBcDeFgHiJkLmNoPqRsT
AbCdEfGhIjKlMnOpQrStU
aBcDeFgHiJkLmNoPqRsTuV
AbCdEfGhIjKlMnOpQrStUvW
aBcDeFgHiJkLmNoPqRsTuVwX
AbCdEfGhIjKlMnOpQrStUvWxY
aBcDeFgHiJkLmNoPqRsTuVwXyZ
 bCdEfGhIjKlMnOpQrStUvWxYz
  cDeFgHiJkLmNoPqRsTuVwXyZ
   dEfGhIjKlMnOpQrStUvWxYz
    eFgHiJkLmNoPqRsTuVwXyZ
     fGhIjKlMnOpQrStUvWxYz
      gHiJkLmNoPqRsTuVwXyZ
       hIjKlMnOpQrStUvWxYz
        iJkLmNoPqRsTuVwXyZ
         jKlMnOpQrStUvWxYz
          kLmNoPqRsTuVwXyZ
           lMnOpQrStUvWxYz
            mNoPqRsTuVwXyZ
             nOpQrStUvWxYz
              oPqRsTuVwXyZ
               pQrStUvWxYz
                qRsTuVwXyZ
                 rStUvWxYz
                  sTuVwXyZ
                   tUvWxYz
                    uVwXyZ
                     vWxYz
                      wXyZ
                       xYz
                        yZ
                         z

Kurallar

  • Standart giriş / çıkış kuralları geçerlidir
  • Standart boşluklara izin verilmedi
  • Standart kod golf kuralları geçerlidir
  • Gösterildiği gibi önde gelen boşluk gereklidir, böylece alfabede nerede olduğumuzu biliriz.
  • Her satırın sonundaki boşluk olamaz (gösterildiği gibi - çıktı bir dikdörtgen değildir).
  • Tek bir sondaki yeni satır isteğe bağlıdır.

Yanıtlar:



2

JavaScript (ES6), 130 bayt

n=>[...Array(n+25)].map(_=>[...Array(26)].map(_=>String.fromCharCode(j++<i|i+n<j?32:j+(j-i)%2*32),++i,j=64).join``,i=64-n).join`\n`

Burada \ngerçek satırsonu karakterini temsil eder. Çıktı dikdörtgeni üzerinde döngü yaparak ve köşegen dışındaki boşluklar çıkarırken, diğer karelerdeki küçük harfleri karakter koduna 32 ekleyerek çalışır. Kullanımı replace1 bayt daha uzun görünüyor:

n=>[...Array(n+25)].map(_=>' '.repeat(26).replace(/./g,s=>j++<i|i+n<j?s:String.fromCharCode(j+(j-i)%2*32),++i,j=64),i=64-n).join`\n`

1

AWK, 160 bayt

{d=-$1
m=25
for(;i<m+$1;i++){f="%"(++d<0?0:d<m?d:m)"s"
c=u=65
l=97
printf f,""
for(j=++E-$1;j<E&&j<26;j++){c=c==u?l:u
if(j<0)continue
printf("%c",j+c)}print""}}

Bu, gelebildiğim kadar sıkı AWK. 3 farklı prints ve continuegerçekten byte-count ekleyin.

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.