package puzzle.dict800;

public final class DictDataL5 {
  private DictDataL5() {}

  static final int LEN = 5;
  static final int ROWS = 130;
  static final int COLS = 38;
  static final int WORDS_LEN = 2399;
  static final int POS_LEN = 4940;

  private static long[] words() {
    return DictDataL5W0.get();
  }

  private static long[] posFlat() {
    return DictDataL5P0.get();
  }

  public static puzzle.SwedishGenerator.DictEntry entry() {
    long[] wds = words();
    long[] flat = posFlat();
    long[][] pos = reshape(flat, ROWS, COLS);
    return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
  }

  private static int copy(long[] dst, int at, long[] src) {
    System.arraycopy(src, 0, dst, at, src.length);
    return at + src.length;
  }

  private static long[][] reshape(long[] flat, int rows, int cols) {
    long[][] out = new long[rows][cols];
    int k = 0;
    for (int r = 0; r < rows; r++) {
      System.arraycopy(flat, k, out[r], 0, cols);
      k += cols;
    }
    return out;
  }
}
