Advertisement
crackanddie

Askar bot

Jul 13th, 2022
720
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.57 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace CSTest
  8. {
  9.     internal class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             TestCase();
  14.             Console.ReadKey();
  15.         }
  16.  
  17.         private static readonly char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
  18.  
  19.         private static string[] AvailableParkingSpaces(int columns, int rows, string[] busyParkingSpaces, TimeSpan[] startTimes,
  20.             TimeSpan[] endTimes, TimeSpan newParkingTime, int newParkingDuration)
  21.         {
  22.             IDictionary<string, List<TimeSpan>> parkingPlaces = new Dictionary<string, List<TimeSpan>>();
  23.             for (int i = 0; i < columns; i++)
  24.             {
  25.                 for (int j = 0; j < rows; j++)
  26.                 {
  27.                     parkingPlaces.Add(alpha[i].ToString() + (j + 1).ToString(), null);
  28.                 }
  29.             }
  30.  
  31.             for (int i = 0; i < busyParkingSpaces.Length; i++)
  32.             {
  33.                 if (parkingPlaces[busyParkingSpaces[i]] == null)
  34.                 {
  35.                     parkingPlaces[busyParkingSpaces[i]] = new List<TimeSpan>();
  36.                 }
  37.                 parkingPlaces[busyParkingSpaces[i]].Add(startTimes[i]);
  38.                 parkingPlaces[busyParkingSpaces[i]].Add(endTimes[i]);
  39.             }
  40.  
  41.             List<string> availablePlaces = new List<string>();
  42.  
  43.             foreach (var place in parkingPlaces)
  44.             {
  45.                 if (place.Value != null)
  46.                 {
  47.                     if (IsAllOk(place, newParkingTime, newParkingDuration))
  48.                     {
  49.                         availablePlaces.Add(place.Key);
  50.                     }
  51.                 }
  52.                 else
  53.                 {
  54.                     availablePlaces.Add(place.Key);
  55.                 }
  56.             }
  57.  
  58.             return availablePlaces.ToArray();
  59.         }
  60.  
  61.         private static bool IsAllOk(KeyValuePair<string, List<TimeSpan>> place, TimeSpan parkingTime, int duration)
  62.         {
  63.             for (int j = 0; j < place.Value.Count; j += 2)
  64.             {
  65.                 if (place.Value[j] <= parkingTime && place.Value[j + 1] > parkingTime)
  66.                 {
  67.                     return false;
  68.                 }
  69.  
  70.                 if (place.Value[j] > parkingTime)
  71.                 {
  72.                     if (place.Value[j] < parkingTime + TimeSpan.FromMinutes(duration))
  73.                     {
  74.                         return false;
  75.                     }
  76.                 }
  77.             }
  78.             return true;
  79.         }
  80.  
  81.         public static void TestCase()
  82.         {
  83.             string[] busyIntervals = new string[] { "B1", "C3", "A2", "B3", "C3", "A1", "B1", "C2", "A3" };
  84.             TimeSpan[] startTimes = new TimeSpan[] { TimeSpan.FromHours(10), TimeSpan.FromHours(15.5), TimeSpan.FromHours(6),
  85.                 TimeSpan.FromHours(9), TimeSpan.FromHours(8), TimeSpan.FromHours(4), TimeSpan.FromHours(14), TimeSpan.FromHours(10),
  86.                 TimeSpan.FromHours(5) };
  87.             TimeSpan[] endTimes = new TimeSpan[] { TimeSpan.FromHours(14), TimeSpan.FromHours(20), TimeSpan.FromHours(12.3),
  88.                 TimeSpan.FromHours(10), TimeSpan.FromHours(11.5), TimeSpan.FromHours(16.75), TimeSpan.FromHours(18), TimeSpan.FromHours(22),
  89.                 TimeSpan.FromHours(17) };
  90.  
  91.             string[] outArray = AvailableParkingSpaces(3, 3, busyIntervals, startTimes, endTimes, TimeSpan.FromHours(11), 330);
  92.  
  93.             Console.WriteLine(string.Join(", ", outArray));
  94.         }
  95.     }
  96. }
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement