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

Java Advanced - Functional Programming - 10. Predicate Party!

Здравейте,

имам проблем с 1-ви тест на тази задача, написах я по 10 начина, след това я преписах дословно от предишно издание на курса и този тест винаги е грешен.

Ще се радвам, ако някой помогне.

това е кодът>

https://pastebin.com/YU0Emnik

Тагове:
0
Java Advanced
knoteva avatar knoteva 642 Точки

Здравей,

На мен ми дава 100 точки. Каква грешка ти дава? Може judge да е бил претоварен.

0
Deianov avatar Deianov 1 Точки

Test #1 (Incorrect answer)

сега пак го пуснах и пак, над 10 пъти съм го пробвал, не ми прилича на претоварен judge.

0
Deianov avatar Deianov 1 Точки

Благодаря за отделеното време,

вече всичко е точно, оказа се едно сортиране, което не е споменато в заданието.

това е последният код>

//10. Predicate Party!
package E_FunctionalProgramming.Exercises;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

class E10 {
    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String line = reader.readLine();

        List<String> guests = Arrays.stream(line.split("\\s+")).collect(Collectors.toList());

        while (!"Party!".equals(line = reader.readLine())) {

            String[] commandTokens = line.split("\\s+");

            String command = commandTokens[0];
            String predicateType = commandTokens[1];
            String predicateArgument = commandTokens[2];

            if (command.equals("Remove")) {
                guests.removeIf(getPredicate(predicateType, predicateArgument));
            }
            else if (command.equals("Double")) {

                for (int i = 0; i < guests.size(); i++) {
                    String guest = guests.get(i);
                    if (getPredicate(predicateType, predicateArgument).test(guest)) {
                        guests.add(i++, guest);
                    }
                }
            }
        }
        if (guests.isEmpty()) {
            System.out.println("Nobody is going to the party!");
        } else {
            Collections.sort(guests);
            System.out.println(String.format("%s are going to the party!", String.join(", ", guests)));
        }
    }

    private static Predicate<String> getPredicate(String type, String parameter) {
        switch (type) {
            case "StartsWith":
                return text -> text.startsWith(parameter);
            case "EndsWith":
                return text -> text.endsWith(parameter);
            case "Length":
                return text -> text.length() == Integer.parseInt(parameter);
            default:
                return text -> false;
        }
    }
}

 

0