SHARE
TWEET

Untitled

a guest Feb 24th, 2020 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.Arrays;
  2. import java.util.Collections;
  3. import java.util.List;
  4. import java.util.Scanner;
  5. import java.util.stream.Collector;
  6. import java.util.stream.Collectors;
  7.  
  8. public class Task_02_Archery {
  9.     public static void main(String[] args) {
  10.         Scanner console = new Scanner(System.in);
  11.         List<Integer> list = Arrays.stream(console.nextLine().split("\\|+"))
  12.                 //четем реда от конзолата,сплитнат по една или повече прави черти
  13.                 .map(Integer::parseInt)
  14.                 //четем го като стрингове,затова го парства до int
  15.                 .collect(Collectors.toList());
  16.                 //слагаме го в списък
  17.  
  18.         int sum = 0;
  19.         // тук ще събираме точките
  20.         String command = console.nextLine();
  21.         //четем командата
  22.         while (!command.equals("Game over")){
  23.             //проверияме дали е различна от Game over
  24.             String[] tokens = command.split("@");
  25.             // сплитваме командата
  26.             switch (tokens[0]){
  27.                 case "Shoot Left": {
  28.                     int index = Integer.parseInt(tokens[1]);
  29.                     int length = Integer.parseInt(tokens[2]);
  30.                     // парсваме старт индекс и дължината
  31.                     if (getCheckStartIndexIsValid(list, index)) {
  32.                         // правим метод защото и при shoot left ще проверяме също старт индекс,ако не е валиден пропускаме командата
  33.                         while (length > 0) {
  34.                             index--;
  35.                             // почваме да намаляваме индекса
  36.                             length--;
  37.                             // с length броим колко пъти
  38.                             if (index == -1) {
  39.                                 index = list.size() - 1;
  40.                                 // ако стане -1 го връщаме от дугия край на последния индекс
  41.                             }
  42.                         }
  43.                         // вече имаме желания индекс и всички валидации
  44.                         sum += getShoot(list, index);
  45.  
  46.                     }
  47.                     break;
  48.                     // много важно да не пропускаш break след всеки кейс, че всичко отива на кино
  49.                 }
  50.                 case "Shoot Right":{
  51.                     int index = Integer.parseInt(tokens[1]);
  52.                     int length = Integer.parseInt(tokens[2]);
  53.                     // парсваме старт индекс и дължината
  54.                     if (getCheckStartIndexIsValid(list, index)) {
  55.                         // вече го имаме готов
  56.                         while (length > 0) {
  57.                             index++;
  58.                             // почваме да увеличаваме индекса
  59.                             length--;
  60.                             // с length броим колко пъти
  61.                             if (index == list.size()) {
  62.                                 index = 0;
  63.                                 // ако премине крайната граница,го връщаме на 0
  64.                             }
  65.                         }
  66.                         // вече имаме желания индекс и всички валидации
  67.                        sum += getShoot(list, index);
  68.  
  69.                     }
  70.                     break;
  71.                     // много важно да не пропускаш break след всеки кейс, че всичко отива на кино
  72.                 }
  73.                 case "Reverse":
  74.                     Collections.reverse(list);
  75.                     break;
  76.                     // пак не забравяме break
  77.             }
  78.             command = console.nextLine();
  79.             // четем отново команда
  80.         }
  81.  
  82.  
  83.         for (int i = 0; i < list.size() - 1 ; i++) {
  84.             System.out.print(list.get(i) + " - ");
  85.             // принтираме до предпоследния елемет са да може да слегаме тиретета,ако списъка е празен няма да тръгне въобще фора
  86.         }
  87.         if (list.size() > 0){
  88.             // провереваме дали е празен,да не гръмне, и принтираме последния елемент
  89.             System.out.printf("%d\n",list.get(list.size() - 1));
  90.             //принтираме последния и минаваме на нов ред
  91.         }
  92.         System.out.println(String.format("Iskren finished the archery tournament with %d points!", sum));
  93.     }
  94.  
  95.     private static int getShoot(List<Integer> list, int index) {
  96.         int value  = list.get(index);
  97.         int points = 0;
  98.         // взимаме стойноста на този индекс
  99.         if (value >= 5){
  100.             list.set(index,value - 5);
  101.             return 5;
  102.             // ако стойноста е по-голяма от 5 вадим 5 и излизаме от метода и връщаме взетите точки
  103.         }else if (value < 5){
  104.             list.set(index,0);
  105.             // ако стойноста е под 5, просто взимаме всичко и сетваме нула
  106.         }
  107.         return value;
  108.         // връщаме колко точки е взел
  109.     }
  110.  
  111.     private static boolean getCheckStartIndexIsValid(List<Integer> list, int index) {
  112.         if (index >= 0 && index < list.size()){
  113.             return true;
  114.         }
  115.         return false;
  116.     }
  117. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top