Buat lampu sorot alfabet!


66

Terinspirasi oleh bug dalam solusi untuk tantangan ini , tantangan Anda adalah menghasilkan teks yang tepat ini:

                         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
  • Baris pertama akan memiliki 25 spasi, kemudian alfabet mundur mulai dari 26 huruf ( ZYXWVUTSRQPONMLKJIHGFEDCBA), lalu baris baru.
  • Baris kedua akan memiliki 24 spasi, kemudian alfabet mundur dimulai dari huruf ke-25 ( YXWVUTSRQPONMLKJIHGFEDCBA), lalu baris baru.
  • ...
  • Baris terakhir (ke-26) tidak memiliki spasi, maka alfabet mundur dimulai dari huruf ke-1 ( A), lalu baris baru.

Aturan tambahan:

  • Program Anda dapat menggunakan metode output yang diizinkan.
  • Satu trailing newline dan / atau satu newline terkemuka diizinkan.
  • Harus ada satu baris baru di antara baris yang berisi surat-surat itu, tidak lebih.
  • Huruf-hurufnya harus semuanya huruf besar.

Seperti halnya , pengiriman terpendek menang. Semoga berhasil!

Papan peringkat:


3
Bagi saya kelihatannya seperti cahaya yang dilemparkan oleh sinyal kelelawar
scottinet


Bisakah setiap baris memiliki ruang ekstra di depannya?
HyperNeutrino

3
Bisakah setiap baris memiliki spasi tambahan setelah huruf terakhir?
mil

1
@miles ya, tidak apa-apa.
MD XF

Jawaban:


19

05AB1E , 7 byte

Kode:

₂žp.s1Λ

Menggunakan penyandian 05AB1E . Cobalah online!

Penjelasan

 ž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, itu aturan yang benar-benar bodoh
DJMcMayhem

3
Hmm ... Saya kira saya akan menghapus aturan, kalau begitu. status selesai
MD XF

2
Saya mungkin mengusulkan PR yang mendokumentasikan fitur itu ketika saya menemukan waktu. Tampaknya ini cara yang baik untuk belajar sedikit python dari kode yang ditulis dengan baik dan mudah dibaca
scottinet

6
Mengapa žpada ketika Auemas? BADUM tissss
Magic Octopus Urn

5
Menggunakan 05AB1E, buat file yang mendokumentasikan semua fitur itu, korslet kode menang: P
Christian

22

R , 67 55 byte

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

Cobalah online!


4
R mengalahkan Python pada tantangan string? Bagus. +1 untuk SURAT
CriminallyVulgar

1
@CriminallyVulgar itu tantangan yang sangat aneh; Haskell mengalahkan PHP dan R yang keduanya mengalahkan Python ... setidaknya Perl di depan mereka semua seperti yang Anda harapkan.
CR Drost

-2 byte jika Anda berubah sepmenjadi s. Fungsinya akan melengkapi argumen bernama jika tidak ada tabrakan
Punintended

1
@Punintended yang tidak akan berfungsi karena ...argumen; argumen yang datang sebelum ...(biasanya) dicocokkan sebagian, dan yang sesudahnya tidak. Saya percaya ada beberapa pengecualian tetapi cattidak salah satunya
Giuseppe

@ Giuseppe Saya tidak melihat...
MilkyWay90


15

V , 13 , 11 byte

¬ZAòY>HGpxl

Cobalah online!

Hexdump:

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

Ditulis dari ponsel saya: 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
Saya melakukan ini di ponsel saya juga, +1
Stan Strum

12

PowerShell , 42 byte

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

Cobalah online!

Penjelasan:

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 byte

/:/\\\\*//#/: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//\\*/\/\/_____#
\/ //_/     //*#

Cobalah online!

Penjelasan

/// hanya tahu satu perintah, /<pattern>/<substitution>/<text>menggantikan semua kejadian <pattern>di <text>dengan <substitution>. Selain itu \dapat digunakan untuk melarikan diri karakter.

Kode singkat untuk kesederhanaan:

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

Perintah pertama /:/\\\\*/menggantikan :dengan \\*dalam kode selanjutnya. Ini memberi:

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

Kemudian /#/\\*E\\*D\\*C\\*B\\*A/ganti #dengan \*E\*D\*C\*B\*A:

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

Kemudian /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ /ganti \*dengan //__*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

Perhatikan: Saya harus menggunakan \*untuk penggantian. Karena *juga merupakan bagian dari substitusi, itu akan menghasilkan loop tak terbatas jika saya hanya mengganti *.

Kemudian perintah /_/ /ganti _dengan spasi, dan /*//hapus semua *:

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

Perintah selanjutnya tidak /#//menggantikan #apa pun. Karena tidak ada #dalam kode, maka tidak melakukan apa-apa. Ini hanya di sini untuk menghapus dua lead //dari awal kode. Ini pergi

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

Kemudian perintah tersebut / E//dihapus <space>E, jadi ini akan meninggalkan kode

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

/ D//Penghapusan serupa <space>D:

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

/ C//:

    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/ 

/ B//:

    EDCBA
   DCBA
  CBA
 BA
A
/ 

Dan perintah terakhir tidak lengkap, jadi tidak ada artinya:

    EDCBA
   DCBA
  CBA
 BA
A

Panjang yang sama dengan jawaban C # dan brainfuck: D
Conor O'Brien

9

Haskell, 53 52 byte

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

Cobalah online!

Bagaimana itu bekerja

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

Kenapa tidak f['Z'..'A']berhasil?
Conor O'Brien

1
@ ConorO'Brien: [a..b]dimulai dengan adan mengumpulkan semua penerus ( +1untuk bilangan bulat, ascii-char berikutnya untuk karakter, dll.) Hingga b. Jika a > bini daftar kosong. Namun, Anda dapat menentukan juga nilai kedua (yang bisa lebih kecil) dari mana kenaikan / penurunan dihitung. [1,3..8]-> [1,3,5,7], [15,10..0]-> [15,10,5,0], atau ['Z','Y'..'A']yang merupakan alfabet huruf besar ke belakang.
nimi

Ah, saya mengerti sekarang. Terima kasih!
Conor O'Brien


7

JavaScript (ES6), 83 77 76 byte

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

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


Saya ingin menyarankan Anda perbaikan, tetapi kemudian saya menyadari bahwa pendekatan kami sangat berbeda. Semoga kamu tidak keberatan.

@ThePirateBay Tidak masalah!
Arnauld

7

Jelly , 12 byte

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

Cobalah online!

Ø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

-3 byte berkat mil



@ LeakyNun Oh, benar, terima kasih!
HyperNeutrino

Yay, gunakan lagi untuk awalan cepat. 12 byte karena cetakan akan membentuk kembali di sini menggunakan panjangnya secara implisit.
mil

@ LeakyNun Sebenarnya, sayangnya itu akan membuatnya tidak valid karena tidak boleh ada ruang tambahan (akan membutuhkan 2 byte untuk memperbaikinya)
HyperNeutrino

7

brainfuck , 105 byte

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

Cobalah online!

Diminimalkan dan diformat:

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

Versi yang dapat dibaca:

[
  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

Puitis , 601 byte

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

Puitis adalah esolang yang saya buat pada tahun 2018 untuk proyek kelas, dan merupakan turunan dari brainfuck di mana panjang kata-kata sesuai dengan perintah brainfuck (dan +, -,>, dan <perintah masing-masing memiliki argumen 1-digit).

Fakta bahwa hanya panjang kata yang menentukan perintah berarti secara teknis saya bisa membuat program yang seluruhnya terdiri dari non-kata (yaitu huruf X sebanyak yang diperlukan, dengan spasi di antara kata-kata), tetapi saya ingin membuat yang menarik puisi bebas-ayat dari itu tanpa menambahkan byte yang tidak perlu.

Jika Anda ingin mencobanya secara online (yang merupakan setengah dari proyek kelas di tempat pertama), periksa penerjemah online saya !


Mengapa ini tidak bersaing?
pppery

Bahasa dibuat setelah tantangan.
JosiahRyanW


Hm, maka saya rasa itu memberi saya lebih banyak motivasi untuk menggunakan Poetic sebagai bahasa pemrograman! Heh.
JosiahRyanW

5

05AB1E , 10 byte

žpDvÐg<ú,¦

Cobalah online!

Penjelasan:

ž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 byte

Disimpan 9 byte berkat @Massa.

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

Cobalah online!

Penjelasan: 25...0 berkisar antara 25 hingga 0 (seperti yang diharapkan). Kami mengulangi rentang itu, mengatakan (= mencetak dengan baris baru) bahwa banyak spasi dan string karakter yang memiliki kode ASCII ( chrs) dari 65 + angka itu ( $_+65...65).


1
25...0 adalah jalan yang lebih pendek :-)
Massa

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

Terimakasih banyak! Saya tidak pernah tahu tentang itu! Dan bentuk sub juga lebih baik (terlalu buruk saya membuat ini dari atas kepala saya). (Inilah sebabnya saya suka menggunakan Perl 6 untuk codegolf, saya selalu menemukan sesuatu yang baru.)
Ramillies

4

Arang , 19 11 byte

-8 byte berkat ASCII saja.

F²⁶«P⮌…α⊕ι↗

Cobalah online! Tautan adalah untuk versi verbose.



Tunggu noooooo ada ruang terdepan
ASCII

Anak ... saya perlu memeriksa setiap perintah dan operator yang dimiliki Charcoal. > _> Terima kasih!
totallyhuman

Memperbaiki tio.run/…
ASCII

1
@ Khusus ASCII CycleChop... tetapi Anda lupa Increment(atau apa pun namanya)
Erik the Outgolfer

4

Perl 5 , 36 byte

35 byte kode +1 untuk -p.

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

Catatan : TIO tidak mendukung input kosong , jadi disediakan baris baru, ini menghasilkan baris baru yang asing, tetapi ketika berjalan di baris perintah dengan input kosong, ini tidak ditampilkan.

Cobalah online!



4

Cubix , 43 46 byte

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

Cobalah online!

Kubus

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

Lihat saja

Telah berhasil mencukur sedikit lebih banyak dari ini, tetapi itu sedikit lebih sulit daripada yang saya kira. Ada karakter pengganti setelah kutipan pertama memberi saya 26.

  • '<sub> dorong 26 ke tumpukan sebagai nomor dasar
  • :(! duplikat basis sebagai penghitung, pengurangan, uji kebenaran
  • upada true lewati $perintah dan putar u ke kanan
    • So;u tekan 32, output sebagai karakter, pop 32 dan putar kanan ke decrement
  • $pada false jump uperintah selanjutnya
  • ;:'@^ pop, duplikat nomor dasar, dorong 64 ke stack dan redirect ke rute yang menyiksa
  • $\s/:\/u;$ini adalah urutan langkah-langkah di wajah atas. Itu bermuara untuk menukar counter dengan 64. Berakhir dengan melewatkan redirect yang meletakkannya di sini.
  • <+o;U redirect untuk menambah, menampilkan karakter, pop, u-belok kiri
  • (!penurunan, uji kebenaran. Jika benar dimulai pada jalur yang mengenai putar u dan kembali ke pengalihan.
  • |(;No pada false, reflect, redundant test, redundant decrement, pop, push 10 dan karakter output
  • ;;(u!@Wpop down ke nomor dasar, decrement, u-belok kanan ke tes yang benar, berhenti jika false jika tidak mengubah jalur ke duplikat di awal. Bilas dan ulangi.

4

Python, 83 byte

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

Jawaban pertama saya tentang codegolf :)


1
Sambutan yang terlambat dari PPCG! jawaban bagus!
Conor O'Brien


4

Vim, 43 penekanan tombol

:h<_<CR>jjYZZPVgUxjpqqy$-i <Esc>lpl"aDYPD"ap+q25@q

Anda dapat melihatnya beraksi di GIF ini menggunakan skrip python Lynn

masukkan deskripsi gambar di sini


3

JavaScript, 75 74 byte

1 byte disimpan berkat Rick Hitchcock

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

Cobalah online!


Simpan byte dengan menginisialisasi b( b=''), lalu bkeluarkan tanda kurung siku.
Rick Hitchcock

@RickHitchcock. Terima kasih.

3

Perl 5 , 49 byte

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

Cobalah online!


Sepertinya Anda melewatkan yang pertama A, tetapi tampaknya itu bisa diperbaiki dengan mengubahnya $"x25menjadi $"x26!
Dom Hastings

Ketika saya menambahkan ekstra Z, saya lupa memperhitungkannya.
Xcali

3

Pyke , 8 byte

G_.<XFo}h-

Coba di sini!

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

Saya bisa melihat bahasa yang tepat melakukan ini dalam 6 byte jika mereka memiliki builtin untuk prepend n spaces to stringserta apa yang dilakukan Pyke


3

PHP ( 63 58 55 byte)

Ini mungkin sudut aneh PHP favorit saya, sudut yang diwarisi dari Perl:

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

Ini menghasilkan baris baru yang tertinggal, sebagaimana diizinkan secara eksplisit. Ini dapat dijalankan php -runtuk menyimpan celah yang <?phpdiperlukan untuk meletakkan ini dalam file.

Penjelasan: ketika variabel yang berisi string 'A'ditambahkan dalam PHP, itu menjadi 'B'dan kemudian 'C'dan seterusnya hingga 'Z'menjadi 'AA'. Tidak ada angka sebelumnya 'A'untuk memulai dengan aljabar madcap ini, dan operator penurunan tidak membatalkannya, jadi kami menyimpan alfabet yang dibalik secara bertahap ke $z(yang defaultnya NULLketika digabungkan dengan string berperilaku seperti string kosong - the yang sama terjadi dengan $sdan $q). Spasi terakumulasi $sdan seluruh string diakumulasikan ke belakang dalam variabel $qyang berarti kita harus menggemakannya di akhir.

Terima kasih kepada Titus karena bermain golf dengan kawat gigi keriting saya dan memberi tahu saya bahwa saya tidak perlu mengambil penalti untuk bendera evaluasi inline seperti -r.


1
Itu 57 byte, jika Anda menggunakan linebreak linux. -rBebas. Dua byte lebih pendek:for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;
Titus

@Titus terima kasih, memberi Anda pujian dalam jawabannya.
CR Drost

nm. Hanya diketahui bahwa -Rdan -Fyang tidak bebas. Lihat codegolf.meta.stackexchange.com/questions/2424/…
Titus

Saya percaya Anda dapat menyimpan satu byte jika Anda menggunakannya $c<AA.
Ismael Miguel

1
@ IsmaelMiguel maaf, saya terlalu singkat. Saya berpikir ketika saya menulis itu, "mungkin ada cara untuk mengacak semuanya tanpa mendapatkan byte sehingga kasus A terjadi terlebih dahulu dan kemudian kita dapat mendeteksi AA vs B tetapi saya tidak berpikir bahwa saya cukup pintar untuk melihatnya . " Saya tidak bermaksud bersikap kurang ajar dan saya akan berusaha untuk mewaspadai hal itu di masa depan.
CR Drost

3

SOGL V0.12 , 10 8 byte

Z±{Xf}⁰¼

Coba Di Sini!


Hanya ingin tahu, berapa lama versi terkompresi?
caird coinheringaahing

@cairdcoinheringaahing TL; DR terlalu lama. Kompresi SOGL menyebalkan pada (dan secara khusus dibuat bukan untuk) hal-hal yang berulang. Ini akan sangat sulit untuk diketahui karena kompresi tidak otomatis (otomasi akan membuatnya mengambil 701 choose xupaya untuk setiap bilangan x) tetapi upaya kasarnya adalah 450 byte: P
dzaima

3

Common Lisp, 84 82 byte

(dotimes(i 26)(format t"~v@{ ~}~a
"(- 25 i)(subseq"ZYXWVUTSRQPONMLKJIHGFEDCBA"i)))

Cobalah online!

Dua byte lebih sedikit, berkat @ Ascii-only!



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.