Мне нужно написать метод «all()», который возвращает список кортежей; каждый кортеж будет содержать строку, столбец и набор, соответствующие конкретной заданной строке и столбцу, когда функция встречает 0 в списке. Я уже написал функцию «hyp», которая возвращает нужную мне часть, например: Set (1,2). Я использую список списков:Доступ к индексу определенной ячейки в Scala
| 0 | 0 | 9 |
| 0 | x | 0 |
| 7 | 0 | 8 |
Если Set (1,2) имеют в виду клетки помечены как х, все() должен возвращать: (1,1, Set (1,2)), где 1,1 - индекс строки и столбца. Я написал этот метод, используя zipWithIndex. Есть ли более простой способ доступа к индексу, как в этом случае без zipWithIndex? Заранее спасибо Код:
def all(): List[(Int, Int, Set[Int])] =
{
puzzle.list.zipWithIndex flatMap
{
rowAndIndex =>
rowAndIndex._1.zipWithIndex.withFilter(_._1 == 0) map
{
colAndIndex =>
(rowAndIndex._2, colAndIndex._2, hyp(rowAndIndex._2, colAndIndex._2))
}
}
}
The (_._ 1 == 0) потому, что функция должна возвращать (Int, Int, Set()) только тогда, когда он находит 0 в сетке
Для понимания не являются петлями - это чисто синтаксический сахар для плоской карты/карты/withFilter. Но, может быть, вы не можете их использовать? –
Я не могу использовать итерацию, я должен использовать рекурсию, для понимания полезны в этом случае? – user2947615
Хорошо. Но это другой вопрос, чем то, что вы просили. Добавили к моему A. –