Versi lebih pendek dari Skyscrapers Challenge
Tugas
Diberikan array ketinggian bangunan dan bilangan bulat positif k
, temukan semua permutasi (tanpa duplikat) dari ketinggian sedemikian rupa sehingga k
bangunan benar-benar terlihat.
Setiap bangunan akan menyembunyikan semua bangunan dengan ketinggian lebih pendek atau sama di belakangnya.
Semua format untuk input dan output adalah valid.
Array input tidak akan pernah kosong.
Dalam hal ini tidak mungkin untuk melihat persis seperti banyak bangunan, mengeluarkan apa pun yang tidak bisa menjadi jawaban tetapi tidak ada kesalahan.
Contoh:
(Panjang output ditampilkan untuk output yang sangat panjang, tetapi output Anda harus semua permutasi yang mungkin)
input:[1,2,3,4,5],2
output: 50
input:[5,5,5,5,5,5,5,5],2
output: []
input:[1,2,2],2
output:[(1,2,2)]
Seeing from the left, exactly 2 buildings are visible.
input:[1,7,4],2
output:[(4, 7, 1), (1, 7, 4), (4, 1, 7)]
input:[1,2,3,4,5,6,7,8,9],4
output:67284
input:[34,55,11,22],1
output:[(55, 34, 11, 22), (55, 22, 34, 11), (55, 34, 22, 11), (55, 11, 34, 22), (55, 22, 11, 34), (55, 11, 22, 34)]
input:[3,4,1,2,3],2
output:31
Ini adalah kode-golf sehingga kode terpendek menang
Opsional: Jika memungkinkan, dapatkah Anda menambahkan sesuatu seperti if length is greater than 20: print length else print answer
. Di bagian footer, bukan di kode.
sumber
[1,2,3,4,5],5 -> [(1,2,3,4,5)]
. Tak satu pun dari kasus uji saat ini memastikan bahwa jawaban dapat mendukung menunjukkan semua bangunan (meskipun saya tidak tahu apakah ada yang benar-benar memiliki masalah dengan itu).Jawaban:
05AB1E ,
109 byteCobalah secara online atau verifikasi (hampir) semua test case (waktu test case
[1,2,3,4,5,6,7,8,9],4
habis).Footer TIO melakukan apa yang diminta OP di bagian bawah:
Penjelasan:
sumber
if length is greater than 20: print length; else print answer;
adalah a̶ ̶b̶y̶t̶e̶ ̶l̶o̶n̶g̶e̶r̶ dengan panjang yang sama dibandingkan dengan program itu sendiri. xDHaskell, 73 byte
Cobalah online!
sumber
Jelly ,
1210 byteCobalah online!
-2 bytes oleh @Erik the Outgolfer
Ini adalah fungsi diadik yang mengambil ketinggian bangunan dan
k
dalam urutan itu.sumber
ʋ
! (Ini lebih tua dariƇ
, sebenarnya: P)Pyth,
1816 byteCoba di sini .
Perhatikan bahwa versi online interpreter Pyth melempar kesalahan memori pada case uji terbesar.
sumber
Perl 6 ,
8163 byte-18 byte terima kasih kepada nwellnhof!
Cobalah online!
Blok kode anonim yang mengambil input kari, mis
f(n)(list)
. Itu.unique(:with(*eqv*))
sangat panjang:(
Penjelasan:
sumber
;
;)Japt , 11 byte
Cobalah online!
Untuk hasil yang lebih panjang, tambahkan
} l
ke ujung akan menghasilkan panjang sebagai gantinya. Juru bahasa online kehabisan waktu untuk[1,2,3,4,5,6,7,8,9],4
uji kasus, terlepas dari menghasilkan panjang atau daftar.Penjelasan:
sumber
JavaScript (ES6),
108107 byteMengambil input sebagai
(k)(array)
. Mencetak hasilnya denganalert()
.Cobalah online!
Berkomentar
sumber
Python 2 ,
114113 byteCobalah online!
-1 byte, terima kasih atas ovs
Python 3 , 113 byte
Cobalah online!
sumber
J,
4338 byte-5 byte setelah memasukkan optimasi dari jawaban O5AB13 Kevin
Cobalah online!
ungolfed
penjelasan
kami hanya mencantumkan semua izin yang mungkin
i.@!@#@] A. ]
, dengan mengambil item unik darinya~.
, lalu memfilternya berdasarkan jumlah bangunan yang terlihat, yang harus sama dengan input kiri.kuncinya adalah dalam kata kerja kurung yang menghitung jumlah bangunan yang terlihat:
Di sini kami menggunakan pemindaian maks
>./\
untuk menjaga penghitungan bangunan tertinggi yang terlihat sejauh ini. Kemudian kita hanya mengambil elemen unik dari pemindaian maks, dan itulah jumlah bangunan yang terlihat.sumber