Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package ponistuvanje_topcinja;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayDeque;
- import java.util.Queue;
- import java.util.Stack;
- /**
- *
- * @author 141021
- */
- /*
- Поништување топчиња Задача 1 (0 / 0)
- Да се напише алгоритам со кој ќе се имплементира играта “Поништување топчиња”.
- Во оваа игра на располагање имате топчиња во три различни бои (R-црвена, G-зелена и B-сина),
- обележани со знакот + или -.
- Поништување на топчиња може да настане само доколку тие се од иста боја и со спротивен знак.
- На почеток се генерира една случајна листа со топчиња.
- Ваша задача е од тој влез, како доаѓаат топчињата да направите поништување и да кажете колку,
- од каков тип (+ или -) и од која боја фалат за да се
- поништат сите топчиња од влезот.
- Влез: Листа од случајни топчиња и тоа во облик: боја, знак
- Име на класата (Java): Topcinja
- Делумно решение: Задачата се смета за делумно решена доколку се поминати 5 тест примери.
- Забелешка: При реализација на задачите МОРА да се користат дадените структури,
- а не да се користат помошни структури како низи или сл.
- Пример влез: R+ G- G+ G+ R+ B- B+ R- G+ R- B- B+ B+ R+
- Парови кои може да се формираат од овој список се: (R+,R-); (B+, B-); (B- B+); (R+, R-); (G-, G+); (R+, R-)
- Остануваат без партнер: G+, G+, B+, R+
- Излез:
- 4
- R- G- G- B-
- */
- public class Topcinja {
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String[] topcinja = br.readLine().split(" ");
- Queue<String> queue = new ArrayDeque<>();
- Stack<String> crveni = new Stack<>();
- Stack<String> zeleni = new Stack<>();
- Stack<String> plavi = new Stack<>();
- for (String topce : topcinja) {
- queue.add(topce);
- }
- for (String topce : queue) {
- if (topce.equals("R+")) {
- crveni.push("R+");
- } else if (topce.equals("G+")) {
- zeleni.push("G+");
- } else if (topce.equals("B+")) {
- plavi.push("B+");
- }
- }
- for (String topce : queue) {
- if (topce.equals("R-")) {
- if (!crveni.isEmpty()) {
- crveni.pop();
- }
- } else if (topce.equals("G-")) {
- if (!zeleni.isEmpty()) {
- zeleni.pop();
- }
- } else if (topce.equals("B-")) {
- if (!plavi.isEmpty()) {
- plavi.pop();
- }
- }
- }
- int preostanati = crveni.size() + zeleni.size() + plavi.size();
- System.out.println(preostanati);
- while(!crveni.isEmpty()) {
- String itemToPop = crveni.pop();
- if (itemToPop.charAt(1) == '-'){
- System.out.print("R+ ");
- } else {
- System.out.print("R- ");
- }
- }
- while(!zeleni.isEmpty()) {
- String itemToPop = zeleni.pop();
- if (itemToPop.charAt(1) == '-'){
- System.out.print("G+ ");
- } else {
- System.out.print("G- ");
- }
- }
- while(!plavi.isEmpty()) {
- String itemToPop = plavi.pop();
- if (itemToPop.charAt(1) == '-'){
- System.out.print("B+ ");
- } else {
- System.out.print("B- ");
- }
- }
- }
- }
- /*
- Пример влез
- R+ R- G+ G- B+ B-
- Пример излез
- 0
- INPUT:
- R+ G- G+ G+ R+ B- B+ R- G+ R- B- B+ B+ R+
- OUTPUT:
- 4
- R- G- G- B-
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement