Terinspirasi oleh pertanyaan ini dari teman-teman saingan kami di Code Review.
Definisi
Sebuah Array Super adalah array di mana setiap elemen baru dalam array lebih besar daripada jumlah semua elemen sebelumnya. {2, 3, 6, 13}
adalah array super karena
3 > 2
6 > 3 + 2 (5)
13 > 6 + 3 + 2 (11)
{2, 3, 5, 11}
adalah tidak array super, karena
3 > 2
5 == 3 + 2
11 > 5 + 3 + 2
Sebuah Array duper adalah array di mana setiap elemen baru dalam array lebih besar dari produk dari semua elemen sebelumnya. {2, 3, 7, 43, 1856}
adalah array super, tetapi juga merupakan array duper sejak itu
3 > 2
7 > 3 * 2 (6)
43 > 7 * 3 * 2 (42)
1856 > 43 * 7 * 3 * 2 (1806)
Tantangan
Tulis fungsi atau program yang menggunakan array sebagai input dalam format daftar asli bahasa Anda, dan tentukan seberapa hebat array itu. Anda juga dapat secara opsional mengambil input panjang array (untuk bahasa seperti C / C ++). Juga, Anda dapat mengasumsikan bahwa semua nomor dalam daftar akan bilangan bulat lebih besar dari 0. Jika itu adalah yang super array, anda harus mencetak It's a super array!
Jika itu adalah yang super duper array, anda harus mencetak It's a super duper array!
Ada juga kemungkinan untuk array menjadi duper- bukan super. Sebagai contoh {1, 2, 3}
Dalam hal ini, Anda harus mencetak It's a duper array!
Jika array tidak super atau duper, Anda dapat mencetak nilai palsu.
Seperti biasa, ini adalah kode golf, sehingga celah standar berlaku, dan jawaban terpendek dalam byte akan menang.
sumber
{1, 2, 3}
array?2 * 1
menyamai3
kepalaku.super[space][space]array
diizinkan.Jawaban:
Jelly ,
47454̷4̷ 42 byteIni mencetak string kosong (falsy) untuk array yang bukan super atau duper. Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6),
111110 byteMenyimpan satu byte berkat @ETHproductions !
Penjelasan
Mengambil array angka, mengembalikan string atau angka
0
untuk false.Uji
Tampilkan cuplikan kode
sumber
s+=s&&n>s&&n,d*=d&&n>d&&n
s
perlu dilakukan dengan cara ini karena itu perlu diaturfalse
jikan>s
, tetapid*false
memiliki efek yang sama sehingga satu berfungsi. Terima kasih!Jawa,
183182 BytesSaya membuat asumsi berikut:
""
adalah nilai palsu.Jika ada yang salah, tolong beritahu saya.
Lagi pula, saya tidak bisa menghilangkan perasaan bahwa saya mungkin sudah berlebihan dengan jumlah variabel.
Sunting: berhasil menyimpan byte, berkat @UndefinedFunction
sumber
boolean s=true
keboolean s=1<2
?MATL , 66 byte
Menggunakan rilis saat ini (10.0.3) , yang lebih awal dari tantangan ini.
Masukan dari stdin. Jika tidak super atau duper, output kosong (yang salah).
EDIT (7 April 2016) : karena perubahan dalam rilis 16.0.0 bahasa,
5L
dan6L
perlu diganti oleh3L
dan secara4L
repektif. Tautan ke kompiler online mencakup modifikasi-modifikasi itu.Cobalah online !
Penjelasan
sumber
C ++ 14,
178, ..., 161157 byteTidak bisa memikirkan cara untuk membuatnya lebih pendek.Sepertinya selalu ada ruang untuk perbaikan!Pembaruan 1 : Saya semua untuk kode aman, tetapi mengambil array mentah dan ukurannya sebagai argumen fungsi lebih pendek 9 byte daripada mengambil vektor :(
Pembaruan 2: Sekarang mengembalikan string kosong sebagai nilai palsu, dengan biaya 8 byte.
Pembaruan 3: Kembali ke 165 byte, berkat komentar CompuChip.
Perbarui 4: Komentar lain oleh CompuChip, off 4 byte lainnya.
Pembaruan 5: menggunakan
auto
alih-alihstring
bersama dengan saran lain oleh CompuChip mencukur 4 byte lainnya dari kode.Program lengkap yang tidak digabungkan dengan kasus uji:
Keluaran:
sumber
It's a array!
itu benar ( bukti ) menurut definisi kami tentang Meta .if ... >=
perbandingan panjang : saya pikire=r>s?e:0
setara denganif(r<=s)e=0
.for(s=p=*a;--n;s+=r,p*=r)r=*++a
bekerja? Akan memungkinkan Anda untuk turuni
sama sekaliC, 150 byte
Setiap input diakhiri oleh a
0
. Tes utama:Bonus jika kita diizinkan format output yang lebih kompak, kita dapat memotongnya 107 byte :
Dalam hal ini,
Z
kembalilah3
untuk superduper,2
untuk super,1
untuk duper dan0
tidak ada.sumber
Pyth -
5452 byteBagian pemformatan string mungkin bisa golf, tapi saya suka pendekatan pengujian super-duper.
Test Suite .
sumber
c2"superduper"
bisa+R"uper""sd"
lang-pyth
tidak ada.Python 3, 127
Disimpan 5 byte berkat FryAmTheEggman.
Solusi yang cukup mendasar saat ini, tidak ada yang terlalu mewah. Hanya menjalankan total jumlah dan produk yang berjalan dan memeriksa setiap elemen.
Inilah kasus-kasus pengujian untuk berjaga-jaga jika ada orang lain yang ingin mengalahkan skor saya.
sumber
AWK - 140 byte
Bagi mereka yang tidak tahu AWK, catatan secara otomatis diuraikan ke dalam garis berdasarkan variabel
RS
dan garis secara otomatis diurai ke dalam bidang berdasarkan variabelFS
. Variabel yang tidak ditugaskan juga adalah "" yang ketika ditambahkan ke # bertindak seperti 0.BEGIN
Bagian ini dipanggil tepat sekali, sebelum catatan / bidang apa pun diuraikan. Sisa bahasanya cukup mirip C dengan setiap blok kode yang cocok diterapkan pada setiap record. Lihat http://www.gnu.org/software/gawk/manual/gawk.html#Getting-Mulai untuk detail lebih lanjut.Contoh run di mana
'code'
adalah seperti di atas:echo 1 2 6 | 'code'
Bisa juga menempatkan array di file bernama Nama file dan jalankan sebagai:
'code' Filename
Jika kode ini sering dijalankan, kode tersebut dapat ditempatkan dalam file skrip yang dapat dieksekusi. Ini akan menghapus penutup
' '
danawk
perintah akan ditempatkan di bagian atas file sebagai:#!/bin/awk -f
sumber
It's a array!
untuk array yang bukan super atau duper, yang merupakan string yang benar menurut definisi kami tentang Meta .echo 1 2 6 | <the above code>
PHP,
144...113112 BytesPenjelasan:
Tanpa mendaftar global akan menjadi ini (118 byte):
$a
(hasil konversi array ke stringArray
)$p
ke 1, sehingga menaikkan biaya produk lebih murah.sumber
$a
. Anda tidak perlu khawatir tentang pemberitahuan dan hal-hal - cukup abaikan saja di situs ini.$argv[1]
adalah alternatif yang baik. Yang sedang berkata, tantangan ini sangat kabur tentang itu dalam dan format output. Tetapi Anda mungkin dihukum karena tantangan lain dengan pendekatan ini. Dan pengkodean keras input sebenarnya tidak dapat diterima - meskipun ada beberapa pengecualian yang mengizinkannya. Saya tahu bahwa membaca input sangat mahal di PHP itu sebabnya saya mengajukan pertanyaan serupa tentang meta tentang itu .register_globals
, tetapi saya akan menulis golf masa depan sebagai fungsi. Mengapa oh mengapa short_closures ditolak?R , 115 byte
Cobalah online!
Nilai palsu:
It's a array!
Tidak ada yang terlalu mewah di sini kecuali mungkin menggunakansapply
pada daftar fungsi.sumber
Scala, 172 Bytes
Tidak digerogoti (walaupun sebenarnya tidak ada banyak pekerjaan untuk melakukannya):
sumber
Haskell, 136 Bytes
f
adalah fungsi yang diperlukan. Perhatikan bahwa jumlah kosong adalah 0 dan produk kosong adalah 1 yang mengapa[0]
bukan super atau duper.s
menangkap struktur umum pengujian super atau duper dengan mengambil operator yang arbitrero
dan elemen netral yang arbitrert
. Thefoldr
melacak tupel(s,b)
manas
adalah hasil dari chaining semua elemen terlihat dengan operatoro
danb
mengatakan apakah, untuk setiap elemen memandang sejauh ini, unsur ini adalah lebih besar dari sebelumnya dihitung jumlah / produk.Outputnya tidak banyak golf dan saya akan sangat menghargainya jika seseorang berkontribusi ide yang lebih baik!
Versi yang sedikit lebih mudah dibaca:
sumber
05AB1E ,
5351 byteCobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat di sini untuk penjelasan tentang bagaimana
.•dwā•
"duper" dan bagaimana„¦È!
"array!".sumber
Jelly , 37 byte
Cobalah online!
Program lengkap.
Saya mendapat
Z…P
ide dari jawaban (lama) Dennis.sumber