ค้นหาเพื่อนบ้านของฉัน


11

อินพุตประกอบด้วยแถวiพร้อมข้อมูลเพื่อนบ้าน แต่ละฉันTHแถวมี 4 ค่าคิดเป็นเพื่อนบ้านของฉันไปยังทิศตะวันตกเฉียงเหนือ , ภาคตะวันออก , ภาคใต้และตะวันตกทิศทางตามลำดับ ดังนั้นแต่ละค่าหมายถึงเพื่อนบ้านที่ทิศทางที่กำหนดของที่ฉันTHแถวเริ่มจากแถวที่ 1 และสามารถไปได้ถึง 65,535 แถว 0ค่าบ่งชี้ไปในทิศทางเพื่อนบ้านว่าไม่มี

ตัวอย่างเช่นถ้าแถวแรกคือ "0 2 3 10" มันหมายความว่าฉันเพื่อนบ้านมีสามเพื่อนบ้านอื่น ๆ : ไม่มีใครไปทางทิศเหนือเพื่อนบ้าน2ไปทางทิศตะวันออกเพื่อนบ้าน3ไปทางทิศใต้และเพื่อนบ้าน10ไปทางทิศตะวันตก

คุณต้องส่งออกอาเรย์ของเพื่อนบ้านเริ่มต้นจากค่าที่มากที่สุดไปทางตะวันตกเฉียงเหนือ แต่ละเพื่อนบ้านจะปรากฏเพียงครั้งเดียวที่ตำแหน่งของมันเมื่อเทียบกับคนอื่น ๆ ลองดูตัวอย่าง:

การป้อนข้อมูล:

0 0 0 0

ไม่มีเพื่อนบ้าน (กรณีว่างเปล่า) เอาท์พุท:

1

การป้อนข้อมูล:

0 2 0 0 
0 0 0 1

1 มีเพื่อนบ้าน 2 ทางด้านตะวันออก 2 มีเพื่อนบ้าน 1 ทางทิศตะวันตก

เอาท์พุท:

1 2

การป้อนข้อมูล:

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

1 มีเพื่อนบ้าน 2 ทางด้านตะวันออก 2 มีเพื่อนบ้าน 1 ทางทิศตะวันตกและ 3 ไปทางทิศใต้ 3 มีเพื่อนบ้าน 2 ทางทิศเหนือ

เอาท์พุท:

1 2
  3

การป้อนข้อมูล:

2 0 0 0
0 0 1 0

เอาท์พุท:

2
1

การป้อนข้อมูล:

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

เอาท์พุท:

1 2
3 4

กฎ:

  • กรณีทดสอบจะถูกแยกออกโดยหนึ่งบรรทัดว่าง เอาต์พุตของกรณีทดสอบที่แตกต่างกันจะต้องคั่นด้วยบรรทัดว่างหนึ่งบรรทัด
  • กราฟแสดงผลเชื่อมต่ออยู่เสมอ คุณจะไม่ได้มี 1 เพื่อนบ้านถึง 2 เท่านั้นพร้อมกับ 3 เพื่อนบ้านถึง 4 เท่านั้น (แยกจากส่วนประกอบ 1-2)
  • รายการทั้งหมดถูกต้อง ตัวอย่างของรายการที่ไม่ถูกต้อง:
    • รายการที่มีตัวอักษรหรือสัญลักษณ์ใด ๆ ที่แตกต่างจากช่องว่างตัวแบ่งบรรทัดและตัวเลข (0-9)
    • ฉันTHแถวที่มีฉันTHค่า (เพราะไม่สามารถเป็นเพื่อนบ้านของตัวเอง)
    • ค่าลบหรือค่าสูงกว่า 65,535
    • น้อยกว่าสี่ค่าในแถว
    • มากกว่าสี่ค่าในหนึ่งแถว
    • เพื่อนบ้านเดียวกันชี้ไปที่สองทิศทางที่แตกต่างกัน (เช่น: 1 1 1 0)

ช่องโหว่มาตรฐานใช้และคำตอบที่สั้นที่สุดเป็นไบต์ชนะ


4
กรณีทดสอบถูกคั่นด้วยบรรทัดว่างหนึ่งบรรทัด - นี่เป็นข้อกำหนดที่ผิดปกติ โดยปกติแล้วจะมีการระบุว่ารายการท้าทายจะจัดการหนึ่ง testcase ต่อครั้ง (หนึ่งต่อการร้องขอ) หากรายการท้าทายสามารถจัดการกับหนึ่ง testcase ได้ครั้งละมาก ๆ ก็ดี แต่มีค่าน้อยมากที่จะระบุว่าควรจัดรูปแบบรายการทดสอบหลายรายการอย่างเคร่งครัดอย่างไร
บาดเจ็บทางระบบดิจิตอล

1
@Chaotic คุณสามารถลบออกได้อย่างสมบูรณ์ (ถ้าคุณต้องการ) ประวัติการแก้ไขดูแล changelog
Rod

1
ฉันไม่เข้าใจว่าเอาต์พุตเกี่ยวข้องกับเอาต์พุตอย่างไร คุณสามารถอธิบายรายละเอียดเพิ่มเติมว่า "อาเรย์ของเพื่อนบ้าน" มีความหมายอย่างไรและกฎใดที่อาเรย์นี้ควรสร้างขึ้น
Stewie Griffin

3
ฉันคิดว่าฉันเข้าใจแล้ว 1,2,...เพื่อนบ้านที่มีการแจกแจง ฉันแม้ว่าพวกเขาจะมีเพื่อนบ้าน 2 "หน่วย" ไปทางทิศตะวันออกและ 1 "หน่วย" ไปทางทิศใต้และอื่น ๆ ไม่สามารถเข้าใจได้
Stewie Griffin

2
@StewieGriffin อ๋อฉันต้องอ่านมันสองสามครั้งก่อนที่มันจะชัดเจน
Digital Trauma

คำตอบ:


2

Python 2 , 152 ไบต์

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

ลองออนไลน์!

คำสั่งซื้อเป็นNESW
fฟังก์ชั่นวนซ้ำเพื่อเติมบ้าน


ขออภัยมันไม่ทำงาน ฉันลองรูปแบบการป้อนข้อมูลของคุณ (ซึ่งฉันคิดว่ามันใช้ได้): [[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 ดูเหมือนว่าดีสำหรับฉันบางทีรูปแบบผลลัพธ์ไม่เป็นที่พอใจ?
ร็อด

โอเคฉันหลงทางกับศูนย์ทั้งหมดที่นั่น ฉันคิดว่ามันดีกว่าที่จะลบมันออก แต่ฉันไม่คุ้นเคยกับการเขียนกฎมาตรฐานกอล์ฟ
วุ่นวาย

คุณยังคงเป็นพื้นที่ว่างหรือไม่?
l4m2

2
  • ยังคงเล่นกอล์ฟ :)

JavaScript (Node.js) , 135 ไบต์

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

ลองออนไลน์!

_______________________________________________________________

แนวทางที่สอง

JavaScript (Node.js) , 130 ไบต์

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

ลองออนไลน์!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.