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

Version Path
trackler-2.2.1.180 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.179 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.178 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.177 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.176 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.175 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.174 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.173 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.172 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.171 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.170 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.169 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.167 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.166 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.165 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.164 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.163 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.162 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.161 tracks/nim/exercises/queen-attack/example.nim
trackler-2.2.1.160 tracks/nim/exercises/queen-attack/example.nim