Advertisement
allerost

myrish

Jan 18th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.82 KB | None | 0 0
  1. package ar223ni_assign2;
  2.  
  3. import kotlin.random.URandomKt;
  4.  
  5. import java.util.Arrays;
  6. import java.util.Random;
  7.  
  8. public class Myran {
  9.     public static void main(String[] args) {
  10.         int[] chessBoard = new int[64];
  11.         /*
  12.         Försöka att visualisera brädan.
  13.         0 0 0 0 0 0 0 0
  14.         0 0 0 0 0 0 0 0
  15.         0 0 0 0 0 0 0 0
  16.         0 0 0 0 0 0 0 0
  17.         0 0 0 0 0 0 0 0
  18.         0 0 0 0 0 0 0 0
  19.         0 0 0 0 0 0 0 0
  20.         0 0 0 0 0 0 0 0
  21.  
  22.         Nr 1-8 är alltså "taket"
  23.         9 är första i vänstra väggen och 16 den högra
  24.         17 är andra i vänsta väggen och 24 den högra
  25.         25 är tredje i vänsta väggen och 32 den högra
  26.         33 är fjärde i vänsta väggen och 40 den högra
  27.         41 är femte i vänsta väggen och 48 den högra
  28.         49 är sjätte i vänsta väggen och 56 den högra
  29.         57 -> 64 är "golvet"
  30.  
  31.         1 2 3 4 5 6 7 8
  32.         9 0 0 0 0 0 0 16
  33.         17 0 0 0 0 0 0 24
  34.         25 0 0 0 0 0 0 32
  35.         33 0 0 0 0 0 0 40
  36.         41 0 0 0 0 0 0 48
  37.         49 0 0 0 0 0 0 56
  38.         57 58 59 60 61 62 63 64
  39.  
  40.         Nu vet vi alltså vilka nummer som är begränsade. tex. står jag på 4 kan jag inte röra mig uppåt.
  41.         Ett steg åt vänster är -1 i arrayen
  42.         Ett steg åt höger är +1 i arrayen
  43.         Ett steg upp är -8 i arrayen
  44.         ett steg neråt är +8 i arrayen
  45.  
  46.         En nolle är en oupptäkt plats, 1 är en ruta du tidigare rört och 2 är myrans nuvarande plats
  47.          */
  48.  
  49.         /*
  50.         Fick inte uppgiften att fungera men förstår i runda slag hur jag ska gå till väga
  51.         Haft mycket annat plugg att göra och tiden tog helt enkelt slut
  52.          */
  53.  
  54.         //Huvud logiken är att välja ett nummer mellan 1-4
  55.         //där 1 är vänster, 2 uppåt, 3 höger & 4 neråt
  56.         int max = 4;
  57.         int min = 1;
  58.         int movement = 0;
  59.         int antLocation;
  60.         int steps = 0;
  61.         int[] forbiddenLeft = {1,9,17,25,33,41,49,57};
  62.         int[] forbiddenRight = {8,16,24,32,40,48,48,56};
  63.         int[] forbiddenTop = {1,2,3,4,5,6,7,8};
  64.         int[] forbiddenBottom = {57,58,59,60,61,62,63,64};
  65.         int prevLocation;
  66.         int totalSteps = 0;
  67.  
  68.         Random rand = new Random();
  69.         movement = rand.nextInt(max - min) + min;
  70.         antLocation = rand.nextInt(63) +1;
  71.         //Fyll brädan med 0or
  72.         for (int i = 0; i < 64; i++) {
  73.             chessBoard[i] = 0;
  74.         }
  75.         //Sätt ut myran och markerar som 2
  76.         chessBoard[antLocation] = 2;
  77.  
  78.         while(Arrays.asList(chessBoard).contains(0)){
  79.             if(movement == 1){
  80.                 //Gå till vänster
  81.               if(Arrays.asList(forbiddenLeft).contains(antLocation)){
  82.                   chessBoard[antLocation] = chessBoard[antLocation];
  83.               }
  84.               else{
  85.                   //Spara gamla pos
  86.                   prevLocation = antLocation;
  87.                   //Uppdatera myrpositionen till ett steg vänster
  88.                   antLocation = antLocation -1;
  89.                   //Om du hamnar utanför efter att du har försökt att flytta.
  90.                   if(Arrays.asList(forbiddenLeft).contains(antLocation)){
  91.                       //kan inte röra sig
  92.                       chessBoard[prevLocation] = 2;
  93.                   }
  94.                   else{
  95.                       //Kan röra sig
  96.                       chessBoard[antLocation] = 2;
  97.                       chessBoard[prevLocation] = 1;
  98.                       totalSteps++;
  99.                   }
  100.                 }
  101.             }
  102.             else if(movement == 2){
  103.                 //Gå upp
  104.                 if(Arrays.asList(forbiddenTop).contains(antLocation)){
  105.                     chessBoard[antLocation] = chessBoard[antLocation];
  106.                 }
  107.                 else{
  108.                     prevLocation = antLocation;
  109.                     antLocation = antLocation -8;
  110.                     if(Arrays.asList(forbiddenRight).contains(antLocation)){
  111.                         //kan inte röra sig
  112.                         chessBoard[prevLocation] = 2;
  113.                     }
  114.                     chessBoard[antLocation] = 2;
  115.                     chessBoard[prevLocation] = 1;
  116.                     totalSteps++;
  117.                 }
  118.             }
  119.             else if(movement == 3){
  120.                 //Gå till höger
  121.                 if(Arrays.asList(forbiddenRight).contains(antLocation)){
  122.                     chessBoard[antLocation] = chessBoard[antLocation];
  123.                 }
  124.                 else{
  125.                     prevLocation = antLocation;
  126.                     antLocation = antLocation +1;
  127.                     if(Arrays.asList(forbiddenBottom).contains(antLocation)){
  128.                         //kan inte röra sig
  129.                         chessBoard[prevLocation] = 2;
  130.                     }
  131.                     chessBoard[antLocation] = 2;
  132.                     chessBoard[prevLocation] = 1;
  133.                     totalSteps++;
  134.                 }
  135.             }
  136.             else if(movement == 4){
  137.                 //Gå ner
  138.                 if(Arrays.asList(forbiddenBottom).contains(antLocation)){
  139.                     chessBoard[antLocation] = chessBoard[antLocation];
  140.                 }
  141.                 else{
  142.                     prevLocation = antLocation;
  143.                     antLocation = antLocation +8;
  144.                     if(Arrays.asList(forbiddenBottom).contains(antLocation)){
  145.                         //kan inte röra sig
  146.                         chessBoard[prevLocation] = 2;
  147.                     }
  148.                     chessBoard[antLocation] = 2;
  149.                     chessBoard[prevLocation] = 1;
  150.                     totalSteps++;
  151.                 }
  152.             }
  153.             movement = rand.nextInt(max - min) + min;
  154.         }
  155.         System.out.println("Antal steg i simulering : " + totalSteps);
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement