Advertisement
stanevplamen

02.09.05.02.SegmentDigits

Jul 12th, 2013
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. class SegmentDigits
  6. {
  7.     static int counterCombos = 0;
  8.     static StringBuilder sb = new StringBuilder();
  9.     static List<int>[] comboLists;
  10.  
  11.     static int numberOfLoops;
  12.     static int numberOfIterations = 1;
  13.     static int[] loops;
  14.  
  15.     static void NestedLoops(int currentLoop)
  16.     {
  17.         if (currentLoop == numberOfLoops)
  18.         {
  19.             counterCombos++;
  20.             AddPrintLoops();
  21.             return;
  22.         }
  23.  
  24.         for (int i = currentLoop; i < comboLists.Length; i++)
  25.         {
  26.  
  27.             for (int counter = 0; counter < comboLists[i].Count; counter++)
  28.             {
  29.                 loops[i] = comboLists[i][counter];
  30.                 NestedLoops(currentLoop + 1);
  31.             }
  32.             return;
  33.         }
  34.     }
  35.  
  36.     static void AddPrintLoops()
  37.     {
  38.         for (int i = 0; i < numberOfLoops; i++)
  39.         {
  40.             sb.Append(loops[i]);
  41.         }
  42.         sb.AppendLine();
  43.     }
  44.  
  45.  
  46.     static void Main()
  47.     {
  48.         int inputN = int.Parse(Console.ReadLine());                                        
  49.         string[] inputLines = new string[inputN];
  50.         //inputLines[0] = "1011111";                                  
  51.         int[] currentNumber = new int[inputN];
  52.         //currentNumber[0] = GetNumberFromInput(inputLines[0]);      
  53.         comboLists = new List<int>[inputN];
  54.         for (int i = 0; i < inputLines.Length; i++)
  55.         {
  56.             comboLists[i] = new List<int>();
  57.             inputLines[i] = Console.ReadLine();
  58.             currentNumber[i] = GetNumberFromInput(inputLines[i]);
  59.             AddComboList(i, currentNumber[i], inputLines[i]);
  60.             numberOfIterations = numberOfIterations * comboLists[i].Count;
  61.         }
  62.         numberOfLoops = inputN;
  63.         loops = new int[numberOfLoops];
  64.         NestedLoops(0);
  65.         string allCombsStr = sb.ToString();
  66.         //Console.WriteLine(numberOfIterations);
  67.         Console.WriteLine(counterCombos);
  68.         Console.WriteLine(allCombsStr);
  69.  
  70.     }
  71.  
  72.     private static void AddComboList(int i, int number, string currentLine)
  73.     {
  74.         switch (number)
  75.         {
  76.             case 11:
  77.                 comboLists[i].Add(0);comboLists[i].Add(1); comboLists[i].Add(2); comboLists[i].Add(3); comboLists[i].Add(4); comboLists[i].Add(5);
  78.                 comboLists[i].Add(6); comboLists[i].Add(7); comboLists[i].Add(8); comboLists[i].Add(9);
  79.                 return;
  80.             case 1:
  81.                 comboLists[i].Add(0);comboLists[i].Add(3); comboLists[i].Add(4); comboLists[i].Add(7); comboLists[i].Add(8); comboLists[i].Add(9);
  82.                 return;
  83.             case 2:
  84.                 comboLists[i].Add(2); comboLists[i].Add(8);
  85.                 return;
  86.             case 3:
  87.                 comboLists[i].Add(3); comboLists[i].Add(8); comboLists[i].Add(9);
  88.                 return;
  89.             case 4:
  90.                 comboLists[i].Add(4); comboLists[i].Add(8); comboLists[i].Add(9);
  91.                 return;
  92.             case 5:
  93.                 comboLists[i].Add(5); comboLists[i].Add(6); comboLists[i].Add(8); comboLists[i].Add(9);
  94.                 return;
  95.             case 6:
  96.                 comboLists[i].Add(6); comboLists[i].Add(8);
  97.                 return;
  98.             case 7:
  99.                 comboLists[i].Add(0);comboLists[i].Add(3); comboLists[i].Add(7); comboLists[i].Add(8); comboLists[i].Add(9);
  100.                 return;
  101.             case 8:
  102.                 comboLists[i].Add(8);
  103.                 return;
  104.             case 9:
  105.                 comboLists[i].Add(8); comboLists[i].Add(9);
  106.                 return;
  107.             case 0:
  108.                 comboLists[i].Add(0); comboLists[i].Add(8);
  109.                 return;
  110.             case 10:
  111.                 AddListSecondCase(currentLine, i);
  112.                 return;
  113.             default:
  114.                 return;
  115.         }
  116.     }
  117.  
  118.     private static void AddListSecondCase(string currentLine, int row)
  119.     {
  120.         string[] numbers = { "1111110", "0110000", "1101101", "1111001", "0110011", "1011011", "1011111",
  121.                            "1110000", "1111111", "1111011" };
  122.         //string zero = "1111110";
  123.         //string one = "0110000";
  124.         //string two = "1101101";
  125.         //string three = "1111001";
  126.         //string four = "0110011";
  127.         //string five = "1011011";
  128.         //string six = "1011111";
  129.         //string seven = "1110000";
  130.         //string eight = "1111111";
  131.         //string nine = "1111011";
  132.  
  133.         List<int> positions = new List<int>();
  134.         for (int i = 0; i < currentLine.Length; i++)
  135.         {
  136.  
  137.             if (currentLine[i] == '1')
  138.             {
  139.                 positions.Add(i);
  140.             }
  141.         }
  142.         bool countNumber = false;
  143.         for (int i = 0; i < numbers.Length; i++)
  144.         {
  145.             countNumber = true;
  146.             for (int j = 0; j < positions.Count; j++)
  147.             {
  148.                 if (numbers[i][positions[j]] != '1' )
  149.                 {
  150.                     countNumber = false;
  151.                     break;
  152.                 }
  153.             }
  154.             if (countNumber == true)
  155.             {
  156.                 comboLists[row].Add(i);
  157.             }
  158.         }
  159.  
  160.     }
  161.  
  162.     private static int GetNumberFromInput(string currentLine)
  163.     {
  164.         switch (currentLine)
  165.         {
  166.             case "0000000":
  167.                 return 11;
  168.             case "0110000":
  169.                 return 1;
  170.             case "1101101":
  171.                 return 2;
  172.             case "1111001":
  173.                 return 3;
  174.             case "0110011":
  175.                 return 4;
  176.             case "1011011":
  177.                 return 5;
  178.             case "1011111":
  179.                 return 6;
  180.             case "1110000":
  181.                 return 7;
  182.             case "1111111":
  183.                 return 8;
  184.             case "1111011":
  185.                 return 9;
  186.             case "1111110":
  187.                 return 0;
  188.             default:
  189.                 return 10;
  190.         }
  191.     }
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement