Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Sokoban puzzles auto generator
- // https://dxdy.ru/post1541620.html#p1541620
- // 2021 dec B@R5uk
- import java.util.*;
- public class State_Space_Gauge {
- @SuppressWarnings ("unused")
- private static final Random rng = new Random (System .currentTimeMillis ());
- private static final Locale locale = new Locale ("en-en");
- @SuppressWarnings ("unused")
- public static void main (String [] args) {
- int boxesNumber = 5, startState, intrmState, endState;
- long time, iterCount;
- Level level = new Level (levelLines [0]);
- StateSpace stateSpace;
- StateSpace .AnalysisResult anres;
- int [] values;
- System .out .println ("\nMaze map:");
- level .displayMaze ();
- stateSpace = level .buildStateSpace (boxesNumber);
- stateSpace .displayStats ();
- time = System .currentTimeMillis ();
- anres = stateSpace .performDistanceAnalysis ();
- time = System .currentTimeMillis () - time;
- iterCount = StateSpace .getIterCount ();
- System .out .println (String .format (locale, "\nProcessing time: %18.3f sec", time / 1000.0));
- System .out .println (String .format (locale, "Processing speed: %17.3f Msttps", 0.001 * iterCount / time));
- System .out .println (String .format ("Processed states: %13s", Helper .spacedNumber (iterCount)));
- System .out .println (String .format (locale, "Divider: %26.3f",
- (double) (stateSpace .getStatesNumber ()) * stateSpace .getStatesNumber () / iterCount));
- values = anres .getBest ();
- System .out .println (String .format ("\nState #%d:", values [0]));
- level .displayState (values [0], stateSpace);
- System .out .println (String .format ("\nState #%d:", values [1]));
- level .displayPlacement (values [1], stateSpace);
- System .out .println (String .format ("\nDistance: %d moves, %d pushes", values [2], values [3]));
- System .out .println ("\nPuzzle:");
- level .displayPuzzle (values [0], values [1], stateSpace);
- /*
- startState = rng .nextInt (stateSpace .getStatesNumber ());
- System .out .println (String .format ("\nState #%d:", startState));
- level .displayStateByIndex (startState, stateSpace);
- stateSpace .performForwardDijkstraSearch (startState);
- intrmState = stateSpace .findMostDistantState ();
- System .out .println (String .format ("\nState #%d:", intrmState));
- level .displayStateByIndex (intrmState, stateSpace);
- System .out .println (String .format ("Distance: %d moves, %d pushes",
- stateSpace .getMoveCount (intrmState), stateSpace .getPushCount (intrmState)));
- stateSpace .performMultistartDijkstraSearch (intrmState);
- endState = stateSpace .findMostDistantState ();
- System .out .println (String .format ("\nState #%d:", endState));
- level .displayStateByIndex (endState, stateSpace);
- System .out .println (String .format ("Distance: %d moves, %d pushes",
- stateSpace .getMoveCount (endState), stateSpace .getPushCount (endState)));
- //*/
- //Helper .displayNumbers (level .getCellsNumber ());
- //Helper .displayNumbers (27);
- }
- private static String [] [] levelLines = {{
- "####",
- "#..#####",
- "#......#",
- "#..#...#",
- "##.#...#",
- " #.....#",
- " #...###",
- " #####",
- }, {
- "####",
- "#..#####",
- "#......#",
- "#......#",
- "#...####",
- "#####",
- }, {
- "#####",
- "#...####",
- "#......#",
- "#......#",
- "#...####",
- "#...#",
- "#####",
- }, {
- "#####",
- "#...###",
- "#.....#",
- "#.....#",
- "#...###",
- "#...#",
- "#####",
- }, {
- "#####",
- "#...####",
- "#......#",
- "#......#",
- "#...####",
- "#####",
- }, {
- "######",
- "#....###",
- "#......#",
- "#......#",
- "#...####",
- "#####",
- }, {
- "#####",
- "#...####",
- "#......#",
- "#....#.#",
- "#......#",
- "########",
- }, {
- "#####",
- "#...###",
- "#.....#",
- "#...#.#",
- "#.....#",
- "#######",
- }, {
- "#####",
- "#...###",
- "#.....#",
- "#...#.#",
- "#.....#",
- "#...###",
- "#####",
- }, {
- "#####",
- "#...###",
- "#.....#",
- "#...#.#",
- "#.....#",
- "#..####",
- "####",
- }, {
- "#####",
- "#...###",
- "#.....#",
- "#..#..#",
- "#.....#",
- "#..####",
- "####",
- }, {
- " #####",
- "##...###",
- "#......#",
- "#......#",
- "########",
- }, {
- " ####",
- "##..####",
- "#......#",
- "#......#",
- "########",
- }, {
- "#####",
- "#...####",
- "#......#",
- "#......#",
- "########",
- }, {
- "####",
- "#..#####",
- "#......#",
- "#......#",
- "########",
- }, {
- "#####",
- "#...#",
- "#...#",
- "#...#",
- "#####",
- }};
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement