Bir alfabe ışıldak yapın!


66

Bu zorluğa bir çözüm yolundaki bir hatadan esinlenerek , zorluğunuz bu kesin metni üretmek:

                         ZYXWVUTSRQPONMLKJIHGFEDCBA
                        YXWVUTSRQPONMLKJIHGFEDCBA
                       XWVUTSRQPONMLKJIHGFEDCBA
                      WVUTSRQPONMLKJIHGFEDCBA
                     VUTSRQPONMLKJIHGFEDCBA
                    UTSRQPONMLKJIHGFEDCBA
                   TSRQPONMLKJIHGFEDCBA
                  SRQPONMLKJIHGFEDCBA
                 RQPONMLKJIHGFEDCBA
                QPONMLKJIHGFEDCBA
               PONMLKJIHGFEDCBA
              ONMLKJIHGFEDCBA
             NMLKJIHGFEDCBA
            MLKJIHGFEDCBA
           LKJIHGFEDCBA
          KJIHGFEDCBA
         JIHGFEDCBA
        IHGFEDCBA
       HGFEDCBA
      GFEDCBA
     FEDCBA
    EDCBA
   DCBA
  CBA
 BA
A
  • İlk satırda 25 boşluk, daha sonra alfabenin 26. harfinden ( ZYXWVUTSRQPONMLKJIHGFEDCBA) başlayarak geriye doğru , sonra da yeni bir satır olacaktır.
  • İkinci satırda 24 boşluk, daha sonra alfabenin 25. harfinden ( YXWVUTSRQPONMLKJIHGFEDCBA) başlayarak geriye doğru , sonra da yeni bir satır olacaktır.
  • ...
  • Son (26) satırda boşluk kalmaz, daha sonra alfabenin ilk harfinden ( A) itibaren geriye doğru , sonra da yeni bir satır olur.

Ek kurallar:

  • Programınız izin verilen çıktı yöntemlerini kullanabilir.
  • Bir sondaki yeni satır ve / veya bir adet yeni satır sonuna izin verilir.
  • Harfleri içeren satırlar arasında yeni bir satır olmalı, artık yok.
  • Harflerin tümü büyük harf olmalıdır.

ile olduğu gibi , en kısa teslim kazandı. İyi şanslar!

Liderler Sıralaması:


3
Bana göre yarasa sinyalinin ışık dökümüne benziyor
scottinet


Her çizginin önünde fazladan boşluk olabilir mi?
HyperNeutrino

3
Her satırda son harften sonra boşluklar olabilir mi?
mil

1
@miles evet, sorun değil.
MD XF

Yanıtlar:


19

05AB1E , 7 bayt

Kod:

₂žp.s1Λ

05AB1E kodlamasını kullanır . Çevrimiçi deneyin!

açıklama

 žp.s      # Get the suffixes of ZYX...CBA
      Λ    # Using the canvas mode, print the
₂          # first 26 elements of the array
     1     # into the upper-right direction

2
@MDXF IMO, bu çok aptalca bir kural
DJMcMayhem

3
Hmm ... Sanırım kuralı kaldıracağım o zaman. durum tamamlandı
MD XF

2
Zamanı bulduğumda bu özelliği belgeleyen bir PR önerebilirim. İyi yazılmış, okunması kolay bir koddan bir parça python öğrenmek için iyi bir yol gibi görünüyor
scottinet 6:17

6
Altın žpolduğunda neden var Au? BADUM tissss
Sihirli Ahtapot Urn

5
05AB1E'yi kullanarak, tüm özelliklerini belgeleyen bir dosya oluşturun, kod kazancını kısaltır: P
Christian

22

R , 67 55 bayt

for(i in 26:1)cat(rep(" ",i-1),LETTERS[i:1],"
",sep="")

Çevrimiçi deneyin!


4
R, Python'u bir ip yarışmasında atıyor mu? Güzel. HARFLER için +1
CriminallyVulgar

1
@CriminallyVulgar çok garip bir mücadele; Haskell, Python'u yenen PHP ve R'nin kravatını atıyor ... en azından Perl beklediğiniz gibi hepsinden önde.
CR Drost

-2 bayt değiştirmek durumunda sepetmek s. Çarpışmalar bulunmuyorsa Fonksiyonlar isimli değişkenler otomatik olarak tamamlayacak
Punintended

1
@Panintended bu ...argüman nedeniyle işe yaramazsa ; Daha önce gelen argümanlar ...(tipik olarak) kısmi eşleşir ve sonrasında olmaz. Birkaç istisna olduğuna inanıyorum ama catonlardan biri değil
Giuseppe

@Giuseppe Bilmiyorum...
MilkyWay90


15

V , 13 , 11 bayt

¬ZAòY>HGpxl

Çevrimiçi deneyin!

HexDump:

00000000: ac5a 41f2 593e 4847 7078 6c              .ZA.Y>HGpxl

Telefonumdan yazılan: P.

¬ZA         " Insert the alphabet backwards
   ò        " Recursively:
    Y       "   Yank this current line
     >H     "   Add one space to every line
       G    "   Move to the last line in the buffer
        p   "   Paste the line we yanked
         x  "   Delete one character
          l "   Move one character to the right, which will throw an error on 
            "   the last time through, breaking the loop

1
Bunları da telefonumda yapıyorum, +1
Stan Strum

12

PowerShell , 42 bayt

25..0|%{' '*$_+-join[char[]]((65+$_)..65)}

Çevrimiçi deneyin!

Açıklama:

25..0|%{                                 } # Loop from 25 to 0
                             (65+$_)..65   # Construct a range of the specific ASCII codes
                    [char[]](           )  # Cast that as a character array
               -join                       # that has been joined together into a string
        ' '*$_+                            # Prepended with the correct amount of spaces


10

/// , 105 97 bayt

/:/\\\\*//#/:Z:Y:X:W:V:U:T:S:R:Q:P:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A//\\*/\/\/_____#
\/ //_/     //*#

Çevrimiçi deneyin!

açıklama

/// sadece bir komut bilir /<pattern>/<substitution>/<text>, <pattern>içindeki tüm olayları <text>ile değiştirir <substitution>. Ek \olarak karakterlerden kaçmak için kullanılabilir.

Basitlik için kısaltılmış kod:

/:/\\\\*//#/:E:D:C:B:A//\\*/\/\/__#
\/ //_/  //*#

İlk komut sonraki kodda ile yer /:/\\\\*/değiştirir . Bu verir::\\*

/#/\\*E\\*D\\*C\\*B\\*A//\\*/\/\/__#
\/ //_/  //*#

Sonra /#/\\*E\\*D\\*C\\*B\\*A/yerini #ile \*E\*D\*C\*B\*A:

/\\*/\/\/__\*E\*D\*C\*B\*A
\/ //_/  //*\*E\*D\*C\*B\*A

Sonra /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ /yerini \*ile //__*E*D*C*B*A<newline>/:

/_/  //*//__*E*D*C*B*A
/ E//__*E*D*C*B*A
/ D//__*E*D*C*B*A
/ C//__*E*D*C*B*A
/ B//__*E*D*C*B*A
/ A

Uyarı: \*Değişim için kullanmak zorunda kaldım . Yana *da ikame parçası sadece yerine, eğer sonsuz bir döngü oluşturmak olacaktır *.

Sonra komut boşluklarla /_/ /değiştirilir _ve /*//tümünü siler *:

EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ A

Bir sonraki komut hiçbir şeyin /#//yerine #geçmez. Kodda olmadığından hiçbir #şey yapmaz. Bu sadece //kodun başlangıcındaki iki yönlendirmeyi kaldırmak için burada . Bu yapraklar

EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ 

Sonra komut / E//kaldırılır <space>E, bu koddan çıkar.

    EDCBA
   DCBA
/ D//   DCBA
/ C//   DCBA
/ B//   DCBA
/ 

Benzer / D//kaldırır <space>D:

    EDCBA
   DCBA
  CBA
/ C//  CBA
/ B//  CBA
/ 

/ C//:

    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/ 

/ B//:

    EDCBA
   DCBA
  CBA
 BA
A
/ 

Ve son komut eksik, bu yüzden hiçbir şey yapmıyor:

    EDCBA
   DCBA
  CBA
 BA
A

C # ve brainfuck cevaplarıyla aynı uzunluklarda: D
Conor O'Brien

9

Haskell, 53 52 bayt

f(a:b)=(b>>" ")++a:b++'\n':f b
f x=x
f['Z','Y'..'A']

Çevrimiçi deneyin!

Nasıl çalışır

f['Z','Y'..'A']        -- call f with the full backwards alphabet

f(a:b)=                -- let `a` be the first char and `b` the rest. Return
   (b>>" ") ++         -- replace each char in b with a space, followed by
   a:b ++              -- the input string, followed by
   '\n' :              -- a newline, followed by
   f b                 -- a recursive call of `f` with `b`
f x=x                  -- stop on an empty input string

Neden değil f['Z'..'A']çalışıyor?
Conor O'Brien,

1
@ ConorO'Brien: tüm haleflerle [a..b]başlar a( +1tam sayılar için, bir sonraki karakter karakteri, vb.) Kadar b. Eğer a > bbu boş listedir. Bununla birlikte, bir artış / azalmanın hesaplandığı ikinci değeri (daha küçük olabilir) de belirleyebilirsiniz. [1,3..8]-> [1,3,5,7], [15,10..0]-> [15,10,5,0]veya ['Z','Y'..'A']geriye büyük harf olan alfabe.
nimi

Ah, şimdi anlıyorum. Teşekkürler!
Conor O'Brien,


7

JavaScript (ES6), 83 77 76 bayt

f=(n=0,p='')=>n<26?f(++n,p+' ')+p+`ZYXWVUTSRQPONMLKJIHGFEDCBA
`.slice(~n):''

o.innerText = f()
<pre id=o>


Sana bir gelişme önermek istemiştim, ama sonra yaklaşımlarımızın çok farklı olduğunu anladım. Umarım sakıncası yoktur.

@ ThePirateBay Sorun değil!
Arnauld

7

Jöle , 12 bayt

ØAµ⁶ṁḊ;ṚµƤṚY

Çevrimiçi deneyin!

ØAµ⁶ṁḊ;ṚµƤṚY  Main Link
ØA            "ABC...XYZ"
         Ƥ    For each prefix,
  µ⁶ṁḊ;Ṛµ     Monadic Link
   ⁶          ' '
    ṁ         (with automatic repetition) molded to the shape of
     Ḋ        All but the first letter of the input (repeat - 1)
      ;       With the input          appended to it
       Ṛ                     reversed
           Y  Join on newlines

Miller sayesinde -3 bayt



@LeakyNun Oh sağ harika teşekkürler!
HyperNeutrino

Yay, hızlı önek için başka bir kullanım. 12 bayt bu yana kalıp örtülü uzunluk kullanarak burada yeniden şekillendirir.
mil

@LeakyNun Aslında, ne yazık ki bu geçersiz kılar çünkü fazladan boşluk olamaz (düzeltmek 2 byte alır)
HyperNeutrino 5:17

7

brainfuck , 105 bayt

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

Çevrimiçi deneyin!

Küçültülmüş ve biçimlendirilmiş:

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

Okunabilir sürüm:

[
  pre-initialize the tape with the values 10 90 32 >26<
  C_NEWLINE: 10
  V_ALPHA: 90
  C_SPACE: 32
  V_COUNTER: 26

AS:

  10 = 8 *  1 + 2
  90 = 8 * 11 + 2
  32 = 8 *  4 + 0
  26 = 8 *  3 + 2
]

8 ++++++++ [
  *  1 >+
  * 11 >+++++++++++
  *  4 >++++
  *  3 >+++
<<<<-]
PLUS 2 >++
PLUS 2 >++
PLUS 0 >
PLUS 2 >++

UNTIL V_COUNTER == 0 [
  COPY V_COUNTER to RIGHT and RIGHT_RIGHT
  [->+>+<<]
  TAPE: 10 V_ALPHA 32 >0< V_COUNTER_R V_COUNTER_RR
  V_COUNTER_R SUB 1 TIMES: >-[-
     PRINT C_SPACE <<.
  >>]
  TAPE: 10 V_ALPHA 32 0 >0< V_COUNTER_RR
  V_COUNTER_RR TIMES: >[-
    PRINT V_ALPHA <<<<.
    DECREMENT V_ALPHA -
    INCREMENT V_COUNTER_R >>>+
  >]
  TAPE: 10 V_ALPHA 32 0 V_COUNTER_R(26) >0<
  V_COUNTER_R SUB 1 TIMES: <-[-
    INCREMENT V_COUNTER <+
    INCREMENT V_ALPHA <<+
  >>>]
  PRINT C_NEWLINE <<<<.
>>>]


6

Şiirsel , 601 bayt

one night i camped a bit
throughout all the forest now
the sweet sights
i saw giant things
i saw little small things
here i am
seated around all my trees i saw
i sleep
i sle-e-p
sleep in a cabin
i am sleep-y
i sleep a bit
i awaken in bed
i stand
i walk
i am ready
i saw a vision of a dragon
i am fooled
i know i am
should i f-ight
i f-light
i did f-light
i did a flight
go away,i do imply
i*m afraid
i run
i leave
i flee
i am timid
i*m just a person,not toughie-tough-guy
no,never
i*m waste
i am stupid
a quitter i was
i am stupid
i*m turning around
i do not appreciate camping
i cry
i am crying
no
no

Şiirsel, 2018 yılında bir sınıf projesi için yarattığım bir esolang ve sözcüklerin uzunluklarının beyin sapı komutlarına (ve +, -,> ve <komutlarının her biri 1 basamaklı argümanlara sahip) karşılık geldiği bir beyin fırtınası türevidir.

Yalnızca sözcük uzunluğunun komutları belirlediği gerçeği, teknik olarak tamamen sözcüklerden oluşmayan bir program yaratabileceğim anlamına geliyor (yani, X harfi gerektiği kadar, harflerin arasında boşluk bırakarak), ancak ilginç bir şey yapmak istedim. Gereksiz baytlar eklemeden serbest şiir şiiri.

Çevrimiçi denemek istiyorsanız (ilk etapta sınıf projesinin yarısıdır), çevrimiçi tercümanımı inceleyin !


Bu neden rekabet etmiyor?
pppery

Dil mücadeleden sonra oluşturuldu.
JosiahRyanW


Hm, o zaman bu bana Poetic'i programlama dili olarak kullanmak için daha fazla motivasyon kazandırdı! Heh.
JosiahRyanW

5

05AB1E , 10 bayt

žpDvÐg<ú,¦

Çevrimiçi deneyin!

açıklamalar:

žpDvÐg<ú,¦
žp           Push the uppercased alphabet, reversed
  D          Duplicate
   v         For each letter (we just want to loop 26 times, so we use the 
                already pushed alphabet for that purpose)
    Ð        Triplicate
     g<      Length of the string - 1
       ú     Add that number of spaces at the beginning of the string
        ,    Print with newline
         ¦   Remove the 1st element of the remaining copy of the string

5

Perl 6 , 37 bayt

@Massa sayesinde 9 byte kurtarıldı.

say " "x$_,chrs $_+65...65 for 25...0

Çevrimiçi deneyin!

Açıklama: 25...0 25 ile 0 arasında bir aralıktır (beklendiği gibi). Çok fazla alan ve ASCII kodları ( chrs) 65 + 'dan bu sayıya ( $_+65...65) sahip karakter dizgisi (= newline ile yazdırma) diyerek bu aralığın üzerinde duruyoruz .


1
25...0 en kısa yoldur :-)
Massa

denemek say " "x$_,chrs $_+65...65 for 25...0:-)
Massa

Çok teşekkürler! Bunu asla bilemedim! Ve alt form da daha iyidir (çok kötü, bunu başımın tepesinden yaptım). (Bu yüzden codegolf için Perl 6'yı kullanmayı seviyorum, her zaman yeni bir şey keşfederim.)
Ramillies

4

Kömür , 19 11 bayt

-Sadece ASCII sayesinde -8 bayt.

F²⁶«P⮌…α⊕ι↗

Çevrimiçi deneyin! Bağlantı ayrıntılı versiyonudur.



Noooooo'nun önde gelen alan olduğunu bekleyin
ASCII sadece

O'nun oğlu ... Charcoal'ın sahip olduğu her bir komuta ve operatöre bakmam gerekiyor. > _> Teşekkürler!
tamamen insan


1
@ ASCII-sadece CycleChop... ama unuttun Increment(ya da ne
denirse

4

Perl 5 , 36 bayt

İçin 35 bayt kodu + 1 -p.

$\=$"x$-++.($a=$_.$a).$/.$\for A..Z

Not : TIO boş girişi desteklemiyor , bu nedenle yeni bir satır sağlandı, bu durum fazladan bir yeni satıra yol açıyor, ancak boş girişli komut satırında çalışırken bu görüntülenmiyor.

Çevrimiçi deneyin!



4

Cubix , 43 46 bayt

$/\;u:\s/':(!$u;:'@^!@Wu;oSU;o+<u(;;oN;(!|

Çevrimiçi deneyin!

Cubified

      $ / \
      ; u :
      \ s /
'  : ( ! $ u ; : ' @ ^
! @ W u ; o S U ; o + <
u ( ; ; o N ; ( ! | . .
      . . .
      . . .
      . . .

Çalıştırılmasını izle

Bundan bir kaç tane daha tıraş etmeyi başardım, ama düşündüğümden biraz daha zordu. Bana 26 vermek için ilk tekliften sonra yerine bir karakter var.

  • '<sub> taban numarası olarak 26'yı istifin üzerine itin
  • :(! Bir sayaç olarak yinelenen taban, azaltma, gerçeği sınama
  • utrue olduğunda $komutu atla ve sağa dön
    • So;u 32'yi itin, karakter olarak çıktı alın, pop 32 açın ve aşağı doğru döndürün
  • $yanlış atlamak sonraki ukomutu
  • ;:'@^ pop, baz sayısını kopyalayın, 64'ü istifin üzerine itin ve zorlu bir rotaya yönlendirin
  • $\s/:\/u;$Bu, üst yüzdeki adımların sırasıdır. Sayacı 64 ile değiştirmek için aşağı kaynar. Buraya koyan yönlendirmeyi atlayarak biter.
  • <+o;U eklemek için yönlendirme, çıktı karakteri, pop, sola dönüş
  • (!azaltma, gerçeği sınama. True, u dönüşüne çarpan yoldan başlar ve yönlendirmeye geri döner.
  • |(;No yanlış, yansıt, fazlalık testi, fazlalık azalma, pop, push 10 ve çıkış karakteri
  • ;;(u!@Wtemel sayıya inin, azaltın, truthy testine sağa dönün, yanlış olursa durun, aksi takdirde başlangıçtaki kopya üzerine şeridi değiştirin. Durulayın ve tekrarlayın.

4

Python, 83 bayt

[print(' '*i+''.join([chr(64+i)for i in range(i+1,0,-1)]))for i in range(25,-1,-1)]

Codegolf'a ilk cevabım :)


1
PPCG'ye gecikmiş bir hoş geldiniz! güzel cevap!
Conor O'Brien,



3

JavaScript, 75 74 bayt

Rick Hitchcock sayesinde 1 bayt kurtarıldı

f=(a=65,b='',c)=>a>90?'':f(a+1,b+' ',c=String.fromCharCode(a)+[c])+`
`+b+c

Çevrimiçi deneyin!


İlk önce b( b='') yazıp ardından bköşeli parantezlerden çıkarıp bir byte kaydedin .
Rick Hitchcock

@RickHitchcock. Teşekkürler.

3

Perl 5 , 49 bayt

$_=$"x26 .join'',reverse A..Z,Z;say while s/ \S//

Çevrimiçi deneyin!


İlk kaçırıyorsun gibi görünüyor A, ama değiştirerek bu düzeltilebilir görünüyor $"x25için $"x26!
Dom Hastings

Ekstraları eklediğimde Z, bunun hesabını unuttum.
Xcali

3

Pyke , 8 bayt

G_.<XFo}h-

Burada dene!

           -  o = 0
G_         -    reversed(alphabet)
  .<       -   suffixes(^)
    XF     -  for i in ^:
      o    -      o++
       }   -     ^ * 2
        h  -    ^ + 1
         - -   i.lpad(" ", ^)
           - for i in reversed(^):
           -  print i

prepend n spaces to stringPyke’in yaptığı gibi bir yerleşimi varsa, bunu 6 baytta yapan doğru dili görebiliyorum.


3

PHP ( 63 58 55 bayt)

Bu muhtemelen benim en sevdiğim PHP garip köşesi, Perl'den miras aldığı bir köşe:

for($c=A;$c!=AA;$q="$s$z 
$q",$s.=" ")$z=$c++.$z;echo$q;

Bu, açıkça izin verildiği gibi sondaki yeni satırı çıkarır. Bu, bir dosyaya koymak için gereken php -raçıklığı kaydetmek için çalıştırılabilir <?php.

Açıklama: dizeyi içeren değişken bir zaman 'A'PHP'de artırılır, bu olur 'B've ardından 'C'vb kadar 'Z'olur 'AA'. 'A'Bu madcap cebirinde başlamadan önce bir rakam yoktur ve azalma operatörü bunu geri almaz, bu yüzden artımlı olarak ters çevrilmiş bir alfabeyi $z( NULLbir dize ile bittiği zaman boş dize gibi davrandığı varsayılanları kaydederiz) aynı $sve ile olur $q). Boşluklar biriktirilir $sve tüm dizge değişkende geriye doğru biriktirilir $q, bu da sonunda eko yapmamız gerektiği anlamına gelir.

Kıvırcık parantezlerimi fırlatıp attığım için ve Titus'a teşekkür ederim -r. Bunun gibi satır içi değerlendirme bayrakları için ceza almam gerekmediğini söyledi .


1
Linux linebreak kullanıyorsanız, bu 57 bayttır. -rbedava. İki bayt daha kısa:for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;
Titus

@Titus teşekkürler, cevabında size bir şeref verdi.
CR Drost

mil. Sadece dikkat -Rve -Folan değil özgür. Bkz codegolf.meta.stackexchange.com/questions/2424/...
Titus

Eğer kullanırsan bir bayt kurtarabileceğini düşünüyorum $c<AA.
Ismael Miguel,

1
@IsmaelMiguel, çok tereddüt ettim. Bunu yazarken düşündüm de, "belki de A'yı ilk önce gerçekleşmesi için A'yı B ile karşılaştırabilmemiz için bazı şeyleri karıştırmanın bir yolu vardır, sonra AA ile B'yi tespit edebiliriz, ancak onu görecek kadar zeki olduğumu sanmıyorum. ." Saygısız olmak istemedim ve gelecekte buna dikkat etmeye çalışacağım.
CR Drost

3

SOGL V0.12 , 10 8 bayt

Z±{Xf}⁰¼

Burada dene!


Sadece merak ediyorum, sıkıştırılmış versiyon ne kadar sürüyor?
caird coinheringaahing

@cairdcoinheringaahing TL; DR yolu çok uzun. SOGL'ler sıkıştırma, tekrarlayan şeyleri emer (ve özellikle de yapılmaz). Sıkıştırma otomatik olmadığından (otomasyon 701 choose xherhangi bir x tamsayısına teşebbüs eder) söylemesi çok zor olurdu, ancak kaba bir deneme 450 byte idi: P
dzaima


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.