Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _03.Numbers_War
- {
- public class Program
- {
- public static void Main()
- {
- int turns = 0;
- char[] letters = new char[]
- {
- ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
- 'u',
- 'v', 'w', 'x', 'y', 'z'
- };
- string[] firstPlayerCardsInput = Console.ReadLine().Split().ToArray();
- string[] secondPlayerCardsInput = Console.ReadLine().Split().ToArray();
- Queue<string> firstPlayerCards = new Queue<string>(firstPlayerCardsInput);
- Queue<string> secondPlayerCards = new Queue<string>(secondPlayerCardsInput);
- while (firstPlayerCards.Count > 0 && secondPlayerCards.Count > 0 && turns < 1_000_000)
- {
- string card1 = firstPlayerCards.Dequeue();
- string card2 = secondPlayerCards.Dequeue();
- if (int.Parse(card1.Substring(0, card1.Length - 1)) > int.Parse(card2.Substring(0, card2.Length - 1)))
- {
- firstPlayerCards.Enqueue(card1);
- firstPlayerCards.Enqueue(card2);
- turns++;
- continue;
- }
- if (int.Parse(card1.Substring(0, card1.Length - 1)) < int.Parse(card2.Substring(0, card2.Length - 1)))
- {
- secondPlayerCards.Enqueue(card2);
- secondPlayerCards.Enqueue(card1);
- turns++;
- continue;
- }
- if (int.Parse(card1.Substring(0, card1.Length - 1)) == int.Parse(card2.Substring(0, card2.Length - 1)))
- {
- if (card1[card1.Length - 1] > card2[card2.Length - 1])
- {
- firstPlayerCards.Enqueue(card1);
- firstPlayerCards.Enqueue(card2);
- turns++;
- continue;
- }
- if (card1[card1.Length - 1] < card2[card2.Length - 1])
- {
- secondPlayerCards.Enqueue(card2);
- secondPlayerCards.Enqueue(card1);
- turns++;
- continue;
- }
- int firstSum = 0;
- int secondSum = 0;
- List<string> firstCards = new List<string>();
- List<string> secondCards = new List<string>();
- firstCards.Add(card1);
- secondCards.Add(card2);
- while (firstSum == secondSum && firstPlayerCards.Count > 0 && secondPlayerCards.Count > 0)
- {
- for (int i = 0; i < 3; i++)
- {
- if (firstPlayerCards.Count != 0)
- {
- string card = firstPlayerCards.Peek();
- firstCards.Add(firstPlayerCards.Dequeue());
- firstSum += Array.IndexOf(letters, card[card.Length - 1]);
- }
- if (secondPlayerCards.Count != 0)
- {
- string card = secondPlayerCards.Peek();
- secondCards.Add(secondPlayerCards.Dequeue());
- secondSum += Array.IndexOf(letters, card[card.Length - 1]);
- }
- }
- }
- List<string> allCards = new List<string>();
- foreach (var c in firstCards)
- {
- allCards.Add(c);
- }
- foreach (var c in secondCards)
- {
- allCards.Add(c);
- }
- if (firstSum > secondSum)
- {
- foreach (var c in allCards.OrderByDescending(x => int.Parse(x.Substring(0, x.Length - 1)))
- .ThenByDescending(x => x[x.Length - 1]))
- {
- firstPlayerCards.Enqueue(c);
- }
- turns++;
- continue;
- }
- if (firstSum < secondSum)
- {
- foreach (var c in allCards.OrderByDescending(x => int.Parse(x.Substring(0, x.Length - 1)))
- .ThenByDescending(x => x[x.Length - 1]))
- {
- secondPlayerCards.Enqueue(c);
- }
- turns++;
- continue;
- }
- else
- {
- turns++;
- continue;
- }
- }
- }
- if (firstPlayerCards.Count == 0 && secondPlayerCards.Count == 0)
- {
- Console.WriteLine($"Draw after {turns} turns");
- }
- else if (secondPlayerCards.Count == 0)
- {
- Console.WriteLine($"First player wins after {turns} turns");
- }
- else if (firstPlayerCards.Count == 0)
- {
- Console.WriteLine($"Second player wins after {turns} turns");
- }
- else
- {
- if (firstPlayerCards.Count > secondPlayerCards.Count)
- {
- Console.WriteLine($"First player wins after 1000000 turns");
- }
- else if (firstPlayerCards.Count < secondPlayerCards.Count)
- {
- Console.WriteLine($"Second player wins after 1000000 turns");
- }
- else
- {
- Console.WriteLine($"Draw after 1000000 turns");
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement