Berikut adalah contoh input monolit . Ada 4 dalam contoh ini.
_
| | _
| | _ | |
| | | | | | _
_| |_| |___| |____| |_
Monolit pertama adalah 4 unit tinggi, yang kedua adalah 2, yang ketiga adalah 3, dan yang terakhir adalah 1.
Tugas
Program Anda harus menampilkan ketinggian monolit secara berurutan dari kiri ke kanan. Format output dapat berupa daftar atau larik apa pun.
Catatan
- Input dapat diambil sebagai string dimensi, daftar string, atau daftar karakter.
- Ini adalah kode-golf , sehingga byte terendah menang .
- Anda harus berasumsi bahwa monolit selalu memiliki lebar yang sama, dan selalu
_
berjarak 1 dari yang lain. - Mereka bisa datang dalam ketinggian berapa pun, dan dalam jumlah berapa pun.
I / O
_
| | _
| | _ | |
| | | | | | _
_| |_| |___| |____| |_ >> [4,2,3,1]
_
| |
_ | |
| | _ | | _
_| |_| |__| |_| |_ >> [2,1,4,1]
_ _ _
| |_| |_| |_____ >> [1,1,1]
____________________ >> undefined behavior
_
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | >> [11]
_ _ _ _ _
_ | | _ | | _ | | _ | | _ | |
| |_| |_| |_| |_| |_| |_| |_| |_| |_| | >> [1,2,1,2,1,2,1,2,1,2]
[10]
monolit Anda tidak[11]
?Jawaban:
Jelly , (8?) 9 byte
Tautan monadik yang menerima daftar karakter seperti yang ditentukan dan mengembalikan daftar bilangan bulat.
Catatan: 8 byte jika daftar string, satu per baris, benar-benar dimaksudkan sebagai format input yang diizinkan - hapus saja
Ỵ
.Cobalah online!
Bagaimana?
sumber
Jelly , 11 byte
Cobalah online!
sumber
JavaScript (ES6),
7978 byte-1 byte terima kasih kepada @Shaggy
Mengambil input sebagai array string.
Cuplikan Tes
sumber
a=>a.map((x,y)=>x.replace(/_/g,(_,z)=>c[z]=a.length-y-1),c=[])&&c.filter(n=>n)
replace
. Terima kasih!C ++,
171169 byteCobalah online!
C ++ (GCC), 150 byte
Terima kasih kepada @aschepler!
Cobalah online!
sumber
f(auto s)
dan menentukan dibutuhkan wadah akses acak dari wadah akses acakchar
.05AB1E , 11 byte
Cobalah online!
ζ
telah diganti oleh.Bø
di TIO karena belum ditarik ke sana.sumber
Dyalog APL, 29 byte
Jalankan dengan
⎕IO←0
.Cobalah online!
Bagaimana?
⌽⍵='_'
- di mana⍵
adalah'_'
, baris pertama atas×
- kalikan dengan ...(⍳≢⍵)
- kisaran⍵
(nol diindeks)↑¨
- untuk setiap baris, pad dengan nol dengan ...(⌈/⍴¨⍵)
- panjang maksimal↑+/
- jumlah baris zip dan ratakan0~⍨
- menghapus nolsumber
Python 2 , 75 byte
Cobalah online!
sumber
PowerShell, 133 byte
Sepertinya itu tidak terlalu kompetitif; itu mengganti regex untuk mengubah menara menjadi kolom 1, membuat array 0 panjang string input, kemudian melangkah melalui garis menambahkan 1s.
Tes siap dijalankan:
sumber
Japt , 11 byte
Uji secara online!
Penjelasan
sumber
Retina ,
4838 byteCobalah online! Tautan termasuk contoh pertama. Penjelasan: Baris diawali yang akan mengumpulkan hasil. Karena setiap kolom secara berulang dihapus pada gilirannya, mereka yang berisi
_
permukaan tanah di atas memiliki jumlah baris yang tersisa dalam kolom dihitung. Akhirnya baris kosong sekarang dihapus. Sunting: Disimpan 10 byte berkat inspirasi dari @FryAmTheEggman.sumber
_
s yang jauh lebih masuk akal daripada mencoba menggunakan huruf|
s, terima kasih!$.%`
, dan tahap akhir bisa!`\d+
. Dan jika Anda mengubah tahap pertama menjadi lookahead, Anda tidak perlu mengulang.Java 8,
133117116114 byteMengambil input sebagai (← menghemat 16 byte). -2 byte sebagai ganti untuk output yang kurang mudah dibaca berkat @ OlivierGrégoire dengan mengubah ke .
String[]
char[][]
print(l-j+",")
println(l-j)
Penjelasan:
Coba di sini.
sumber
_
jika menemukan toko itu lokasi kemudian memesan itu, mengabaikan baris bawah tentu saja. Mungkin bisa membantu menghemat byte ...new[,]
alih-alih array bergerigi yang Anda gunakannew[][]
. Jika Anda memilikinya di Jawa, Anda bisa menghemat beberapa byte.System.out.println(l-j);
terlihat cukup mencolok bagi saya untuk cadangan 2 byte. Juga, dalam penjelasannya, Anda lupa untuk mengubahnyalength()
menjadilength
(tidak ada kejadian pada byte-count seperti yang benar dalam pengiriman).Haskell,
7574 byteInput diharapkan sebagai daftar string (searah).
sumber
Rubi , 82 byte
Mengambil dalam daftar garis.
Cobalah online!
sumber
APL (Dyalog) , 14 byte
dengan
⎕IO←0
Cobalah online!
Fungsi kereta ini setara dengan
{((⍳≢⍵)+.×('_'=⊖⍵))~0}
sumber
MATL , 12 byte
Input adalah matriks char, dengan
;
pemisah baris.Cobalah online! Atau verifikasi semua kasus uji .
sumber
C #,
150144137 byteVersi Lengkap / Terformat:
sumber
Java 8 -
229 Bytes213 BytesCobalah online!
Tidak Terkumpul:
Woo, posting pertama. Setiap bantuan untuk meningkatkannya akan sangat bagus.
Saya tahu saya bisa menyingkirkanTahu itu! Saya bermain-main dengan gagasan untuk mengubah jenis di peta dari Integer ke Long tapi saya pikir itu jalan buntu.indexOf
tulisan itu dua kali.Saya tahu ada solusi Java 8 yang jauh lebih baik , tapi itu mengambil
char[][]
input yang saya pikir lebih mudah untuk digunakan dalam hal ini daripada String.sumber
Map
tapiint[]
(mungkin diinisialisasinew int[99]
?). Tidak perlu ruang setelahString[] l
:String[]l
bekerja sama dan lebih pendek. Gunakanprintln(l.length-i-1)
sebagai gantiprintln(l.length-i-1+",")
. Jangan initializej
: hanya menulis:,j;
. Jika Anda menggunakanint[]
seperti yang disarankan sebelumnya, deklarasikan seperti ini:int m[]=new int[99],i=0,j;
dan hapus deklarasi darifor-loop
.import java.util.*;s->{Map m=new TreeMap();String[]a=s.split("\n");int l=a.length-1,j=-1,i=j;for(;++i<l;)for(s=a[i];(j=s.indexOf("_",j+1))>=0;m.put(j,i));for(Object o:m.values())System.out.println(l-(int)o);}
. Tidak perlu untuk<Integer,Integer>
peta saat Anda dapat melakukan castint
;a.length-1
digunakan dua kali, jadi Anda bisa menggunakan variabel untuk itu; dengan meletakkan segala sesuatu di dalam untuk loop Anda dapat menyingkirkan semua tanda kurung. Oh, dan selamat datang di PPCG! :)MATL , 10 byte
Input adalah matriks karakter empuk.
Cobalah online!
sumber
Mathematica,
484739 byteCobalah online!
Function
yang mengharapkan array karakter persegi panjang. MengambilMost
array (semua kecuali baris terakhir),Reverse
s itu, lalu ambilTranspose
*, lalu temukan semuaPosition
di mana_
karakter muncul. Ketinggian yang relevan adalahLast
elemen dari masing-masingPosition
.*
adalah3
karakter penggunaan byte pribadiU+F3C7
yang mewakili\[Transpose]
dalam Mathematica. Perhatikan bahwa ini tidak berfungsi dalam Matematika , jadi tautan TIO hanya menggunakanTranspose
.sumber
SOGL V0.12 , 9 byte
Coba Di Sini!
Mengambil input sebagai array array string (karakter).
Penjelasan:
sumber
JavaScript (ES6),
10810488 byteDisimpan 16 byte berkat @JustinMariner
Input diambil sebagai larik string
sumber
Array.map
, itu trik keren.exec
dan menyimpan beberapa byte.exec
akan cocok dengan yang pertama. Itu benar-benar crash editor snipet pertukaran pertukaran jika Anda inline regex. Kecuali saya kehilangan sesuatu?CJam,
1514 byte1 byte disimpan berkat @BusinessCat
Ini adalah blok yang mengambil array string pada stack dan menghasilkan array.
Penjelasan:
sumber
Pip ,
1817 byte15 byte kode, +2 untuk
-rp
bendera.Mengambil input dari stdin. Cobalah online!
Penjelasan
sumber
Pyth ,
191514 byteUji secara online! Input adalah daftar baris.
Penjelasan
sumber
Oktaf, 31 byte
Mengambil array karakter 2D sebagai input.
Verifikasi semua kasus uji!
sumber
Perl 6 , 65 byte
Cobalah online!
m:exhaustive/^^(\N+)_([\N*\n]+:)/
mencari string input untuk semua garis bawah, dan mengembalikan objek yang cocok untuk masing-masing, di mana tanda kurung menangkap pertama berisi bagian sebelumnya dari garis di mana garis bawah ditemukan, dan tanda kurung menangkap kedua berisi seluruh sisa string. Sisa string harus mengandung setidaknya satu baris baru, jadi kami tidak menghitung garis bawah pada permukaan tanah. Itu:exhaustive
Bendera memungkinkan pertandingan ini untuk tumpang tindih..sort(*[0].chars)
mengurutkan objek yang cocok ini dengan jumlah karakter di bagian garis sebelum setiap garis bawah. Ini memerintahkan mereka dari kiri ke kanan..map(+*[1].comb("\n"))
memetakan setiap objek yang cocok ke jumlah karakter baris baru di bagian string input yang mengikuti setiap garis bawah - yaitu ketinggian. Ini\n
adalah karakter baris baru yang sebenarnya, menghemat satu byte.sumber
PHP, 119 byte
Mari kita hancurkan ini! Masukan kami di sini adalah array karakter 2D.
sumber
Dibawa dalam string multiline. Kredit untuk pengaturan (header dan footer) ke @GarethPW
Python 2 , 29 byte
Cobalah online!
Ini hanya akan membagi array dengan baris baru dan mengembalikan panjang-1.
sumber