Advertisement
dzocesrce

[APS] Heroes

Aug 26th, 2023
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.64 KB | None | 0 0
  1. //2021 prv kolokvium - termin 1
  2.  
  3. import java.util.NoSuchElementException;
  4. import java.util.Scanner;
  5.  
  6. public class Heroes
  7. {
  8.  
  9.     public static void startHeroesGame(SLL<Card> firstFriendCards, SLL<Card> secondFriendCards)
  10.     {
  11.         SLLNode<Card> temp1= firstFriendCards.getFirst();
  12.         SLLNode<Card> temp2= secondFriendCards.getFirst();
  13.         int best= temp1.element.numAttacks*temp1.element.power;
  14.         int best_id= temp1.element.id;
  15.         temp1=temp1.succ;
  16.         while(temp1!=null){
  17.             int dmg= temp1.element.numAttacks*temp1.element.power;
  18.             if(dmg>best){
  19.                 best=dmg;
  20.                 best_id=temp1.element.id;
  21.             }
  22.             temp1=temp1.succ;
  23.         }
  24.         temp1= firstFriendCards.getFirst();
  25.         while(true){
  26.             if(temp1.element.id==best_id){
  27.                 temp2=temp2.succ.succ;
  28.                 secondFriendCards.insertAfter(new Card(temp1.element.id,temp1.element.power,temp1.element.numAttacks),temp2);
  29.                 firstFriendCards.delete(temp1);
  30.                 break;
  31.             }
  32.             temp1=temp1.succ;
  33.         }
  34.     }
  35.     public static void main(String[] args)
  36.     {
  37.         SLL<Card> prv = new SLL<Card>();
  38.         SLL<Card> vtor = new SLL<Card>();
  39.         Scanner scanner = new Scanner(System.in);
  40.         for(int i=0;i<6;i++)
  41.         {
  42.             int id = scanner.nextInt();
  43.             int power = scanner.nextInt();
  44.             int numAttacks = scanner.nextInt();
  45.             Card c1 = new Card(id,power,numAttacks);
  46.             prv.insertLast(c1);
  47.         }
  48.         for(int j=0;j<6;j++)
  49.         {
  50.             int id = scanner.nextInt();
  51.             int power = scanner.nextInt();
  52.             int numAttacks = scanner.nextInt();
  53.             Card c1 = new Card(id,power,numAttacks);
  54.             vtor.insertLast(c1);
  55.         }
  56.         startHeroesGame(prv,vtor);
  57.         System.out.println(prv.toString());
  58.         System.out.println(vtor.toString());
  59.  
  60.     }
  61. }
  62. class Card
  63. {
  64.     int id;
  65.     int power;
  66.     int numAttacks;
  67.  
  68.     public Card(int id, int power, int numAttacks)
  69.     {
  70.         this.id = id;
  71.         this.power = power;
  72.         this.numAttacks = numAttacks;
  73.     }
  74.  
  75.     public int getId() {
  76.         return id;
  77.     }
  78.  
  79.     public int getPower() {
  80.         return power;
  81.     }
  82.  
  83.     public int getNumAttacks() {
  84.         return numAttacks;
  85.     }
  86.  
  87.     @Override
  88.     public String toString() {
  89.         return String.valueOf(id);
  90.     }
  91. }
  92.  
  93. class SLLNode<E> {
  94.     protected E element;
  95.     protected SLLNode<E> succ;
  96.  
  97.     public SLLNode(E elem, SLLNode<E> succ) {
  98.         this.element = elem;
  99.         this.succ = succ;
  100.     }
  101.  
  102.     @Override
  103.     public String toString() {
  104.         return element.toString();
  105.     }
  106. }
  107. class SLL<E> {
  108.     private SLLNode<E> first;
  109.  
  110.     public SLL() {
  111.         // Construct an empty SLL
  112.         this.first = null;
  113.     }
  114.  
  115.     public void deleteList() {
  116.         first = null;
  117.     }
  118.  
  119.     public int length() {
  120.         int ret;
  121.         if (first != null) {
  122.             SLLNode<E> tmp = first;
  123.             ret = 1;
  124.             while (tmp.succ != null) {
  125.                 tmp = tmp.succ;
  126.                 ret++;
  127.             }
  128.             return ret;
  129.         } else
  130.             return 0;
  131.  
  132.     }
  133.  
  134.     @Override
  135.     public String toString() {
  136.         String ret = new String();
  137.         if (first != null) {
  138.             SLLNode<E> tmp = first;
  139.             ret += tmp + " ";
  140.             while (tmp.succ != null) {
  141.                 tmp = tmp.succ;
  142.                 ret += tmp + " ";
  143.             }
  144.         } else
  145.             ret = "Prazna lista!!!";
  146.         return ret;
  147.     }
  148.  
  149.     public void insertFirst(E o) {
  150.         SLLNode<E> ins = new SLLNode<E>(o, first);
  151.         first = ins;
  152.     }
  153.  
  154.     public void insertAfter(E o, SLLNode<E> node) {
  155.         if (node != null) {
  156.             SLLNode<E> ins = new SLLNode<E>(o, node.succ);
  157.             node.succ = ins;
  158.         } else {
  159.             System.out.println("Dadenot jazol e null");
  160.         }
  161.     }
  162.  
  163.     public void insertBefore(E o, SLLNode<E> before) {
  164.  
  165.         if (first != null) {
  166.             SLLNode<E> tmp = first;
  167.             if(first==before){
  168.                 this.insertFirst(o);
  169.                 return;
  170.             }
  171.             //ako first!=before
  172.             while (tmp.succ != before)
  173.                 tmp = tmp.succ;
  174.             if (tmp.succ == before) {
  175.                 SLLNode<E> ins = new SLLNode<E>(o, before);
  176.                 tmp.succ = ins;
  177.             } else {
  178.                 System.out.println("Elementot ne postoi vo listata");
  179.             }
  180.         } else {
  181.             System.out.println("Listata e prazna");
  182.         }
  183.     }
  184.  
  185.     public void insertLast(E o) {
  186.         if (first != null) {
  187.             SLLNode<E> tmp = first;
  188.             while (tmp.succ != null)
  189.                 tmp = tmp.succ;
  190.             SLLNode<E> ins = new SLLNode<E>(o, null);
  191.             tmp.succ = ins;
  192.         } else {
  193.             insertFirst(o);
  194.         }
  195.     }
  196.  
  197.     public E deleteFirst() {
  198.         if (first != null) {
  199.             SLLNode<E> tmp = first;
  200.             first = first.succ;
  201.             return tmp.element;
  202.         } else {
  203.             System.out.println("Listata e prazna");
  204.             return null;
  205.         }
  206.     }
  207.  
  208.     public E delete(SLLNode<E> node) {
  209.         if (first != null) {
  210.             SLLNode<E> tmp = first;
  211.             if(first ==node){
  212.                 return this.deleteFirst();
  213.             }
  214.             while (tmp.succ != node && tmp.succ.succ != null)
  215.                 tmp = tmp.succ;
  216.             if (tmp.succ == node) {
  217.                 tmp.succ = tmp.succ.succ;
  218.                 return node.element;
  219.             } else {
  220.                 System.out.println("Elementot ne postoi vo listata");
  221.                 return null;
  222.             }
  223.         } else {
  224.             System.out.println("Listata e prazna");
  225.             return null;
  226.         }
  227.  
  228.     }
  229.  
  230.     public SLLNode<E> getFirst() {
  231.         return first;
  232.     }
  233.  
  234.     public SLLNode<E> find(E o) {
  235.         if (first != null) {
  236.             SLLNode<E> tmp = first;
  237.             while (tmp.element != o && tmp.succ != null)
  238.                 tmp = tmp.succ;
  239.             if (tmp.element == o) {
  240.                 return tmp;
  241.             } else {
  242.                 System.out.println("Elementot ne postoi vo listata");
  243.             }
  244.         } else {
  245.             System.out.println("Listata e prazna");
  246.         }
  247.         return first;
  248.     }
  249. }
  250. /*
  251. BEWARE: TEST CASE
  252. 84 44 87
  253. 79 9 67
  254. 26 2 81
  255. 57 91 59
  256. 45 92 8
  257. 55 97 80
  258. 10 99 4
  259. 13 84 28
  260. 64 6 90
  261. 93 57 23
  262. 14 49 36
  263. 50 65 12
  264.  
  265. 84 79 26 57 45
  266. 10 13 64 55 93 14 50
  267.  */
  268.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement