Hi so i'm trying to make Something like this :
id:1 First: -9999 Last: -9999 group: B
id:2 First: -9999 Last: -9999 group: B
id:3 First: 1 Last: 2 group: 0
id:4 First: 2 Last: 3 group: 0
id:5 First: 3 Last: 4 group: 0
id:6 First: 6 Last: 7 group: 1
id:7 First: 7 Last: 8 group: 1
id:8 First: 8 Last: 9 group: 1
id:9 First: 9 Last: 10 group: 1
id:10 First: 99 Last: 100 group: 2
id:11 First: 100 Last: 101 group: 2
id:12 First: 101 Last: 102 group: 2
id:13 First: 201 Last: 200 group: 3
unfortunately for the moment i get this :
id:1 First: -9999 Last: -9999 group: B
id:2 First: -9999 Last: -9999 group: B
id:3 First: 1 Last: 2 group: 0
id:4 First: 2 Last: 3 group: 1
id:5 First: 3 Last: 4 group: 1
id:6 First: 6 Last: 7 group: 2
id:7 First: 7 Last: 8 group: 3
id:8 First: 8 Last: 9 group: 3
id:9 First: -9998 Last: -9998 group: B
id:10 First: 99 Last: 100 group: 4
id:11 First: 100 Last: 101 group: 5
id:12 First: 101 Last: 102 group: 5
id:13 First: 201 Last: 200 group: null
If anyone can help me with this , it will be very appreciate
data= [[OUT_FID_R2:-9999, OBJECTID_R2:1, IN_FID_R2:-9999], [OUT_FID_R2:-9999, OBJECTID_R2:2, IN_FID_R2:-9999], [OUT_FID_R2:2,OBJECTID_R2:3, IN_FID_R2:1], [OUT_FID_R2:3, OBJECTID_R2:4, IN_FID_R2:2], [OUT_FID_R2:4, OBJECTID_R2:5, IN_FID_R2:3], [OUT_FID_R2:7, OBJECTID_R2:6, IN_FID_R2:6], [OUT_FID_R2:8, OBJECTID_R2:7, IN_FID_R2:7], [OUT_FID_R2:9, OBJECTID_R2:8, IN_FID_R2:8],[OUT_FID_R2:-9998, OBJECTID_R2:9, IN_FID_R2:-9998],[OUT_FID_R2:100, OBJECTID_R2:10, IN_FID_R2:99], [OUT_FID_R2:101, OBJECTID_R2:11, IN_FID_R2:100], [OUT_FID_R2:102, OBJECTID_R2:12, IN_FID_R2:101], [OUT_FID_R2:200, OBJECTID_R2:13, IN_FID_R2:201]]
data=data.unique()
int cle=0
for (int x=0; x<data.size();x++) {
for (int j=0; j<data.size();j++){
if(data[x]['IN_FID_R2']!= data[x]['OUT_FID_R2']){
if(data[x]['OUT_FID_R2']==data[j]['IN_FID_R2']){
data[x].put('new_grp',cle)
data[j].put('new_grp',cle)
cle++
}
}
else{
data[x].put('new_grp','B')
}
}
}
for (int i=0; i<data.size();i++){
printf("id:%s First: %s Last: %s group: %s \n",data[i]['OBJECTID_R2'],data[i]['IN_FID_R2'], data[i]['OUT_FID_R2'],data[i]['new_grp'])
}
So for the moment after my first condition is found the group start at 0 but the one after start at 1 and it should keep the group as 0 since the last(id:3) and first(id:4) are the same and it seem that the group happen for 2 records only.
I looked at your solution and you were on a good track. The only correction will be in your assignation of a new value once the sequential range is found. Here my answer :
int cle =0
for (int x=0; x<data.size();x++) {
for (int j=0; j<data.size();j++){
if(data[x]['IN_FID_R2']!= data[x]['OUT_FID_R2']){
if(data[x]['OUT_FID_R2']==data[j]['IN_FID_R2']){
if (data[x]['new_grp'] ==null && data[x]['new_grp'] ==null ){
data[x].put('new_grp',[cle])
data[j].put('new_grp',[cle])
}else if (data[x]['new_grp'] ==null || data[j]['new_grp'] ==null ){
respond= data[x]['new_grp']+data[j]['new_grp']
data[x].put('new_grp',respond.findAll{it != null})
data[j].put('new_grp',respond.findAll{it != null})
}
cle++
}
}
else{
data[x].put('new_grp','B')
}
}
}
The expected result will be :
id:1 First: -9999 Last: -9999 group: B
id:2 First: -9999 Last: -9999 group: B
id:3 First: 1 Last: 2 group: [0]
id:4 First: 2 Last: 3 group: [0]
id:5 First: 3 Last: 4 group: [0]
id:6 First: 6 Last: 7 group: [2]
id:7 First: 7 Last: 8 group: [2]
id:8 First: 8 Last: 9 group: [2]
id:9 First: -9998 Last: -9998 group: B
id:10 First: 99 Last: 100 group: [4]
id:11 First: 100 Last: 101 group: [4]
id:12 First: 101 Last: 102 group: [4]
id:13 First: 102 Last: 200 group: [4]