Baiklah, usaha kedua saya di kode golf, mari kita lihat bagaimana kelanjutannya.
Berpura-puralah Anda memiliki larik 9 nilai. Sekarang bayangkan array itu dalam kisi 3x3.
Anda harus mengembalikan tetangga yang nomornya miliki sebagai indeks array.
0 | 1 | 2
3 | 4 | 5
6 | 7 | 8
Aturan:
- Ini kode golf, jadi jawaban terpendek menang.
- Indeks array pura-pura dapat mulai dari 0 atau 1. (semua contoh menggunakan 0 meskipun)
- Hanya mengembalikan nilai, nilai disukai (seperti
if 3: return 046
) - Pengajuan dapat berupa prosedur / fungsi / metode, tetapi sebuah contoh akan menyenangkan
- Nilai yang dikembalikan bisa dalam urutan apa pun (seperti jika input 0 bisa 13 atau 31)
- jika Anda mau, outputnya bisa berupa daftar angka, misalnya
[0,4,6]
bukan046
- diagonal tidak masuk hitungan, seperti yang terlihat pada contoh.
Contoh:
memasukkan:
0
keluaran:
13
memasukkan:
3
keluaran:
046
memasukkan:
4
keluaran:
1357
[0,4,6]
bukan046
?Jawaban:
Jelly ,
1613 byteCobalah online!
Bagaimana itu bekerja
sumber
MATL ,
1716 byteArray ini berbasis 1, yaitu berisi angka dari
1
hingga9
.Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pertimbangkan input
2
sebagai contoh.sumber
Mathematica, 32 byte
Menggunakan grafik, bukan array.
GridGraph@{3,3}
membangun grafik berbentuk kotak 3x3, yang ditunjukkan di bawah ini, yang Mathematica membantu memberi label dengan angka 1–9 untuk simpul secara default. Lalu~AdjacencyList~#&
memberitahu Anda tetangga dari sebuah simpul.sumber
Mathematica, 40 byte
1-diindeks. Hanya mencari jawabannya. Bisakah seseorang berbuat lebih baik di Mathematica?
sumber
31[420,51,...,75][[#]]&
.GridGraph@{3,3}~AdjacencyList~#&
untuk 32 byte, dengan pengindeksan 1.Oktaf,
424039 byteIndeks berbasis 1.
Verifikasi semua kasus uji.
Penjelasan:
Contoh:
n = 2
(Dalam Oktaf data disimpan menurut kolom.)
indeks logis dengan jarak 1:
sumber
Python 2, 71 byte
1-diindeks
Coba online!
Mendapatkan hasil dari daftar hasil yang ditentukan sebelumnya lebih pendek (46 byte):
Diindeks 0
Cobalah secara online!
sumber
Haskell ,
74 7168 byteCobalah online! Menggunakan kisi 1-diindeks. Contoh penggunaan:
f 3
pengembalian[2,6]
.Sunting: Disimpan
36 byte berkat Ørjan Johansen!Untuk
7775 byte, fungsi berikut berfungsi#
untuk ukuran kisi sembarangm
:Cobalah online! Untuk setiap
n
daftar[n-m,n-1,n+1,n+m]
berisi keempat tetangga. Untuk setiap entrix
dalam daftar ini kami memeriksa-1<x
danx<m*m
memastikanx
tidak di atas atau di bawah grid,mod n 3>0||n-1/=x
untuk menegakkan batas grid kiri danmod(n+1)m>0||n+1/=x
untuk perbatasan kiri.sumber
[n-3,n-1..n+3]
dangcd 3n>1
.gcd
bagian itu. Seharusnya<3
, dan kemudian istirahatn==0
. Anda mungkin dapat menggunakan trik itu jika Anda mengubah semuanya menjadi1
-indeks.n/=2&&n/=5
bisa diganti olehmod x 3>0
. (Ataugcd
versi dengan pengindeksan ulang, yang sekarang dapat digunakan dua kali.)Ruby ,
51 4845 byteCobalah online!
Buat 2 array, dengan tetangga vertikal dan horizontal, lalu pilih satu atau lebih dari mereka.
Ruby hardcoded, 44 byte
... Tidak layak.
sumber
C,
1009291837874 byte1-diindeks. Terima kasih kepada @Neil untuk menghemat 4 byte.
Cobalah online!
Versi hardcoded, 56 byte
Diindeks 0
sumber
n>3&&p(n-3)
dll untuk menghemat 4 byte? Dalam versi kedua, tidak bisakah Anda menulisl[]=
untuk menyimpan byte?Python 2, 51 byte
Berdasarkan versi sebelumnya dari jawaban Ruby saya , saya menemukan itu menarik karena sebagian besar kode yang sama, menggunakan trik yang berbeda, dan menghasilkan hasil yang sama. Memperbaiki yang satu ini membantu saya memberi golf jawaban ruby sedikit lebih.
Pada dasarnya, ruby memilikinya lebih pendek karena indeks slice array inklusif, python perlu
+1
ganti rugi.Penjelasan
Dapatkan 2 array (tetangga vertikal dan horizontal), lalu pilih satu atau keduanya berdasarkan beberapa perhitungan.
sumber
Java 7, 63 byte (hardcoded)
0-diindeks
(Keluaran pesanan terbalik karena
024
dan046
bukan bilangan bulat yang valid.)Masih bekerja pada versi yang tidak dikodekan, tetapisaya dapat meyakinkan Anda bahwa itu tidak akan lebih pendek ..Coba di sini.
82 byte
1-diindeks
Berdasarkan jawaban @Steadybox 'C
Coba di sini.
sumber
JavaScript + lodash, 71 byte
sumber
Batch, 116 byte
Diindeks 0.
sumber