找出我的邻居


11

输入由包含邻居信息的i行组成。每个行包含4个值,代表的邻居西方向,分别。因此,每个值代表在给定方向的邻居行,从第1行开始,并且可以达到65,535行。的0值表示没有邻居到该方向。

例如,如果第一行是“ 0 2 3 10”,则表示第i个邻居还有其他三个邻居:北方没有邻居,东方没有邻居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))的条目。
    • 包含行值(因为一个不能是它自己的邻居)。
    • 负值或高于65,535的值。
    • 连续少于四个值。
    • 连续超过四个值。
    • 同一邻居指向两个不同的方向(例如:0 1 1 0)。

存在标准漏洞,最短的答案以字节为单位。


4
测试用例用一个空行分隔 -这是一个不寻常的要求。通常情况下,质询条目将一次处理一个测试用例(每次调用一个)。如果质询条目一次可以处理多个测试用例,那就好了,但是严格指定应如何格式化多个测试用例条目的价值很小。
Digital Trauma

1
@混沌,您可以将其完全删除(如果需要),修订历史记录记录更改日志
Rod

1
我不明白输出与输出之间的关系。您能否更详细地解释“邻居数组”的含义,以及该数组应通过哪些规则创建?
Stewie Griffin

3
啊,我想我明白了。邻居们一一列举1,2,...。我尽管他们在东边有2个“单位”,在南边有1个“单位”,以此类推。无法理解。
Stewie Griffin

2
@StewieGriffin是的,在清楚之前,我不得不通读了几次
Digital

Answers:


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 ,
混沌

@混沌对我来说似乎很好,也许输出格式不令人满意?
Rod

好吧,我迷失了所有那些零。我认为删除它们会更好,但是我不习惯于编写高尔夫标准规则。
混沌

您只是保留未使用的空间吗?
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

在线尝试!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.