Jika ada keraguan: Nan = Non-numeric datatype
untuk keperluan tantangan ini.
Tulis program atau fungsi yang mengambil matriks / array sebagai input, serta daftar indeks kolom.
Tantangannya adalah menghapus baris tempat semua elemen dalam kolom yang ditentukan Nan
. Tidak masalah apakah elemen lain di baris itu numerik atau tidak. Contoh-contoh berikut diharapkan akan membuat ini lebih jelas (ini satu-diindeks):
Input array:
16 NaN 3 13
5 11 NaN 8
NaN 7 NaN 12
4 14 -15 1
Input column index: [1 3]
Output array:
16 NaN 3 13
5 11 NaN 8
4 14 -15 1
----
Input array:
16 NaN 3 13
5 11 NaN 8
NaN 7 NaN 12
4 14 -15 1
Input column index: 3
Output array =
16 NaN 3 13
4 14 -15 1
----
Input array:
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
Input column index: 1 2 4
Output array:
[]
Aturan dan klarifikasi:
- Matriks akan selalu kosong
- Nilai numerik akan terbatas, tetapi tidak harus bilangan bulat atau nilai positif
- Vektor indeks kolom bisa kosong (dalam hal ini tidak ada baris akan dihapus)
- Indeks kolom tidak akan pernah memiliki nilai yang melebihi dimensi matriks
- Anda dapat mengasumsikan tidak akan ada duplikat dalam daftar indeks kolom
- Anda dapat memilih jika ingin menggunakan nilai nol atau satu indeks (harap sebutkan)
- Anda dapat mengambil input pada format apa pun yang nyaman
- Array sebagai daftar daftar adalah OK. Indeks kolom dapat berupa argumen terpisah
ans =
dan yang serupa diterima dalam output- Anda bebas memilih tipe data non-numerik apa yang ingin Anda gunakan
- Seharusnya tidak mungkin untuk melakukan operasi aritmatika dengan tipe data ini, atau mengonversinya menjadi angka terbatas menggunakan fungsi seperti
float(x)
.
- Seharusnya tidak mungkin untuk melakukan operasi aritmatika dengan tipe data ini, atau mengonversinya menjadi angka terbatas menggunakan fungsi seperti
Ini adalah kode golf, jadi kode terpendek dalam byte menang.
sumber
J
denganvz
danK
denganQ
.z
diinisialisasi ke input,Q
untuk input dievaluasi.?KEfnmklKm@TdKQQ
daftar kosong palsu di Pyth, dan pernyataan penugasan mengembalikan nilai yang ditugaskan, yang menyimpan beberapa byte. Saya harap Anda menikmati golf Pyth! :)L
->fnks@LTQE
JavaScript (ES6),
4846 bytePenjelasan
Mengharapkan array baris sebagai array, dan array angka 0-diindeks untuk kolom untuk memeriksa. Mengembalikan array array.
Terus terang
filter
dansome
. MemeriksaNaN
dengan menggunakann < Infinity
(true
untuk nomor hingga,false
untukNaN
s).sumber
CJam, 18 byte
Blok yang tidak disebutkan namanya (fungsi) mengharapkan matriks dan indeks kolom berbasis nol pada stack (matriks di atas), yang meninggalkan matriks yang difilter pada stack. Saya menggunakan array kosong
""
sebagai nilai non-numerik.Uji di sini.
Penjelasan
sumber
The column index vector can be empty (in which case no rows will be removed)
""
" Apakah maksud Anda "string kosong"?[]
dan""
identik dan representasi kanonik adalah""
(misalnya itu yang Anda dapatkan ketika Anda merender array kosong).APL, 19 byte
Argumen kiri harus daftar indeks (dan harus daftar, bukan skalar), argumen yang tepat adalah matriks. APL memiliki dua tipe data, angka, dan karakter, jadi ini menyaring tipe karakter.
Tes:
Penjelasan:
⍵[;⍺]
: pilih kolom yang diberikan dari matriks0↑¨
: ambil0
elemen pertama dari awal setiap item⍬∘≡¨
: dibandingkan dengan daftar kosong numerik∨/
: lihat baris mana yang paling tidak cocok dengan satu item⍵⌿⍨
: pilih baris-baris itu dari matrikssumber
MATLAB,
3228 byteSaya akan menjawab pertanyaan saya sendiri sekali. Yang terbaik yang bisa saya lakukan di MATLAB adalah 28 byte.
Saya berharap untuk tidak menggunakan keduanyaall
danisnan
entah bagaimana, tetapi belum menemukan cara.Uji:
Ini adalah fungsi anonim tanpa nama yang menggunakan matriks input sebagai variabel input pertama, dan daftar indeks kolom sebagai yang kedua.
Di MATLAB,
NaN < Inf
evaluasi menjadi false. Dapat diasumsikan bahwa semua nilai terbatas, sehingga memeriksa jika nilai kurang dariinf
setara dengan memeriksa jika mereka non-numerik.any(...,2)
memeriksa apakah ada nilai sebenarnya di sepanjang dimensi kedua (baris). Jika itu masalahnya, maka baris-baris itu akan dikembalikan.Versi lama:
isnan(A(:,c))
mengembalikan array dengan boolean untuk kolom yang ditentukan.~all(isnan(A(:,c)),2)
memeriksa apakah semua nilai di sepanjang dimensi kedua (baris) adalah non-numerik, dan meniadakannya. Ini menghasilkan vektor boolean dengan yang ada di posisi yang ingin kita pertahankan.A(~all(isnan(A(:,c)),2),:)
menggunakan pengindeksan logis untuk mengekstrak seluruh barisA
.Solusi 24 byte berikut ini akan berfungsi jika nilainya dijamin tidak nol:
sumber
Ruby, 48 byte
Input adalah indeks berbasis 0 1 .
Cukup jelas, sebenarnya.
select
elemen dari array di manaany?
indeksmap
mengayuh pada baris adalahFixnum
s.Contoh dijalankan:
1: Saya akhirnya mengeja kata ini dengan benar pada percobaan pertama! \Hai/
sumber
K5, 15 byte
Ini menggunakan kolom yang diindeks 0 dan representasi matriks daftar-daftar-alami K:
Indeks ke dalam matriks (
x@
) baris di mana (&
) tidak semua dari masing-masing (~&/'
) adalah null (^
).Dalam aksi:
sumber
MATL , 15
16byteNaN
direpresentasikan dalam input sebagaiN
. Pengindeksan adalah berbasis 1. Misalnya, dalam kasus uji pertama inputnya adalahCobalah online!
Penjelasan
sumber
R, 49 byte
Input berbasis 1. Fungsi ini mengambil matriks (
m
) dan vektor indeks kolom (j
) yang mungkin hilang.Dua uji kasus:
sumber
Lua, 148 Bytes
Fungsi yang mengambil matriks dan array sebagai input, dan menampilkan matriks dengan baris yang sesuai di
nil
. Karena array sama dengan array C, nihilating sama denganfree()
itu karena pengumpul sampah tidak jauh.Array 1-diindeks dalam Lua, dan saya menggunakan string
"NaN"
sebagai elemen non-nomber.Anda dapat mencoba Lua online , dan menyalin / menempelkan contoh kode berikut untuk mencoba pengiriman ini:
sumber
Mathematica,
52514946 byteInput adalah [matriks sebagai daftar daftar, vektor kolom]
sumber
Haskell, 39 byte
Ini menggunakan indeks berbasis 0. Contoh penggunaan (saya gunakan
sqrt(-1)
untuk membuatNaN
s):Itu hanya filter sederhana seperti yang terlihat pada jawaban lain melalui pemahaman daftar. Kasus khusus dari daftar indeks kosong ditangkap secara terpisah.
sumber