Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.96 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement