Advertisement
alt3rnata

Three digits numbers with unique digits (asc)

Oct 18th, 2018
517
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.94 KB | None | 0 0
  1. class Program
  2.     {
  3.         /// <summary>
  4.         /// Решение задачи "вывести все уникальные комбинации из трех цифр, где в каждой комбинации ни одна цифра не повторяется и нет комбинаций, состоящих их одних и тех же трех цифр".
  5.         /// </summary>
  6.         /// <param name="args"></param>
  7.        
  8.         static void Main(string[] args)
  9.         {
  10.             int[] myArray = new int[(789-12+1)];
  11.            
  12.             myArray[0] = 12;
  13.             int index = 1;
  14.            
  15.             //массив заполняется числами от 12 до 789
  16.             while (index < myArray.Length)
  17.             {
  18.                 myArray[index] = myArray[index - 1] + 1;
  19.                 index++;
  20.             }
  21.  
  22.            
  23.             //проход по массиву с проверкой на повторяющиеся цифры, если они есть - число обнуляется
  24.             index = 0;
  25.             while (index < myArray.Length)
  26.             {
  27.                 int number = myArray[index];
  28.                 int a = number % 10; //целочисленный ОСТАТОК деления на 10
  29.                 number /= 10; //вернет целочисленный результат деления на 10, т. е. для 12 вернет 1, а не 1,2, поскольку это int
  30.                 int b = number % 10;
  31.                 int c;
  32.                 if (myArray[index] < 100)
  33.                 {
  34.                     c = 0;
  35.                 }
  36.                 else
  37.                 {
  38.                     number /= 10;
  39.                     c = number % 10;
  40.                 }
  41.                
  42.                 if (a == b || b == c || a == c)
  43.                 {
  44.                     myArray[index] = 0;
  45.                 }
  46.                 index++;
  47.             }
  48.            
  49.            
  50.             //проход по массиву со сравнением каждого числа с каждым следующим (обнуленные пропускаются),
  51.             //если все цифры совпадают - большее число обнуляется
  52.             index = 0;
  53.             int indexOfComparedNumber;
  54.             while (index < myArray.Length)
  55.             {
  56.                 if (myArray[index] != 0)
  57.                 {
  58.                     int number = myArray[index];
  59.                     int a = number % 10;
  60.                     number /= 10;
  61.                     int b = number % 10;
  62.                     int c;
  63.                     if (myArray[index] < 100)
  64.                     {
  65.                         c = 0;
  66.                     }
  67.                     else
  68.                     {
  69.                         number /= 10;
  70.                         c = number % 10;
  71.                     }
  72.  
  73.                     indexOfComparedNumber = index+1;
  74.                     while (indexOfComparedNumber < myArray.Length)
  75.                     {
  76.                         if (myArray[indexOfComparedNumber] != 0)
  77.                         {
  78.                             int comparedNumber = myArray[indexOfComparedNumber];
  79.                             int aCompared = comparedNumber % 10;
  80.                             comparedNumber /= 10;
  81.                             int bCompared = comparedNumber % 10;
  82.                             int cCompared;
  83.                             if (myArray[indexOfComparedNumber] < 100)
  84.                             {
  85.                                 cCompared = 0;
  86.                             }
  87.                             else
  88.                             {
  89.                                 comparedNumber /= 10;
  90.                                 cCompared = comparedNumber % 10;
  91.                             }
  92.  
  93.                             if ((a == aCompared || a == bCompared || a == cCompared)
  94.                                 && (b == aCompared || b == bCompared || b == cCompared)
  95.                                 && (c == aCompared || c == bCompared || c == cCompared))
  96.                             {
  97.                                 myArray[indexOfComparedNumber] = 0;
  98.                             }
  99.                         }
  100.  
  101.                         indexOfComparedNumber++;
  102.                     }
  103.                 }
  104.                 index++;
  105.             }
  106.  
  107.            
  108.             //Вывод не обнуленных чисел в консоль
  109.             index = 0;
  110.             while (index < myArray.Length)
  111.             {
  112.                 if (myArray[index] != 0)
  113.                 {
  114.                     if (myArray[index] < 100)
  115.                     {
  116.                         Console.WriteLine("0"+myArray[index]);
  117.                     }
  118.                     else
  119.                     {
  120.                         Console.WriteLine(myArray[index]);
  121.                     }
  122.                 }
  123.                 index++;
  124.             }
  125.  
  126.         }
  127.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement