Подскажите, пожалуйста: Печатает лишний квадрат, там где фигура. Как убрать ?


#1

func printDesk(chess: [Chessman], coordinates: [(String, Int)]) {
var completeString = “”
var y = 1
var k = 0
var s = 1
for i in (1…8) {
var lineStr = “”
for j in [“A”,“B”,“C”,“D”,“E”,“F”,“G”, “H”] {
for (coordinates1,coordinates2) in coordinates {
if coordinates1 == j && coordinates2 == i {
lineStr += String(chess[k].figureSymbol) + " "
k += 1

                    }
                }
            print(s)
            if (i+s)%2 == 0 {
            lineStr += "\u{25A1} "
            } else {
            lineStr += "\u{25A0} "
            }
            s += 1
        }
        completeString += "\(y) " + lineStr + "\n"
        y += 1
}
    print("\n"+"  A B C D E F G H")
    print(completeString)

}
}
A B C D E F G H

1 □ ■ □ ■ □ ■ □ ■

2 ■ □ ■ □ ■ □ ■ □

3 □ ■ □ ■ ♛ □ ■ □ ■

4 ■ □ ■ □ ■ □ ■ □

5 □ ■ □ ■ □ ■ □ ■

6 ♔ ■ □ ■ □ ■ □ ■ □

7 □ ■ □ ■ □ ■ □ ■

8 ■ □ ■ □ ■ □ ■ □


#2
for j in ["a", "b", "c", "d", "e", "f", "g", "h"] {
            var isSet = false
            for (coordinates1,coordinates2) in coordinates {
                if coordinates1 == j && coordinates2 == i {
                    lineStr += String(chess[k].figureSymbol) + " "
                    k += 1
                    isSet = true
                }
            }
            if isSet {
                continue
            }

#3

Да,
Класное решение.
Спасибо.


#4

так можете избавиться от лишних подсчетов

struct Position: Hashable {
    let x, y: Int
}

func printDesk(
    figures: [Position: String],
    deskRow row: Int = 18,
    deskColumn column: Int = 8
) {
    let blackPlace = "\u{25A1} "
    let whitePlace = "\u{25A0} "
    var result = ""
    for i in 1...row {
        for j in 1...column {
            if let figure = figures[.init(x: i, y: j)] {
                result += "\(figure) "
            } else {
                result += i % 2 == 1 ? j % 2 == 1 ? whitePlace : blackPlace : j % 2 != 1 ? whitePlace : blackPlace
            }
        }
        result += "\n"
    }
    print(result)
}

printDesk(figures: [.init(x: 1, y: 1): "a"])

#5

Спасибо!!!
Розбираюсь.