Sha256: 105a43b183648566e0b00e2ced7a2e51039c8b5451a9e445a80bfa51d50eb9f2
Contents?: true
Size: 969 Bytes
Versions: 396
Compression:
Stored size: 969 Bytes
Contents
proc isValid(white, black: tuple[rank, file: int]): bool = white.rank < 8 and white.rank >= 0 and white.file < 8 and white.file >= 0 and black.rank < 8 and black.rank >= 0 and black.file < 8 and black.file >= 0 proc validate(white, black: tuple[rank, file: int]): void = if not isValid(white, black) or white == black: raise newException(ValueError, "Invalid positions") proc board*(white, black: tuple[rank, file: int]): seq[string] = validate(white, black) var board: seq[string] = @[] for rank in 0..7: board.add("") for file in 0..7: if white == (rank, file): board[rank] &= 'W' elif black == (rank, file): board[rank] &= 'B' else: board[rank] &= '_' board proc canAttack*(white, black: tuple[rank, file: int]): bool = validate(white, black) let rankDiff = abs(white.rank - black.rank) let fileDiff = abs(white.file - black.file) rankDiff == fileDiff or rankDiff * fileDiff == 0
Version data entries
396 entries across 396 versions & 1 rubygems