Cari tahu tetangga nomor saya

11

Input terdiri dari i baris dengan informasi tetangga. Setiap baris ke- i berisi 4 nilai, yang mewakili tetangga saya ke arah Utara , Timur , Selatan dan Barat . Jadi setiap nilai merupakan tetangga di arah tertentu dari i th baris, mulai dari baris 1, dan bisa naik ke 65.535 baris. Nilai 0 menunjukkan tidak ada tetangga ke arah itu.

Misalnya, jika baris pertama adalah "0 2 3 10" itu berarti tetangga saya memiliki tiga tetangga lain: tidak ada yang di utara, tetangga 2 di timur, tetangga 3 di selatan dan tetangga 10 di barat.

Anda perlu menampilkan susunan tetangga, mulai dari nilai yang paling ke barat laut. Setiap tetangga akan ditampilkan hanya sekali, pada posisinya relatif terhadap yang lain. Mari kita lihat beberapa contoh:

Memasukkan:

0 0 0 0

Tidak ada tetangga (kasing kosong), keluaran:

1

Memasukkan:

0 2 0 0 
0 0 0 1

1 ada tetangga di sebelah timur. 2 memiliki tetangga 1 di sebelah barat

Keluaran:

1 2

Memasukkan:

0 2 0 0
0 0 3 1
2 0 0 0

1 ada tetangga di sebelah timur. 2 memiliki tetangga 1 di sebelah barat dan 3 di sebelah selatan. 3 memiliki tetangga 2 ke utara

Keluaran:

1 2
  3

Memasukkan:

2 0 0 0
0 0 1 0

Keluaran:

2
1

Memasukkan:

0 2 3 0
0 0 4 1
1 4 0 0
2 0 0 3

Keluaran:

1 2
3 4

Aturan:

  • Kasing uji dipisahkan oleh satu baris kosong . Output dari berbagai kasus uji juga harus dipisahkan oleh satu baris kosong.
  • Grafik output selalu terhubung. Anda tidak akan memiliki 1 tetangga hanya 2, bersama dengan 3 tetangga hanya 4 (terisolasi dari 1-2 komponen).
  • Semua entri valid. Contoh entri yang tidak valid:
    • Entri yang mengandung huruf atau simbol apa pun yang berbeda dari spasi, jeda baris dan angka (0-9).
    • yang saya th baris yang berisi i th nilai (karena salah satu tidak bisa menjadi tetangga sendiri).
    • nilai negatif atau nilai lebih tinggi dari 65.535.
    • Kurang dari empat nilai berturut-turut.
    • Lebih dari empat nilai berturut-turut.
    • Tetangga yang sama menunjuk ke dua arah yang berbeda (mis: 0 1 1 0).

Celah standar berlaku, dan jawaban tersingkat dalam byte menang.

Semrawut
sumber
4
Kasing uji dipisahkan oleh satu baris kosong - Ini merupakan persyaratan yang tidak biasa. Biasanya diberikan bahwa entri tantangan akan menangani satu testcase pada satu waktu (satu per doa). Jika entri tantangan dapat menangani lebih dari satu testcase sekaligus, maka hebat, tetapi ada sedikit nilai untuk secara spesifik menentukan bagaimana beberapa entri testcase harus diformat.
Digital Trauma
1
@Chaotic Anda dapat menghapusnya sepenuhnya (jika Anda mau), riwayat revisi mengurus changelog
Rod
1
Saya tidak mengerti bagaimana output berhubungan dengan output. Bisakah Anda menjelaskan secara lebih rinci apa arti "susunan tetangga", dan dengan aturan apa array ini dibuat?
Stewie Griffin
3
Aaaaah, kurasa aku mengerti. Para tetangga disebutkan 1,2,.... Saya pikir mereka memiliki tetangga 2 "unit" ke timur, dan 1 "unit" ke selatan dan seterusnya. Tidak bisa memahaminya.
Stewie Griffin
2
@StewieGriffin ya saya harus membacanya beberapa kali sebelum jelas
Digital Trauma

Jawaban:

2

Python 2 , 152 byte

l=input()
def f(x,y,n):
 if m[x][y]<n:m[x][y]=n;[f(i%3-1+x,i/3-1+y,h)for h,i in zip(l[n-1],[3,7,5,1])]
e=len(l)
m=eval(`[[0]*e*2]*e*2`)
f(e,e,1)
print m

Cobalah online!

Urutan input adalah NESW
ffungsi rekursif untuk mengisi rumah

tongkat
sumber
Maaf, ini tidak berfungsi. Saya bahkan mencoba dengan format input Anda (yang saya rasa tidak masalah): [[0, 5, 2, 0], [1, 6, 3, 0], [2, 7, 4, 0], [3, 8 , 0, 0], [0, 9, 6, 1], [5, 10, 7, 2], [6, 11, 8, 3], [7, 12, 0, 4], [0, 13 , 10, 5], [9, 14, 11, 6], [10, 15, 12, 7], [11, 16, 0, 8], [0, 17, 14, 9], [13, 18 , 15, 10], [14, 19, 16, 11], [15, 20, 0, 12], [0, 21, 18, 13], [17, 22, 19, 14], [18, 23 , 20, 15], [19, 24, 0, 16], [0, 0, 22, 17], [21, 0, 23, 18], [22, 0, 24, 19], [23, 0 , 0, 20]]
Chaotic
@Chaotic tampaknya baik-baik saja bagi saya mungkin format output tidak memuaskan?
Rod
Ok, saya tersesat dengan semua nol di sana. Saya pikir itu akan lebih baik untuk menghapusnya, tapi saya tidak terbiasa kode aturan standar golf.
Chaotic
Apakah Anda tetap menjadi ruang yang tidak digunakan?
14m2
2
  • masih bermain golf :)

JavaScript (Node.js) , 135 byte

R=>R.map((t,y)=>r.map((T,Y)=>T.map((X,I)=>X==y+1?[-1,1,1,-1].map((x,i)=>t[i]?(r[a=Y+x*-~i%2]=r[a]||[])[I+x*i%2]=t[i]:0):0)),r=[[1]])&&r

Cobalah online!

_______________________________________________________________

Pendekatan kedua

JavaScript (Node.js) , 130 byte

f=(R,x=0,y=0,c=1,r=[[]])=>[-1,1,1,-1].map((d,i)=>(t=R[c-1][i])&&!(r[Y=y+d*-~i%2]=r[Y]||[])[X=x+d*i%2]?f(R,X,Y,t,r):0,r[y][x]=c)&&r

Cobalah online!

DanielIndie
sumber