Advertisement
Valdaria

aoc-day4

Dec 4th, 2019
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Day4
  6. {
  7.     internal class Program
  8.     {
  9.         private static bool isHavingSameAdjacentNumber(int number)
  10.         {
  11.             var numberStr = number.ToString();
  12.             for (int i = 0; i < numberStr.Length - 1; i++)
  13.             {
  14.                 if (numberStr[i] == numberStr[i + 1])
  15.                     return true;
  16.             }
  17.             return false;
  18.         }
  19.  
  20.         private static bool IsNotMoreTwoDigitsAdjacent(int number)
  21.         {
  22.             Dictionary<char, int> d = new Dictionary<char, int>();
  23.             var numberStr = number.ToString();
  24.             for (int i = 0; i < numberStr.Length; i++)
  25.             {
  26.                 if (d.ContainsKey(numberStr[i])) d[numberStr[i]]++;
  27.                 else d.Add(numberStr[i], 1);
  28.             }
  29.             return d.Values.Any(v => v == 2);
  30.         }
  31.  
  32.         private static bool isIncreasing(int number)
  33.         {
  34.             var numberStr = number.ToString();
  35.             for (int i = 0; i < numberStr.Length - 1; i++)
  36.             {
  37.                 if (numberStr[i] > numberStr[i + 1]) return false;
  38.             }
  39.             return true;
  40.         }
  41.  
  42.         private static bool test(int number)
  43.         {
  44.             bool[] tests = { isIncreasing(number), isHavingSameAdjacentNumber(number), IsNotMoreTwoDigitsAdjacent(number) };
  45.             return tests.All(i => i == true);
  46.         }
  47.  
  48.         private static void Main(string[] args)
  49.         {
  50.             var min = 183564;
  51.             var max = 657474;
  52.             var count = 0;
  53.  
  54.             for (int number = min; number <= max; number++)
  55.             {
  56.                 if (test(number)) count++;
  57.             }
  58.  
  59.             Console.WriteLine(count);
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement