Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace RainbowRaindrop
- {
- class Raindrop : IComparable
- {
- public double Volume { get; set; }
- public int RedColorValue { get; set; }
- public int GreenColorValue { get; set; }
- public int BlueColorValue { get; set; }
- public int CompareTo(object obj)
- {
- return Volume.CompareTo(obj);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- string input = Console.ReadLine();
- List<Raindrop> Rainbow = new List<Raindrop>();
- while (input != "End")
- {
- string[] SplittedInput = input.Split(' ').ToArray();
- if (SplittedInput.Length == 4)
- {
- Raindrop NewRaindrop = ExtractNewRaindrop(SplittedInput);
- if (CheckForRainbowColors(NewRaindrop))
- {
- Rainbow.Add(NewRaindrop);
- }
- }
- input = Console.ReadLine();
- }
- List<Raindrop> OrderedRainbow = Rainbow.OrderBy(o => o.Volume).ToList();
- Console.WriteLine($"Rainbow Raindrops: {OrderedRainbow.Count}");
- if (OrderedRainbow.Count > 0)
- {
- for (int i = 0; i < OrderedRainbow.Count; i++)
- {
- double Volume = OrderedRainbow.ElementAt(i).Volume;
- int Red = OrderedRainbow.ElementAt(i).RedColorValue;
- int Green = OrderedRainbow.ElementAt(i).GreenColorValue;
- int Blue = OrderedRainbow.ElementAt(i).BlueColorValue;
- Console.WriteLine($"{i + 1}. V:{Volume:f2} -> R:{Red} G:{Green} B:{Blue}");
- }
- }
- }
- public static bool CheckForRainbowColors(Raindrop RaindropToCheck)
- {
- bool IsRainbow = false;
- if ((RaindropToCheck.RedColorValue > 200) && (RaindropToCheck.BlueColorValue < 100) && (RaindropToCheck.GreenColorValue < 100))
- {
- IsRainbow = true;
- }
- if ((RaindropToCheck.BlueColorValue > 200) && (RaindropToCheck.GreenColorValue < 100) && (RaindropToCheck.RedColorValue < 100))
- {
- IsRainbow = true;
- }
- if ((RaindropToCheck.GreenColorValue > 200) && (RaindropToCheck.RedColorValue < 100) && (RaindropToCheck.BlueColorValue < 100))
- {
- IsRainbow = true;
- }
- return IsRainbow;
- }
- private static Raindrop ExtractNewRaindrop(string[] SplittedInput)
- {
- int[] colorInfo = new int[3];
- for (int i = 1, j = 0; i < SplittedInput.Length; i++, j++)
- {
- colorInfo[j] = int.Parse(SplittedInput[i]);
- if (colorInfo[j] < 0 || colorInfo[j] > 255)
- {
- colorInfo[j] = 0;
- }
- }
- Raindrop NewRaindrop = new Raindrop();
- NewRaindrop.Volume = double.Parse(SplittedInput[0]);
- NewRaindrop.RedColorValue = colorInfo[0];
- NewRaindrop.GreenColorValue = colorInfo[1];
- NewRaindrop.BlueColorValue = colorInfo[2];
- return NewRaindrop;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement