Tantangan
Diberi kisi angka (10 <= N <= 99) Mengembalikan angka dengan jumlah tertinggi dari empat angka yang berdekatan dengannya; itu adalah angka-angka di atas, di bawah, kanan, dan kiri dari angka itu, tetapi tidak dengan sendirinya.
- Jumlahnya sendiri tidak dihitung, hanya empat tetangganya.
- Angka di tepi harus diperlakukan seolah-olah angka yang hilang adalah 0.
- Saya akan merancang tes untuk menghindari ikatan.
- Angka tidak akan berulang.
- Ini adalah kode-golf .
Contoh
Diberikan
56 98 32 96
12 64 45 31
94 18 83 71
Kembali
18
Tes Nyata
Diberikan
98 95 67 66 57 16 40 94 84 37
87 14 19 34 83 99 97 78 50 36
18 44 29 47 21 86 24 15 91 61
60 41 51 26 10 58 11 62 55 71
42 85 56 12 46 81 93 65 49 77
89 13 74 39 54 76 92 33 82 90
96 88 70 79 80 28 25 20 75 68
38 63 17 72 53 48 73 30 45 69
64 35 32 31 23 43 22 52 27 59
Kembali
13
Diberikan
82 43 79 81 94 36 17 64 58
24 52 13 87 70 18 28 61 69
16 99 75 21 50 44 89 90 51
49 80 63 31 54 65 41 55 38
67 91 76 78 23 86 83 14 73
46 68 62 77 34 48 20 74 10
33 35 26 97 59 66 25 37 32
12 92 84 27 85 56 22 40 45
96 15 98 53 39 30 88 71 29
60 42 11 57 95 19 93 72 47
Kembali
15
Jawaban:
MATL ,
20151312 byteDisimpan 5 byte berkat Emigna, 2 terima kasih kepada Giuseppe, dan terima kasih lainnya untuk Luis Mendo.
Cobalah online!
Penjelasan
sumber
APL (Dyalog Unicode) ,
3127262423 byte SBCS-2 Terima kasih kepada dukun Sapi. -1 terima kasih kepada ngn.
Fungsi awalan diam-diam anonim. Mengambil matriks sebagai argumen. Diasumsikan
⎕IO
( I ndex O rigin)0
, yang merupakan default pada banyak sistem.Cobalah online!
,
mengecilkan (meratakan) input{
...}⊃
pilih elemen dari itu sesuai dengan hasil dari fungsi berikut:⊢⍵
menghasilkan argumen (terpisah3 3
dari⍵
)...
⌺3 3
terapkan fungsi berikut untuk masing-masing lingkungan 3-oleh-3:⊢∘,
abaikan informasi tepi yang mendukung lingkungan yang berantakan (rata)(
...)
terapkan fungsi diam-diam berikut untuk itu-/
jumlah bolak-balik (lit. right-associative minus reduction)+/-
kurangi itu dari jumlah (ini memberi jumlah dari setiap elemen lainnya),
Ravel (meratakan) bahwa (jumlah lingkungan)⍒
menghasilkan indeks yang akan mengurutkan itu⊃
pilih yang pertama (yaitu indeks jumlah tertinggi)sumber
{⊃⍒,{+/1↓⍉4 2⍴⍵}⌺3 3⊢⍵}⊃,
? Edit: atau bahkan{⊃⍒,{⊢/+⌿4 2⍴⍵}⌺3 3⊢⍵}⊃,
{⊃⍒,(+/--/)⊢∘,⌺3 3⊢⍵}⊃,
Jelly , 22 byte
Cobalah online!
Tidak memiliki built-in konvolusi seperti MATL dan Dyalog.Melupakan bahasa Anda memiliki built-in convolution (terima kasih @dylnan) sakit, tapi kita bisa melakukan semacam oke tanpa mereka, sebagian berkatŒM
danœị
. Pertama, fungsi helper untuk menghitung tetangga hanya dalam satu arah, yang secara kebetulan mentranspos input:Secara visual, perhitungannya adalah:
Interpretasi: sel (x, y) dari hasil ini adalah jumlah tetangga horisontal sel (y, x). (Sebagai contoh, di sini kita melihat bahwa f (A) [2,3] = 16 = 7 + 9 = A [3,1] + A [3,3] .)
Kemudian, fungsi utama:
sumber
æc
?Jelly , 18 byte
Cobalah online!
Fungsi helper menemukan tetangga dari setiap elemen di setiap baris. Fungsi utama melakukan ini pada baris dan kolom kemudian menemukan elemen yang memiliki jumlah lingkungan maksimum.
sumber
Bahasa Wolfram (Mathematica) , 58 byte
Cobalah online!
sumber
Python 2 , 127 byte
Cobalah online!
sumber
Stensil , 1 + 10 = 11 byte (tidak bersaing)
Opsi baris perintah:
1
menghitung 1 generasiCobalah online!
y
dari input asli diratakan⊃⍨
pilih⊃
yang pertama⍒
dalam urutan,
rata+/
jumlahN
lingkungan von neumanN tanpa dirisumber
y
bahasa ketika saya melihat bahwa diperlukan akses yang lebih mudah ke input asli. Sebelum itu, Anda harus menulis(,⍎'input')
alih-alihy
.JavaScript (ES6), 94 byte
Cobalah online!
Bagaimana?
Alih-alih mencari maksimum jumlah dari 4 tetangga, kita mencari minimum m dari jumlah s dari mereka satu-pelengkap. Ini memungkinkan kami memproses nilai yang tidak ditentukan seperti nol, karena:
Peta dalam () ditulis sedemikian rupa sehingga tidak mengubah konten baris r . Oleh karena itu, kita dapat menyimpan hasilnya dalam p untuk menguji tetangga teratas di iterasi berikutnya.
Kita gunakan:
~r[x-1]
untuk sel kiri~r[x+1]
untuk sel yang tepat~p[x]
untuk sel atas~(a[y+1]||0)[x]
untuk sel bawahsumber
K (ngn / k) ,
4340 byteCobalah online!
sumber
Java 8, 187 byte
Cobalah online.
Penjelasan:
sumber
Javascript ES6, 170 byte
sumber