#f#
#f#
Вопрос:
Предположим, что существует a NxN board
, я хочу создать a seq<seq<int*int>>
, содержащий все строки на доске. Я не могу использовать изменяемую переменную. Например, вход N
равен 2, на выходе будет:
seq [seq[(0,0);(0,1)];seq[(1,0);(1,1)];seq[(0,0);
(1,0)];seq[(0,1);(1,1)];seq[(0,0);(1,1)];seq[(0,1);(1,0)]]
На доске есть шесть линий, включая горизонтальные, вертикальные и диагональные линии.
let f (n:int) : seq<seq<int*int>> =
let seq1 = seq{ for x in 0 .. n-1 do yield 0,x}
...
Я могу создать одну строку. Я не могу объединить все строки в seq[] с помощью цикла.
let loop =
for j in 0 .. n-1 do
let seq1 (j:int) = seq{ for x in 0 .. n-1 do yield j,x}
У меня есть идея использовать цикл for для создания строк. Но я понятия не имею, как сохранить значение seq1 и объединить с новым значением seq1.
Комментарии:
1. Привет @samsam_rabbit. Добро пожаловать. У вас гораздо больше шансов получить ответ, если вы попытаетесь что-то внедрить и поделитесь тем, что вы пробовали и с какой проблемой столкнулись. Пожалуйста, решите эту проблему для меня, это редко хорошо воспринимается.
Ответ №1:
Существует более одного способа сделать это, но мне нравится seq
конструктор:
let positions =
seq {
for x in 0..10 do
for y in 0..10 do
yield (x, y)
}