Semoga tantangan ini berfungsi sebagai ( yang lain ) upeti kepada Stan Lee, yang meninggal berusia 95.
Stan Lee telah meninggalkan kami warisan yang tak ternilai dan kata tangkapan yang aneh: Excelsior . Jadi, inilah tantangan kecil berdasarkan apa yang dia katakan artinya :
Akhirnya, apa arti "Excelsior"? "Ke atas dan seterusnya untuk kemuliaan yang lebih besar!" Itulah yang saya harapkan setiap kali saya selesai tweeting! Excelsior!
Tantangan
Diberikan serangkaian bilangan bulat non-negatif, menghasilkan garis dengan Excelsior!
setiap kali bilangan bulat lebih besar dari yang sebelumnya.
Aturan
- Input akan berupa array bilangan bulat non-negatif.
- Output akan terdiri dari baris-baris dengan kata
Excelsior
(case does matter) diikuti oleh sebanyak!
panjangnya arus angka yang semakin besar. Anda juga dapat mengembalikan array string. - Format input dan output fleksibel sesuai dengan aturan situs, jadi silakan menyesuaikannya dengan format bahasa Anda. Anda juga dapat menambahkan spasi di akhir baris, atau bahkan menambahkan baris baru setelah atau sebelum teks jika Anda perlu.
Contohnya
Input Output
-----------------------------------
[3,2,1,0,5] Excelsior! // Excelsior because 5 > 0
[1,2,3,4,5] Excelsior! // Excelsior because 2 > 1
Excelsior!! // Excelsior because 3 > 2 (run length: 2)
Excelsior!!! // Excelsior because 4 > 3 (run length: 3)
Excelsior!!!! // Excelsior because 5 > 4 (run length: 4)
[] <Nothing>
[42] <Nothing>
[1,2,1,3,4,1,5] Excelsior! // Excelsior because 2 > 1
Excelsior! // Excelsior because 3 > 1
Excelsior!! // Excelsior because 4 > 3 (run length: 2)
Excelsior! // Excelsior because 5 > 1
[3,3,3,3,4,3] Excelsior! // Excelsior because 4 > 3
Ini adalah kode-golf , jadi semoga kode terpendek untuk setiap bahasa menang!
Jawaban:
JavaScript (ES6),
5854 byteCobalah online!
Berkomentar
Mengapa menggunakan kembali [] untuk menyimpan nilai sebelumnya aman
Ada tiga kemungkinan kasus:
.map()
tidak dipanggil sama sekali dan kami hanya mendapatkan array kosong, menghasilkan string kosong.a < (a = c)
. Jadi, kami mengujiNaN
selama tes pertamaa < (a = c)
. Oleh karena itu, hasilnya palsu dan apa yang dieksekusi adalah inisialisasisumber
Python 2 ,
8483817068 byteCobalah online!
-2 byte, terima kasih untuk ASCII saja
sumber
05AB1E ,
262423 byte-2 byte terima kasih kepada @ Kalpeb .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat ini 05AB1E ujung tambang (bagian Cara string kompres bukan bagian dari kamus? ) Untuk memahami mengapa
.•1Š¥èò²•
adalah"excelsior"
.sumber
0Kg
denganO
?Perl 6 ,
60 5857 byte-1 byte terima kasih kepada nwellnhof
Cobalah online!
Blok kode anonim yang mengembalikan daftar Excelsiors!
sumber
Java-8
118113 BytesMudah dibaca :
sumber
n->{var e="";for(int i=0;i<n.length-1;System.out.print(""==e?e:"Excelsior"+e+"\n"))e=n[i++]<n[i]?e+="!":"";}
. Cobalah secara online ( 108 byte ). (Java 10+)n->{for(int e=0,i=0;i<n.length-1;)if(n[i++]<n[i])System.out.println("Excelsior"+"!".repeat(e++));else e=0;}
( 107 byte )++e
alih-alihe++
agar setidaknya ada satu yang!
akan dicetak.e=...?e+"!":
alih-alihe=...?e+="!":
.R , 86 byte
Setengah dari jawaban ini adalah @ Giuseppe. RIP Stan Lee.
Cobalah online!
sumber
05AB1E ,
2019 byteCobalah online!
Penjelasan
sumber
C (gcc / dentang),
1069997 byteTerimakasih untuk gastropner untuk bermain golf 2 byte.
Cobalah online sini .
Tidak Disatukan:
sumber
Japt
-R
,2522 byteCobalah
3 byte disimpan berkat Kamil
sumber
-R
Bendera tidak benar-benar diperlukan, tantangan mengatakan Anda dapat output array dari string.slice
pada pass pertama saya tetapi menolak ketika itu berhasil terlalu lama. Kembali ke sekarang, dengan bisikan Anda, saya kira saya harus terjebak dengan itu karena saya turun ke 22 juga.Common Lisp, 111 byte
Cobalah online!
sumber
Java 8, 106 bytes
Try it online!
(those reassignments of
s
...yikes)sumber
(s="")+s
=>(s="")
n->{String s="",z=s;for(int i=0;i<n.length-1;)z+=n[i++]>=n[i]?s="":"Excelsior"+(s+="!")+"\n";return z;}
(103 bytes) Move thes=""
to spare bytes.Stax, 17 bytes
Run and debug it
sumber
R, 111 bytes
Try it online!
A far better R tribute can be found here -- I was too fixated on
sequence
andrle
.sumber
Jelly, 16 bytes
A monadic Link yielding a list of lists of characters.
Try it online! (footer joins with newlines)
How?
sumber
Perl 5
-n
, 41 bytesTry it online!
Takes its input on separate lines.
sumber
Japt, 22 bytes
Try it online!
Explanation, with simplified example:
sumber
Powershell, 69 bytes
Less golfed test script:
Output:
sumber
PowerShell,
8785 bytesTry it online!
There's probably a restructuring hiding in there, most likely in the if-else, but overall pretty alright. Uses the ol' "Un-instantiated variable defaults to 0" trick for both making the index and the
!
.sumber
Retina, 55 bytes
Try it online! Link includes test cases. Explanation:
Convert to unary.
Process overlapping matches from right to left (although the matches are then listed from left to right). This means that we can match every number in a run, and the match extends to the start of the run. Each match is further constrained that each additional matched number must be less than the previously matched additional number, or the first number if no additional numbers have been matched yet.
For each match, output
Excelsior
with the number of additional numbers in the run as desired.sumber
Pyth, 32 bytes
Try it online here, or verify all the test cases at once here.
sumber
Jelly, 18 bytes
Try it online!
Output prettified over TIO.
sumber
Lua,
888783829695113 bytesThanks @Kevin Cruijssen for update adhering to spirit of original question.
Try it online!
sumber
C++ 14 (g++),
123118 bytesFortunately
std::string
has a constructor that repeats achar
. Try it online here.Thanks to gastropner for saving 5 bytes.
Ungolfed:
sumber
C# (.NET Core),
115107105 bytesTry it online!
-8 bytes: changed
b
to a string holding "!"s from an int counter-2 bytes: set
b+="!"
as an inline function (thanks to Zac Faragher)Uses an Action delegate to pull in the input and not require a return.
Ungolfed:
sumber
b+="!"
inline with the Excelsiorif(a[i]>a[i-1])Console.WriteLine("Excelsior"+(b+="!"));
Try it online!PHP,
117109 bytesTry it online!
sumber
J, 50 bytes
Try it online!
ungolfed
sumber
Java, 113 bytes
sumber
VBA, 114 bytes
sumber
a
. That said, if you define the function as asubroutine
that takes the input as a variant of expected type array, then you can turn your approach into a valid solution. A Golfed version of that approach would look likesub f(x)
For i=0To UBound(x)-1
If x(i+1)>x(i)Then s=s+"!":Debug.?"Excelsior"s:Else s=""
Next
End Sub
, where the breaks between code block represent new linesPython 3, 87 bytes
Or 97 with the following:
This assumes inputs will be in the format:
sumber
Japt, 25 bytes
Try it online!
sumber