Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ivalin;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String strInput="";
- // Това е карта, съдържа ключ от тип Srtring - числата от конбинацията , и стойност от типа Integer - брой повторения
- HashMap<String,Integer> mapCombinations=new HashMap<>();
- while (!(strInput=scanner.nextLine()).equals("finish")) {
- int[] inputCombination=new int[6];
- inputCombination[0] = Integer.parseInt(strInput);
- boolean isValid=true;
- // прочитам 6 числа от конзолата
- for (int i=1;i<6;i++){
- inputCombination[i]=Integer.parseInt(scanner.nextLine());
- if (inputCombination[i]<1 || inputCombination[i]>49){
- isValid=false;
- continue;
- }
- // проверявам дали числото се повтаря с някое от предходните и ако да , комбинацията е невалидна
- for(int j=0;j<i;j++){
- if(inputCombination[i]==inputCombination[j]){
- isValid=false;
- break;
- }
- }
- }
- if (isValid){
- // сортирам масива във възходящ ред, за да може да се сравнява със запазените до сега
- sortIntArray(inputCombination);
- // конвертирам int масива във стринг, съдържащ числата от комбинацията, разделени със запетая
- String strSortedCombination=Integer.toString(inputCombination[0]); // вземам първото число
- for (int i=1;i<6;i++){ // към него прилепям останалите , разделени със запетая
- strSortedCombination=strSortedCombination+","+inputCombination[i];
- }
- // ако комбинацията не е била въведена , записвам я в картата с брой повторения 0
- mapCombinations.putIfAbsent(strSortedCombination,0);
- // вземам броя повторения за тази комбинация и ги уевлиавам с 1
- int combinationCount=mapCombinations.get(strSortedCombination);
- combinationCount++;
- mapCombinations.replace(strSortedCombination,combinationCount);
- System.out.println(strSortedCombination);
- }else{
- System.out.println("Невалидна комбинация");
- }
- }
- //обхожда всички запазени комбинации в картата и извежда броя на повторенията
- for (Map.Entry<String,Integer> e : mapCombinations.entrySet() ) {
- System.out.printf("%s - брой повторения %d%n",e.getKey(),e.getValue());
- }
- }
- // процедура за сортиране на масив във възходящ ред по метода на 'балончетата'
- // това е просто за информация , иначе има вграфени функции за сортиране , но за тях по-късно
- public static void sortIntArray(int[] combination){
- int n=combination.length;
- boolean swapped;
- do{
- swapped=false;
- for (int i=1;i<=n-1;i++){
- //проверява дали числото е по-голямо от следващото и ако да , им сменя местата
- if (combination[i-1]>combination[i]){
- int temp=combination[i];
- combination[i]=combination[i-1];
- combination[i-1]=temp;
- swapped=true;
- }
- }
- n=n-1;
- }while(swapped);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement