Inilah tantangan yang relatif sederhana untuk Anda:
Diberikan daftar bilangan bulat positif:
Sejajarkan mereka dalam kotak, dan jumlah setiap kolom. Misalnya, jika inputnya adalah
[123, 7, 49, 681]
, grid akan terlihat seperti ini:1 2 3 7 4 9 6 8 1
Dan jumlah dari setiap kolom adalah
[18, 19, 4]
:1 2 3 7 4 9 6 8 1 -------- 18 19 4
Temukan maksimum jumlah ini, yang dalam hal ini akan menjadi 19, dan kemudian
Keluarkan setiap digit dengan indeks yang sama dengan kolom maksimum ini. Dalam hal ini, itu akan terjadi
2 9 8
Anda tidak harus menampilkan angka-angka ini dalam urutan tertentu. Perhatikan bahwa hanya ada tiga output, meskipun kami memiliki 4 input. Untuk dasi, pilih indeks yang paling awal. Misalnya, jika inputnya adalah
[25, 223, 302]
, kisi Anda adalah:2 5 2 2 3 3 0 2 ------- 7 7 5
Anda harus mengeluarkan
2 2 3
Anda dapat mencetak angka-angka ini dalam format apa pun yang Anda suka. Format daftar, baris baru, ruang terpisah, dll. Anda tidak boleh mengambil input sebagai array angka 2D, mis
[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]
Tetapi selain itu, Anda dapat mengambil input sebagai daftar string, daftar digit, atau format lain yang masuk akal.
Anda juga dapat mengasumsikan bahwa semua input akan valid dan mengandung setidaknya dua angka.
Seperti biasa, jawaban terpendek dalam byte menang!
Tes IO:
#Input #Output
[1, 11, 111, 1111] --> [1, 1, 1, 1]
[1, 12, 123] --> [2, 2]
[987654321, 111] --> [9, 1]
[111, 123456789] --> [9]
[4, 8, 15, 16, 23, 42] --> [4, 8, 1, 1, 2, 4]
[4, 8, 12, 26, 27, 38] --> [2, 6, 7, 8]
[24, 53] --> [2, 5]
[12, 304, 506] --> [4, 6]
[30, 285, 121] --> [0, 8, 2]
0
. Nol biasanya tidak dianggap positif dalam bahasa Inggris.Jawaban:
Haskell, 63 byte
Contoh penggunaan:
argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]
->[4,6]
.Bagaimana itu bekerja:
sumber
Jelly , 6 byte
Cobalah online! . Ini adalah implementasi pertanyaan yang relatif mudah.
sumber
Ruby,
10097 bytesumber
eval e*?+
bagus! Anda juga bisa melakukannya$<.map
; tidak perlu memercikkannya ke dalam array.Mathematica 82 byte
Ini mengisi digit masing-masing angka dengan x di sebelah kanan, transpos matriks, menghapus dummy x, memesan dengan jumlah digit dan mengambil yang terbesar.
Seharusnya ada beberapa cara untuk menggunakan bentuk superscript-T
Transpose
untuk menyimpan beberapa byte.sumber
Perl,
4948 byteTermasuk +1 untuk
-p
Jalankan dengan input pada STDIN, cetak untuk STDOUT nomor kolom yang diawali oleh
+
lcolumn.pl
:sumber
Javascript (ES6),
108103100 byteIni agak bertele-tele dan mungkin bisa bermain golf lagi dengan pendekatan yang berbeda. Saya berharap saya bisa menyingkirkan ini
.filter(n=>n)
.Disimpan 5 byte berkat Neil
Disimpan 3 byte berkat edc65
Demo
sumber
(d,x)=>(
...,d)
maka bagian dalammap
mengembalikan salinank
, sehingga menghemat Anda harus menetapkank
, yang menghemat 4 byte.m
, yaitu(s[x]=(s[x]|0)-d)<m
, menghemat satu byte.a=>a.map(n=>[...n+''].map((d,i)=>(t=s[i]=s[i]||[0],t.push(d),(t[0]-=d)<m?r=t:0)),s=[],m=0)&&r.slice(1)
+''
Pyth,
58 byteDimasukkan dalam input sebagai daftar string, output sebagai daftar digit yang tidak terpisahkan.
Cobalah online!
Penjelasan:
sumber
Pyth, 11 byte
Suatu program yang mengambil input dari daftar bilangan bulat pada STDIN dan mencetak daftar.
Cobalah online
Bagaimana itu bekerja
sumber
JavaScript (ES6), 90
sumber
Pyth - 9 byte
Test Suite .
sumber