Link.FYI

Pastebin

Create New My Pastes

Code (Java) pasted on 2019-01-31, 23:23 Raw Source

  1. import java.util.*;
  2.  
  3. public class Solution {
  4.  
  5.     public static void main(String[] args) {
  6.         (new Test()).test();
  7.     }
  8.  
  9.     static class TetrominoBag {
  10.  
  11.         private LinkedList<Character> tetrominos = new LinkedList<>();
  12.         private Random randomizer;
  13.  
  14.         public TetrominoBag() {
  15.             this.randomizer = new Random();
  16.         }
  17.  
  18.         public TetrominoBag(long randomSeed) {
  19.             this.randomizer = new Random(randomSeed);
  20.         }
  21.  
  22.         private void refillBag() {
  23.             assert(tetrominos.isEmpty());
  24.  
  25.             tetrominos.add('I');
  26.             tetrominos.add('T');
  27.             tetrominos.add('S');
  28.             tetrominos.add('Z');
  29.             tetrominos.add('O');
  30.             tetrominos.add('L');
  31.             tetrominos.add('J');
  32.             Collections.shuffle(tetrominos, randomizer);
  33.         }
  34.  
  35.         public Character nextTetromino() {
  36.             if (tetrominos.isEmpty()) {
  37.                 refillBag();
  38.             }
  39.  
  40.             return tetrominos.poll();
  41.         }
  42.  
  43.     }
  44.  
  45.     static class Test {
  46.  
  47.         private TetrominoBag bag;
  48.  
  49.         public void test() {
  50.             bag = new TetrominoBag(1);
  51.             testTetromino('Z');
  52.             testTetromino('I');
  53.             testTetromino('L');
  54.             testTetromino('T');
  55.             testTetromino('S');
  56.             testTetromino('J');
  57.             testTetromino('O');
  58.  
  59.             testTetromino('L');
  60.         }
  61.  
  62.         private void testTetromino(char expected) {
  63.             final Character actual = bag.nextTetromino();
  64.             if (actual == expected) {
  65.                 System.out.println("OK    Tetromino " + actual + " was expected.");
  66.             } else {
  67.                 System.out.println("FAIL  Expected: " + expected + ", Actual: " + actual);
  68.             }
  69.         }
  70.  
  71.     }
  72.  
  73. }
  74.