私は81文字の文字列を解析する関数を作成しました。それを解析する際には、指定された行と列から垂直、水平、対角のすべての座標を返すneighbors(Int: row, Int: col)
という関数を使用する必要があります。この座標のリストでは、各座標にリストされている可能な値のそれぞれから取り出された値を削除する必要があります。ボードはマップとして表されており、これを機能的に、つまりvarを使わずに実行する必要があります。スカラは、ボードで表されるマップを反復処理します
ここに私の解析機能です:
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)は、あなたのパーサーのより良いデザインだと思いました。第2回 - 正確な署名、または少なくとも戻り値のデータ型を見ずに 'neighbor'関数を使う方法を示唆するのは難しいです。第3の - あなたがまだ人口が設定されていない座標から何も削除することはできませんので、あなたの説明から、 'parse'が完了した後に各要素に対して' neighbor'を呼び出さなければならないように見えます。 – jwvh
私は同意する、カールの提案は素晴らしかった。私は、空のセルにリストを取り込む方法を考え出しました。私がこの質問を投稿したとき、私はまだそれを理解していなかった。私は質問を更新します。また、 'neighbor'関数のシグネチャを追加します。ありがとう! – Colby