Проблем с задача " Ad Astra".
Здравейте,
Примерните входове от задачата минават, но в "Djudje" повечето тестове не минават (дава 16/100). Пробвах с различни "regex" - a, но резултата е същия. Моля за съдействие. Кода е:
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExamTask___AdAstra {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//10:38
String input = scanner.nextLine();
Pattern pattern = Pattern.compile
("(#|\\|)(?<item>[A-Za-z ]+)\\1(?<termin>\\d+\\/\\d+\\/\\d{2})\\1(?<calorie>\\d+)");
// ((\#)|(\|))(?<item>(\w+)|((\w+)( )(\w+)))((\#)|(\|))(?<termin>(([0-2])([0-9])(\/)){2}(\d{2}))(((\|)|(\#))(?<calorie>(\d+))((\|)|(\#)))
Matcher correctInput = pattern.matcher(input);
String separateItem = "";
int calorieSeparateInput = 0;
String date = "";
int sumCalories = 0;
Map<String,Integer> itemAndCalories = new LinkedHashMap<>();
Map<String,String> itemAndDate = new LinkedHashMap<>();
while (correctInput.find()) {
separateItem = correctInput.group("item");
calorieSeparateInput = Integer.parseInt(correctInput.group("calorie"));
date = correctInput.group("termin");
itemAndCalories.put(separateItem,calorieSeparateInput);
itemAndDate.put(separateItem,date);
sumCalories +=calorieSeparateInput;
}
int limitDays = sumCalories/2000;
// You have food to last you for: 9 days!
// Item: Fish, Best before: 24/12/20, Nutrition: 8500
if (limitDays>0) {
System.out.printf("You have food to last you for: %d days!%n", limitDays);
for (Map.Entry<String, String> element : itemAndDate.entrySet()) {
String itemName = element.getKey();
System.out.printf("Item: %s, Best before: %s, Nutrition: %d%n", element.getKey(),element.getValue(),itemAndCalories.get(itemName));
}
} else {
System.out.println("You have food to last you for: 0 days!");
}
}
}
Благодаря за съдействието.
Благодаря за съдействието.
Hey! I would like to thank you for the code. I need this for many days. GBWhatsApp Pro
Защо колориите са хванати
от 1 до 5, това означава че и 99999 също е валидно число, което не отговаря на границата от 10 хил.