<commit_before>const PieceEnum = Object.freeze({
  KING: 'king',
  QUEEN: 'queen',
  ROOK: 'rook',
  BISHOP: 'bishop',
  KNIGHT: 'knight',
  PAWN: 'pawn',
});

// crée le board par défaut (placement initial)
function getDefaultPieces() {
  // définit la couleur de la pièce
  const definePlayer = function definePlayer(i) {
    if (i < 16) {
      return 'black';
    } else if (i > 63 - 16) {
      return ('white');
    }

    return undefined;
  };

  // on définit le type de la pièce (grâce à la symétrie)
  // x = pièce haut gauche; 7-x = symétrie horizontale; 63-x = symétrie verticale
  const definePiece = function definePiece(i) {
    // pions : 8 -> 15 et symétrie
    if ((i >= 8 && i <= 15) || (i >= 63 - 15 && i <= 63 - 8)) {
      return PieceEnum.PAWN;
    }

    switch (i) {
      case 0:
      case 7 - 0:
      case 63 - 0:
      case (63 - 7) + 0:
        return PieceEnum.ROOK;
      case 1:
      case 7 - 1:
      case 63 - 1:
      case (63 - 7) + 1:
        return PieceEnum.KNIGHT;
      case 2:
      case 7 - 2:
      case 63 - 2:
      case (63 - 7) + 2:
        return PieceEnum.BISHOP;
      case 3:
      case 59:
        return PieceEnum.QUEEN;
      case 4:
      case 60:
        return PieceEnum.KING;
      default:
        return undefined;
    }
  };

  // on déclare un Array de 64 élements
  // puis on applique les fonctions de définition sur chacun des squares
  return [...Array(64)].map((_, i) => ({
    player: definePlayer(i),
    piece: definePiece(i),
  }));
}

function getX(i) {
  return i % 8;
}

function getY(i) {
  return parseInt(i / 8, 10);
}

function getId(x, y) {
  return (y * 8) + x;
}

export { PieceEnum, getX, getY, getId, getDefaultPieces };
<commit_msg>refactor idea added<commit_after>const PieceEnum = Object.freeze({
  KING: 'king',
  QUEEN: 'queen',
  ROOK: 'rook',
  BISHOP: 'bishop',
  KNIGHT: 'knight',
  PAWN: 'pawn',
});

// crée le board par défaut (placement initial)
function getDefaultPieces() {
  // définit la couleur de la pièce
  const definePlayer = function definePlayer(i) {
    if (i < 16) {
      return 'black';
    } else if (i > 63 - 16) {
      return ('white');
    }

    return undefined;
  };

  // on définit le type de la pièce (grâce à la symétrie)
  // x = pièce haut gauche; 7-x = symétrie horizontale; 63-x = symétrie verticale
  /*
  TODO : refactor => faire le même traitement avec i et 63-i,
    ça élimine la moitié des tests (attention à king / queen qui sont pas symétriques)
    ou alors faire symétrie horizontale au lieu de symétrie centrale ?
  */
  const definePiece = function definePiece(i) {
    // pions : 8 -> 15 et symétrie
    if ((i >= 8 && i <= 15) || (63 - i >= 8 && 63 - i <= 15)) {
      return PieceEnum.PAWN;
    }

    switch (i) {
      case 0:
      case 7 - 0:
      case 63 - 0:
      case (63 - 7) + 0:
        return PieceEnum.ROOK;
      case 1:
      case 7 - 1:
      case 63 - 1:
      case (63 - 7) + 1:
        return PieceEnum.KNIGHT;
      case 2:
      case 7 - 2:
      case 63 - 2:
      case (63 - 7) + 2:
        return PieceEnum.BISHOP;
      case 3:
      case 59:
        return PieceEnum.QUEEN;
      case 4:
      case 60:
        return PieceEnum.KING;
      default:
        return undefined;
    }
  };

  // on déclare un Array de 64 élements
  // puis on applique les fonctions de définition sur chacun des squares
  return [...Array(64)].map((_, i) => ({
    player: definePlayer(i),
    piece: definePiece(i),
  }));
}

function getX(i) {
  return i % 8;
}

function getY(i) {
  return parseInt(i / 8, 10);
}

function getId(x, y) {
  return (y * 8) + x;
}

export { PieceEnum, getX, getY, getId, getDefaultPieces };

{'fraction_non_alphanumeric': 0.13077759651984774, 'fraction_numerical': 0.036976617727025554, 'mean_word_length': 2.063280599500416, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 14, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1716218', 'n_tokens_mistral': 1483, 'n_tokens_neox': 1349, 'n_words': 434}