using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Program { class Program { static void Main(string[] args) { //Feladat1(); Feladat2(); } static void Feladat2() { string path = @"..\..\..\Sources\dobasok.txt"; string path2 = @"..\..\..\Sources\dontesek.txt"; var dobasok = new List<int>(); var dontesek = new List<int>(); //d feladathoz int pokermaxNum = 0; //dobasok var data = File.ReadAllText(path).Trim(); foreach (char c in data) { dobasok.Add(Convert.ToInt32($"{c}")); } //dontesek var data2 = File.ReadAllText(path2).Trim(); foreach (char c in data2) { dontesek.Add(Convert.ToInt32($"{c}")); } Jatekos alfa = new Jatekos(); alfa.Nev = "Alfa"; Jatekos beta = new Jatekos(); beta.Nev = "Beta"; Jatekos gamma = new Jatekos(); gamma.Nev = "Gamma"; List<Jatekos> jatekosok = new List<Jatekos>(); jatekosok.Add(alfa); jatekosok.Add(beta); jatekosok.Add(gamma); List<Kor> korok = new List<Kor>(); List<int> dobasokSmallerScope = new List<int>(); int jatekosCounter = 0; List<int> dobasokFull = new List<int>(); List<int> dontesekFull = new List<int>(); for (int i = 0; i < dobasok.Count; i++) { int dobas = dobasok[i]; int dontes = dontesek[i]; dobasokFull.Add(dobas); dontesekFull.Add(dontes); if (dontes == 1) { dobasokSmallerScope.Add(dobas); if (dobasokSmallerScope.Count == 5) { Kor kor = new Kor(); kor.dobasok = dobasokSmallerScope.ToArray(); kor.jatekos = jatekosok[jatekosCounter]; kor.dobasokFull = dobasokFull.ToArray(); kor.dontesekFull = dontesekFull.ToArray(); dobasokFull.Clear(); dontesekFull.Clear(); korok.Add(kor); dobasokSmallerScope.Clear(); if (jatekosCounter == 2) { jatekosCounter = 0; } else { jatekosCounter++; } continue; } } } // a feladat Console.WriteLine($"Teljes körök száma: {korok.Count / 3}"); // b feladat foreach (var kor in korok) { foreach (var jatekos in jatekosok) { if (jatekos.Nev == kor.jatekos.Nev) { int[] dobasokAKorben = kor.dobasok; bool sorCondition = dobasokAKorben.Distinct().Count() == 5; //nagysor if (sorCondition && dobasokAKorben.Contains(6)) { jatekos.Minta.Nagysor = true; continue; } //kissor if (sorCondition && dobasokAKorben.Contains(1)) { jatekos.Minta.Kissor = true; continue; } //poker var pokerGroup = dobasokAKorben.GroupBy(x => x).FirstOrDefault(g => g.Count() == 4); if (pokerGroup != null) { int pokerValue = pokerGroup.Key; if (pokerValue > pokermaxNum) { pokermaxNum = pokerValue; } jatekos.Minta.Poker = true; continue; } //full if (dobasokAKorben.Count(x => x == 3) == 1 && dobasokAKorben.Count(x => x == 2) == 1) { jatekos.Minta.Full = true; continue; } //terc if (dobasokAKorben.Count(x => x == 3) == 1) { jatekos.Minta.Terc = true; continue; } //ketpar if (dobasokAKorben.Count(x => x == 2) == 2) { jatekos.Minta.KetPar = true; continue; } //egypar if (dobasokAKorben.Count(x => x == 2) == 1) { jatekos.Minta.EgyPar = true; continue; } } } } foreach (var jatekos in jatekosok) { if (jatekos.Minta.AllTrue()) { Console.WriteLine($"{jatekos.Nev} nyerte meg a játékot"); } } // c feladat int counter = 0; foreach (var kor in korok) { if (kor.jatekos.Nev == "Gamma") { int[] dobasokAKorben = kor.dobasok; counter++; if (dobasokAKorben.Count(x => x == 3) == 1 && dobasokAKorben.Count(x => x == 2) == 1) { break; } } } Console.WriteLine($"Gamma ebbe a körbe dobott full-t: {counter + 1}"); // d feladat Console.WriteLine($"A legnagyobb poker értéke: {pokermaxNum}"); // e feladat foreach (var kor in korok) { IntArrKiir(kor.dobasokFull); IntArrKiir(kor.dontesekFull); Console.WriteLine("---------"); } Console.WriteLine(CountPairs(new int[] { 2, 2, 3, 3, 4 })); } static int GetAllPairs(List<int> dobasok, List<int> dontesek) { int pairs = 0; List<int> asztalok = new List<int>(); foreach (var dobas in dobasok) { } return pairs; } static int CountPairs(int[] dobasok) { int pairs = 0; //terc if (dobasok.Count(x => x == 3) == 1) { return 0; } var pokerGroup = dobasok.GroupBy(x => x).FirstOrDefault(g => g.Count() == 4); if (pokerGroup != null) { return 0; } for (int i = 0; i < dobasok.Length; i++) { for (int j = i + 1; j < dobasok.Length; j++) { if (dobasok[i] == dobasok[j]) { pairs++; } } } return pairs; } static void IntArrKiir(int[] arr) { foreach (var item in arr) { Console.Write(item + " "); } Console.WriteLine(); } static void Feladat1() { string path = @"..\..\..\Sources\idopontok.txt"; var idopontok = new List<Idopont>(); var data = File.ReadAllLines(path); foreach (var line in data) { var parts = line.Split(' '); Idopont idopont = new Idopont(int.Parse(parts[0]), int.Parse(parts[1])); idopontok.Add(idopont); } foreach (var idopont in idopontok) { Console.WriteLine($"{idopont.Name}, {idopont.ClockAngle()}°"); } Console.WriteLine($"Legnagyobb szögű időpont: {idopontok.OrderByDescending(x => x.Angle).First().Name}"); // nem biztos, hogy jó List<double> angleDifferences = new List<double>(); for (int i = 0; i < idopontok.Count - 1; i++) { angleDifferences.Add(Math.Abs(idopontok[i].Angle - idopontok[i + 1].Angle)); } Console.WriteLine($"Legkisebb változás: {angleDifferences.Min()}°"); var idopontok2 = new List<Idopont>(); int napok = 5; for (int i = 0; i < napok; i++) { for (int orak = 0; orak < 24; orak++) { for (int percek = 0; percek < 60; percek++) { Idopont idopont = new Idopont(orak, percek); idopont.ClockAngle(); idopontok2.Add(idopont); } } } string path2 = @"..\..\..\Sources\szogek.txt"; var data2 = File.ReadAllText(path2).Split(' '); List<double> anglesToLookFor = new List<double>(); foreach (var item in data2) { string formattedItem = item.Replace('.', ','); anglesToLookFor.Add(Double.Parse(formattedItem)); } int counter = 0; int iterations = 0; int napokCounter = 1; foreach (var item in idopontok2) { if (item.Angle == anglesToLookFor[counter]) { counter++; } if (counter == anglesToLookFor.Count) { break; } iterations++; if (iterations == 1440) { napokCounter++; iterations = 0; } } Console.WriteLine($"{napokCounter}|{idopontok2[iterations].Name}"); } } }