Advertisement
BaR5uk

State_Space_Gauge.java

Dec 4th, 2021 (edited)
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.42 KB | None | 0 0
  1. //      Sokoban puzzles auto generator
  2. //      https://dxdy.ru/post1541620.html#p1541620
  3. //      2021 dec B@R5uk
  4.  
  5. import java.util.*;
  6.  
  7. public class State_Space_Gauge {
  8.    
  9.     @SuppressWarnings ("unused")
  10.     private static final Random rng = new Random (System .currentTimeMillis ());
  11.     private static final Locale locale = new Locale ("en-en");
  12.    
  13.     @SuppressWarnings ("unused")
  14.     public static void main (String [] args) {
  15.         int boxesNumber = 5, startState, intrmState, endState;
  16.         long time, iterCount;
  17.         Level level = new Level (levelLines [0]);
  18.         StateSpace stateSpace;
  19.         StateSpace .AnalysisResult anres;
  20.         int [] values;
  21.        
  22.         System .out .println ("\nMaze map:");
  23.         level .displayMaze ();
  24.        
  25.         stateSpace = level .buildStateSpace (boxesNumber);
  26.         stateSpace .displayStats ();
  27.        
  28.         time = System .currentTimeMillis ();
  29.         anres = stateSpace .performDistanceAnalysis ();
  30.         time = System .currentTimeMillis () - time;
  31.         iterCount = StateSpace .getIterCount ();
  32.         System .out .println (String .format (locale, "\nProcessing time: %18.3f sec", time / 1000.0));
  33.         System .out .println (String .format (locale, "Processing speed: %17.3f Msttps", 0.001 * iterCount / time));
  34.         System .out .println (String .format ("Processed states: %13s", Helper .spacedNumber (iterCount)));
  35.         System .out .println (String .format (locale, "Divider: %26.3f",
  36.                 (double) (stateSpace .getStatesNumber ()) * stateSpace .getStatesNumber () / iterCount));
  37.        
  38.         values = anres .getBest ();
  39.         System .out .println (String .format ("\nState #%d:", values [0]));
  40.         level .displayState (values [0], stateSpace);
  41.         System .out .println (String .format ("\nState #%d:", values [1]));
  42.         level .displayPlacement (values [1], stateSpace);
  43.         System .out .println (String .format ("\nDistance: %d moves, %d pushes", values [2], values [3]));
  44.         System .out .println ("\nPuzzle:");
  45.         level .displayPuzzle (values [0], values [1], stateSpace);
  46.         /*
  47.         startState = rng .nextInt (stateSpace .getStatesNumber ());
  48.         System .out .println (String .format ("\nState #%d:", startState));
  49.         level .displayStateByIndex (startState, stateSpace);
  50.        
  51.         stateSpace .performForwardDijkstraSearch (startState);
  52.         intrmState = stateSpace .findMostDistantState ();
  53.         System .out .println (String .format ("\nState #%d:", intrmState));
  54.         level .displayStateByIndex (intrmState, stateSpace);
  55.         System .out .println (String .format ("Distance: %d moves, %d pushes",
  56.                 stateSpace .getMoveCount (intrmState), stateSpace .getPushCount (intrmState)));
  57.        
  58.         stateSpace .performMultistartDijkstraSearch (intrmState);
  59.         endState = stateSpace .findMostDistantState ();
  60.         System .out .println (String .format ("\nState #%d:", endState));
  61.         level .displayStateByIndex (endState, stateSpace);
  62.         System .out .println (String .format ("Distance: %d moves, %d pushes",
  63.                 stateSpace .getMoveCount (endState), stateSpace .getPushCount (endState)));
  64.         //*/
  65.         //Helper .displayNumbers (level .getCellsNumber ());
  66.         //Helper .displayNumbers (27);
  67.     }
  68.    
  69.     private static String [] [] levelLines = {{
  70.         "####",
  71.         "#..#####",
  72.         "#......#",
  73.         "#..#...#",
  74.         "##.#...#",
  75.         " #.....#",
  76.         " #...###",
  77.         " #####",
  78.     }, {
  79.         "####",
  80.         "#..#####",
  81.         "#......#",
  82.         "#......#",
  83.         "#...####",
  84.         "#####",
  85.     }, {
  86.         "#####",
  87.         "#...####",
  88.         "#......#",
  89.         "#......#",
  90.         "#...####",
  91.         "#...#",
  92.         "#####",
  93.     }, {
  94.         "#####",
  95.         "#...###",
  96.         "#.....#",
  97.         "#.....#",
  98.         "#...###",
  99.         "#...#",
  100.         "#####",
  101.     }, {
  102.         "#####",
  103.         "#...####",
  104.         "#......#",
  105.         "#......#",
  106.         "#...####",
  107.         "#####",
  108.     }, {
  109.         "######",
  110.         "#....###",
  111.         "#......#",
  112.         "#......#",
  113.         "#...####",
  114.         "#####",
  115.     }, {
  116.         "#####",
  117.         "#...####",
  118.         "#......#",
  119.         "#....#.#",
  120.         "#......#",
  121.         "########",
  122.     }, {
  123.         "#####",
  124.         "#...###",
  125.         "#.....#",
  126.         "#...#.#",
  127.         "#.....#",
  128.         "#######",
  129.     }, {
  130.         "#####",
  131.         "#...###",
  132.         "#.....#",
  133.         "#...#.#",
  134.         "#.....#",
  135.         "#...###",
  136.         "#####",
  137.     }, {
  138.         "#####",
  139.         "#...###",
  140.         "#.....#",
  141.         "#...#.#",
  142.         "#.....#",
  143.         "#..####",
  144.         "####",
  145.     }, {
  146.         "#####",
  147.         "#...###",
  148.         "#.....#",
  149.         "#..#..#",
  150.         "#.....#",
  151.         "#..####",
  152.         "####",
  153.     }, {
  154.         " #####",
  155.         "##...###",
  156.         "#......#",
  157.         "#......#",
  158.         "########",
  159.     }, {
  160.         " ####",
  161.         "##..####",
  162.         "#......#",
  163.         "#......#",
  164.         "########",
  165.     }, {
  166.         "#####",
  167.         "#...####",
  168.         "#......#",
  169.         "#......#",
  170.         "########",
  171.     }, {
  172.         "####",
  173.         "#..#####",
  174.         "#......#",
  175.         "#......#",
  176.         "########",
  177.     }, {
  178.         "#####",
  179.         "#...#",
  180.         "#...#",
  181.         "#...#",
  182.         "#####",
  183.     }};
  184. }
  185.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement