package com.rahul.bitboard;
import java.util.BitSet;
/**
* This class takes in FEN strings which start from H1 and end at A8
*
* @author rahul
*/
public class BitBoard {
private BitSet bitBoard;
public static final int BOARD_LENGTH = 64;
public BitBoard() {
bitBoard = new BitSet(BOARD_LENGTH);
}
public void flipBit(int index) {
if (index >= 0 && index < BOARD_LENGTH)
bitBoard.flip(index);
}
public String getPrettyBitBoard() {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < BOARD_LENGTH; i++) {
builder.append(bitBoard.get(i) ? 1 : 0);
}
return builder.toString();
}
/**
* This method returns an array of doubles which can be fed directly into a
* neural network
*
* @return array of doubles
* @author rahul
*/
public double[] getBitBoard() {
double[] array = new double[BOARD_LENGTH];
for (int i = 0; i < BOARD_LENGTH; i++) {
if (bitBoard.get(i))
array[i] = 1.0;
else
array[i] = 0.0;
}
return array;
}
public static void main(String[] args) {
BitBoard bb = new BitBoard();
System.out.println(bb.getBitBoard());
}
}