Я пытаюсь создать малонаселенный многомерный вектор в Clojure, но я сталкиваюсь с ограничениями моих знаний.
У меня есть коллекция x
Я перебираю и хочу создать многомерный вектор размером (count x)
на (count x)
.Большинство ячеек будут пустыми, но в каждой точке, где совпадают оси x и y (например, (1 1), (2 2), (3 3) и т. Д.), Мне нужно запустить функцию, чтобы увидеть,значение должно быть помещено в это пространство.
На процедурном языке это было бы что-то вроде:
for (i = 0; i < length(x); i++) {
for (j = 0; j < length(x); j++) {
if (i == j && testReturnsTrue(x[i])) {
table[i][j] = (list x[i])
}
else {
table[i][j] = ()
}
}
}
Но я не могу обернуться, как это будет сделано в Clojure.Я пытался использовать вложенные для понимания и вложенные циклически повторяющиеся структуры, но я не могу заставить их работать.
Кроме того, я мог бы создать изменяемую таблицу с правильными размерами, инициализировать ее все для пустых списков, а затем установить значения при проверке каждого элемента в x
, но я хотел бы сохранить таблицунеизменным, если это возможно.