gpt4 book ai didi

linux - 模式解码二

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:06 25 4
gpt4 key购买 nike

Possible Duplicate:
Pattern decoding

我对上一篇有关模式解码的文章有一些新问题:

我有几乎相同的数据文件,但有双空(空白)行,在解码时必须考虑到这一点。因此,双空线意味着有一条街道/灌浆(定义请参阅上一篇文章: Pattern decoding ),其中有零 (0) 间房屋,但我们也必须计算这些类型的模式。 (是的,你可能会认为,这绝对是错误的说法,因为没有一条街道没有至少一栋房子,但这只是一个类比,所以请接受它的本来面目。)

这是数据文件,带有双行:

0 0    # <--- Group 1 -- 1 house (0) and 1 room (0)

0 0 # <--- Group 2 -- 2 houses (0;1) and 3,2 rooms (0,1,2;0,1)
0 1
0 2
1 0 # <--- house 2 in Group 2, with the first room (0)
1 1 # <--- house 2 in Group 2, with the second room (1)

0 0 # <--- Group 3
0 1 # <--- house 1 in Group 3, with the second room (1)
0 2

0 0 # <--- Group 4
1 0 # <--- house 2 in Group 4, with one room only (0)
2 0
3 0 # <--- house 4 in Group 4, with one room only (0)

0 0 # <--- Group 5
# <--- Group 6 << ---- THIS IS THE NEW GROUP

0 0 # <--- Group 7
# <--- Group 8 << ---- THIS IS THE NEW GROUP

0 0 # <--- Group 9

0 0 # <--- Group 10

我需要像以前一样将其转换为一种优雅的方式,但在这种情况下,我们也必须考虑这些新组,并以这种方式指示它们,例如 Kent: roupIdx houseIdx numberOfRooms ,其中houseIdx让等于零 houseIdx = 0 numberOfRooms让也等于零 numberOfRooms = 0 。因此,我需要获得这种输出,例如:

1 0 1

2 0 3
2 1 2

3 0 3

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

5 0 1

6 0 0

7 0 1

8 0 0

9 0 1

10 0 1

我们可以这样调整之前的代码吗?

更新:新的第二个空行表示一个新组。如果空行后面还有一个额外的空新行,如本例所示

0 0    # <--- Group 5
# <--- Group 6 << ---- THIS IS THE NEW GROUP

0 0 # <--- Group 7
# <--- Group 8 << ---- THIS IS THE NEW GROUP

我们只是将新的空行(2个空行中的第二个)视为一个新组,并将它们指示为 group_index 0 0 。请参阅上面所需的输出!

最佳答案

尝试:

$ cat houses.awk
BEGIN{max=1;group=1}
NF==0{
empty++
if (empty==1) group++
next
}
{ max = ($1 > max) ? $1 : max
if (empty<=1){
a[group,$1]++
} else {
a[group,$1]=-1
}
empty=0
}
END{for (i=1;i<=group;i++){
for (j=0;j<=max;j++){
if (a[i,j]>=1)
print i , j , a[i,j]
if (a[i,j]==-1)
print i, j, 0
}
printf "\n"
}
}

命令:

awk -f houses.awk houses

输出:

1 0 1

2 0 3
2 1 2

3 0 3

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

5 0 1

6 0 0

7 0 0

8 0 1

关于linux - 模式解码二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8841815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com