BorislavBorisov

01.03.Bulls and Cows мое решение Linq и List

Nov 5th, 2015
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.57 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. class BullsAndCows
  5. {
  6.     static void Main()
  7.     {
  8.         int secretNumber = int.Parse(Console.ReadLine());
  9.  
  10.         int bulls = int.Parse(Console.ReadLine());
  11.         int cows = int.Parse(Console.ReadLine());
  12.         bool isAnyFound = false;
  13.         for (int guessNumber = 1111; guessNumber < 10000; guessNumber++)
  14.         {
  15.             if (Convert.ToString(guessNumber).IndexOf('0') > -1)
  16.             {
  17.                 continue;
  18.             }
  19.             int bullsFound = FindBulls(guessNumber, secretNumber);
  20.             int cowsFound = FindCows(guessNumber, secretNumber);
  21.             if (bullsFound == bulls && cowsFound == cows)
  22.             {
  23.                 isAnyFound = true;
  24.                 Console.Write(guessNumber + " ");
  25.             }
  26.         }
  27.         if (!isAnyFound)
  28.         {
  29.             Console.WriteLine("No");
  30.         }
  31.     }
  32.  
  33.     static int FindCows(int guessNumber, int secretNumber)
  34.     {
  35.         int cowsCount = 0;
  36.         List<char> guessNum = Convert.ToString(guessNumber).ToList();//със linq го конвертирам в лист
  37.         List<char> secretNum = Convert.ToString(secretNumber).ToList();
  38.         for (int i = 0; i < 4; i++)
  39.         {
  40.             if (guessNum[i] == secretNum[i])
  41.             {
  42.                 guessNum[i] = '*';
  43.                 secretNum[i] = '*';
  44.             }
  45.         }
  46.  
  47.         for (int i = 0; i < 4; i++)
  48.         {
  49.             if (guessNum[i] != '*' && secretNum.Contains(guessNum[i]))//ако е различно от '*' и го има имаме крава
  50.             {
  51.                 cowsCount++;
  52.                 secretNum.Remove(guessNum[i]);//по този начин премахвам който си искам елeмент, а не на позиция i
  53.             }
  54.         }
  55.         return cowsCount;
  56.     }
  57.  
  58.     static int FindBulls(int guessNumber, int secretNumber)
  59.     {
  60.         int bullsCount = 0;
  61.         int guessA = (guessNumber / 1) % 10;
  62.         int guessB = (guessNumber / 10) % 10;
  63.         int guessC = (guessNumber / 100) % 10;
  64.         int guessD = (guessNumber / 1000) % 10;
  65.  
  66.         if (guessA == (secretNumber / 1) % 10)
  67.         {
  68.             bullsCount++;
  69.         }
  70.         if (guessB == (secretNumber / 10) % 10)
  71.         {
  72.             bullsCount++;
  73.         }
  74.         if (guessC == (secretNumber / 100) % 10)
  75.         {
  76.             bullsCount++;
  77.         }
  78.         if (guessD == (secretNumber / 1000) % 10)
  79.         {
  80.             bullsCount++;
  81.         }
  82.         return bullsCount;
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment