Софтуерно Инженерство
Loading...
+ Нов въпрос
Vikiki avatar Vikiki 0 Точки

Midexam 2.11.2019, Java Fundamentals, task 2 Weaponsmith

Здравейте, колеги!

Условието на задачата е следното:

 

You are a legendary weaponsmith. Heroes from all over the world come to you for the greatest weapons so they can rid the world of the greatest threats. In order for you to craft a weapon you need to assemble its particles.

You will receive a line with string particles, separated by "|", representing parts of the name of a weapon. The particles will be in mixed order and you can align them through the commands, which you will receive on the next lines, until you receive the "Done" command. They will come the form of strings, separated by space. There are five supported commands:

  • "Move Left {index}":
    • Moves the value at {index} position to the Left, if the index exist and the move is possible.
    • If movement is not possible, do nothing.
  • "Move Right {index}":
    • Moves the value at {index} position to the Right, if the index exists and the move is possible.
    • If movement is not possible, do nothing.
  • "Check Even":
    • Print the elements at even index positions, separated by a single space.
  • "Check Odd":
    • Print the elements at odd index positions, separated by a single space.

 After the "Done" command, the weapon name is considered correct and you should print the particles in their current order joined together in the following format: "You crafted {WeaponName}!"

Input

  • On the first line, you will receive parts of the given weapon name in a mixed order separated by "|".
  • On the next lines, until the "Done" command, you will receive commands in the format described above.

Output

  • Print the needed output upon the "Done" command as a string.
  • Output should be in the format "You crafted {Weapon name}!"

Examples

Input

Output

ha|Do|mm|om|er
Move Right 0

Move Left 3

Check Odd

Move Left 2

Move Left 10

Move Left 0

Done

ha mm

You crafted Doomhammer!

Comments

First, we receive the "Move Right 0" command, so we move "ha" one position to the right and we get "Do ha mm om as er".

Then we receive "Move Left 3" -> "Do ha om mm er"

Checking the current state of the array on odd index positons.

 "Move Left 2" -> "Do om ha mm er"

Invalid index, so we do nothing

We can't move the value at zero position to the left, so we do nothing
Lastly, we have to print the collection as one word, so our output is: "You crafted {Weapon name}!"

 

 

ri|As|er|hb|ng

Move Left 1

Move Right 2

Move Right 3

Move Left 2

Done

You crafted Ashbringer!

 

Това е моят опит да я реша:

https://pastebin.com/3VK7v3vn

Моля за помощ, че съвсем се оплетох!

Тагове:
0
Fundamentals Module
MartinBG avatar MartinBG 1215 Точки

Има пропуски и разични типове грешки (вкл. компилационни) в решението, напр:

  • 9 ред: List<String> items = Arrays.stream(scanner.nextLine().split("|")).collect(Collectors.toList()); : split() приема regex като параметър, а "|" има специално значение и трябва да бъде escape-нат: List<String> items = Arrays.stream(scanner.nextLine().split("\\|")).collect(Collectors.toList());
  • 11 ред: while(!line.equals("Done")) {...} - line не се обновява в тялото на цикъла, т.е. имаме безкраен цикъл. Добра практика е да се разменят местата на променливата и на константата за да се предпазим от NullPointerException, в случай на невалидна променлива: while(!"Done".equals(line)) {...}
  • 16 и 23 редове: if (index >= items.size() - 1) { ... } : условието не е коректно/пълно
  • 17-18 и 24-25: items.remove(index1); items.add(index1 +/- 1, items.get(index1)); : прочети как работят тези методи и си разпиши примерен тест на лист хартия за да видиш какви са ти грешките
  • 43 ред: if (line.equals("Done")) - това условие никога няма да бъде изпълнено в тялото на while(!line.equals("Done")) {...}
  • 44 ред: break; - има код след този ред, което е компилационна грешка ("unreachable statement")
  • не разпечатваш правилните неща при "Check" и "Done" командите.

 

Това е кода с поправките, но най-добре опитай да го оправиш сам/а с насоките по-горе, преди да видиш готовото решение.

Успех!

1