Я создал функцию, которая будет анализировать строку длиной 81 символ. Во время разбора его мне нужно использовать функцию с именем neighbors(Int: row, Int: col)
, которая возвращает все координаты, которые являются вертикальными, горизонтальными и диагональными из указанной строки и столбца. С этим списком координат мне нужно удалить значение, которое я разместил, из каждого из возможных значений, перечисленных в каждой координате. Плата представлена в виде карты, и мне нужно сделать это функционально, т. Е. Без использования var.Scala итерации по карте, представленной доской
Вот мой синтаксического анализа функции:
str.zipWithIndex.map{
case (digit, index) => ((index/9, index % 9), List(digit.asDigit))
}.toMap
Вот что я знаю о neighbors
функции:
def neighbors(row: Int, col: Int): List[(Int, Int)]
Например, если анализатор был на координатной (0,2)
, а число вошли в карта была 4
, мне пришлось бы удалить 4
со всех координат по вертикали, по горизонтали и по диагонали с этой точки. Значение каждой точки представлено в виде списка возможных значений.
Мне также не предоставлена функция neighbor
.
Спасибо за помощь!
первый - я думал, что [предложение Карла] (http://stackoverflow.com/questions/36266982/scala-returning-coordinate-as-tuple) был гораздо лучше дизайн для синтаксического анализа. 2nd. Трудно предложить, как использовать функцию «сосед», не видя ее точной подписи или, по крайней мере, ее возвращаемого типа данных. 3rd. Вы не можете удалить что-либо из координат, которые еще не были заполнены, поэтому из вашего описания, кажется, что «сосед» должен быть вызван для каждого элемента после завершения 'parse'. – jwvh
Согласен, предложение Карла было замечательным. Я понял, как заполнять пустые ячейки списком. Когда я разместил этот вопрос, я еще не понял этого. Я уточню вопрос. Кроме того, я добавлю подпись функции «сосед». Благодаря! – Colby