Có một danh sách các giá trị nhị phân: lây nhiễm truyền giá trị cho các mục liền kề của danh sách, trong C#
List<bool> myList = new List<bool>(){true, true, false, false, true, false, false, false, true, true, true, false, false};
thuật toán của tôi nhằm mục đích để chuyển đổi bất kỳ mục false thành true, nếu họ tiếp giáp với một sự thật giá trị:
result = {true, true, true, true, true, true, false, true, true, true, true, true, false}
Giải pháp của tôi hoạt động, như bạn sẽ thấy. Tôi có thể thực hiện điều đó thông qua hai vòng khác nhau và sau đó nén hai danh sách:
List<bool> firstList = new List<bool>();
List<bool> secondList = new List<bool>();
for(int i=0; i<myList.Count()-1; i++){
if(myList[i]==true){
firstList[i]=true;
firstList[i+1]=true;
}
}
for(int i=1; i<myList.Count(); i++){
if(myList[i]==true){
secondList[i]=true;
secondList[i-1]=true;
}
}
List<bool> finalList = firstList.Zip(secondList, (a,b)=>a||b).ToList();
Tuy nhiên, đây không phải là giải pháp tốt nhất vì vấn đề trông rất dễ dàng. Bất kỳ ý tưởng để làm điều đó thông qua một vòng lặp hoặc tốt hơn bằng cách sử dụng LINQ?
tại sao không sử dụng tổng hợp? –