Advertisement
Guest User

Untitled

a guest
Feb 8th, 2018
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.90 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5.  
  6. class Program
  7. {
  8.     static void Main()
  9.     {
  10.         Queue player1Cards = new Queue(Console.ReadLine()
  11.             .Split(" ", StringSplitOptions.RemoveEmptyEntries));
  12.         Queue player2Cards = new Queue(Console.ReadLine()
  13.             .Split(" ", StringSplitOptions.RemoveEmptyEntries));
  14.  
  15.         int turnsCount = 0;
  16.         string gameResult = "";
  17.  
  18.         while (true)
  19.             {
  20.                 if (player1Cards.Count == 0 || player2Cards.Count == 0 || turnsCount >= 1000000)
  21.                 {
  22.                     if (player1Cards.Count == player2Cards.Count)
  23.                     {
  24.                         gameResult = "Draw";
  25.                     }
  26.                     else if (player1Cards.Count > player2Cards.Count)
  27.                     {
  28.                         gameResult = "First player wins";
  29.                     }
  30.                     else
  31.                     {
  32.                         gameResult = "Second player wins";
  33.                     }
  34.  
  35.                     break;
  36.                 }
  37.  
  38.                 turnsCount++;
  39.  
  40.                 string player1Card = player1Cards.Dequeue().ToString();
  41.                 string player2Card = player2Cards.Dequeue().ToString();
  42.  
  43.                 int cardNum1 = int.Parse(player1Card.Substring(0, player1Card.Length - 1));
  44.                 int cardNum2 = int.Parse(player2Card.Substring(0, player2Card.Length - 1));
  45.  
  46.                 if (cardNum1 == cardNum2)
  47.                 {
  48.                     List<string> playedCards = new List<string>();
  49.                     playedCards.Add(player1Card);
  50.                     playedCards.Add(player2Card);
  51.                     bool isWarEnded = false;
  52.  
  53.                     while (isWarEnded == false)
  54.                     {
  55.                         int cards1Sum = 0;
  56.                         int cards2Sum = 0;
  57.  
  58.                         for (int a = 0; a < 3; a++)
  59.                         {
  60.                             if (player1Cards.Count == 0 || player2Cards.Count == 0)
  61.                             {
  62.                                 isWarEnded = true;
  63.                                 break;
  64.                             }
  65.  
  66.                             string card1 = player1Cards.Dequeue().ToString();
  67.                             string card2 = player2Cards.Dequeue().ToString();
  68.                             playedCards.Add(card1);
  69.                             playedCards.Add(card2);
  70.  
  71.                             int card1Power = card1[card1.Length - 1] - 'a' + 1;
  72.                             int card2Power = card2[card2.Length - 1] - 'a' + 1;
  73.  
  74.                             cards1Sum += card1Power;
  75.                             cards2Sum += card2Power;
  76.                     }
  77.  
  78.                         if (cards1Sum != cards2Sum && isWarEnded == false)
  79.                         {
  80.                             playedCards = playedCards.OrderByDescending(c => int.Parse(c.Substring(0, c.Length - 1))).ToList();
  81.                             isWarEnded = true;
  82.  
  83.                             if (cards1Sum > cards2Sum)
  84.                             {
  85.                                 player1Cards.Enqueue(playedCards);
  86.                             }
  87.                             else
  88.                             {
  89.                                 player2Cards.Enqueue(playedCards);
  90.                             }
  91.                         }
  92.                     }
  93.                 }
  94.                 else if (cardNum1 > cardNum2)
  95.                 {
  96.                     player1Cards.Enqueue(player1Card);
  97.                     player1Cards.Enqueue(player2Card);
  98.                 }
  99.                 else
  100.                 {
  101.                     player2Cards.Enqueue(player2Card);
  102.                     player2Cards.Enqueue(player1Card);
  103.                 }
  104.             }
  105.  
  106.         Console.WriteLine($"{gameResult} after {turnsCount} turns");
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement