Example #1
0
    void Start()
    {
        _core = GameObject.FindObjectOfType <ZCore>();
        if (_core == null)
        {
            this.enabled = false;
            return;
        }
        //_core.TargetButtonRelease += HandleButtonRelease;
        carManage = GameObject.Find("Car").GetComponent <CarManage>();

        transparentShader = Shader.Find("Transparent/Diffuse");
        defShader         = Shader.Find("Beffio/Car Paint Opaque");
    }
        static void Main(string[] args)
        {
            //        Tasks:

            //            1.Print all numbers from 10 to 50 separated by commas

            var newList1 = Enumerable.Range(10, 41);

            Console.WriteLine(string.Join(",", newList1));

            //var stringNumberWithCommas1 = string.Join(",", Enumerable.Range(10, 41));
            //Console.WriteLine(stringNumberWithCommas1);
            Console.WriteLine(new string('=', 75));
            //============================================================================================
            //2.Print only that numbers from 10 to 50 that can be divided by 3

            var numbersDevBy3 = Enumerable.Range(10, 41).Where(x => x % 3 == 0);

            foreach (var x in numbersDevBy3)
            {
                Console.Write(x + " ");
            }
            Console.WriteLine(new string('=', 75));
            //============================================================================================
            //3.Output word "Linq" 10 times
            var listStrLINQ = Enumerable.Repeat("LINQ", 10);

            foreach (var linq in listStrLINQ)
            {
                Console.Write(linq + " ");
            }
            Console.WriteLine();

            Action <string> action1 = str =>
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.Write(str + " ");
                }
            };

            action1("Linq");
            Console.WriteLine();
            Console.WriteLine(new string('=', 75));
            //============================================================================================
            //4.Output all words with letter 'a' in string "aaa;abb;ccc;dap"
            string someStr = "psdftrewq;aaa;abb;ccc;dap;xabbx";
            //string someStr = "asd;asd;asd;asd;asd;asd";
            var listWordsWithA = someStr.Split(';').Where(x => x.Contains("a"));

            foreach (var x in listWordsWithA)
            {
                Console.Write(x + " ");
            }
            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================
            //5.Output number of letters 'a' in the words with this letter in string "aaa;abb;ccc;dap" separated by comma
            var q       = someStr.Split(';');
            var newList = from x in q
                          where x.Contains("a")
                          select string.Concat(x.Count().ToString(), ",");

            var newList2 = someStr.Split(';').Where(i => i.Contains("a")).Select(i => string.Concat(i.Count().ToString(), ","));

            foreach (var x in newList2)
            {
                Console.Write(x);
            }
            Console.WriteLine();
            //string [] s= someStr.Split(';');
            foreach (var x in newList)
            {
                Console.Write(x);
            }
            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================
            //6.Output true if word "abb" exists in line  "aaa;xabbx;abb;ccc;dap", otherwise false
            Console.WriteLine(someStr.Contains("abb")? "true" : "false");

            Predicate <string> predicateD = abb => someStr.Contains(abb);

            Console.WriteLine(predicateD("abb"));
            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================
            //7.Get the longest word in string "aaa;xabbx;abb;ccc;dap"
            Console.WriteLine(someStr);
            var masStr = someStr.Split(';');
            Action <string[]> findMaxWord = mas =>
            {
                string max = mas[0];
                for (int i = 1; i < mas.Length; i++)
                {
                    max = max.Length < mas[i].Length ? mas[i] : max;
                }
                Console.WriteLine(max);
            };

            findMaxWord(masStr);

            //string lonlestStr = masStr.OrderByDescending(x => x.Length).First();
            //Console.WriteLine(lonlestStr);

            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================
            //8.Calculate average length of word in string "aaa;xabbx;abb;ccc;dap"

            var averageLength = someStr.Split(';').Average(x => x.Length);

            Console.WriteLine(averageLength);
            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================
            //9.Print the shortest word reversed in string "aaa;xabbx;abb;ccc;dap;zh"
            string someString1  = "aaa;xabbx;abb;ccc;dap;zh";
            string shortestWord = someString1.Split(';').OrderBy(x => x.Length).First();

            foreach (var chars in shortestWord.Reverse())
            {
                Console.Write(chars);
            }
            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================
            //10.Print true if in the first word that starts from "aa" all letters are 'a' otherwise false "baaa;aabb;xabbx;abb;ccc;dap;zh"
            string someString2 = "baaa;aaaa;aabb;xabbx;abb;ccc;dap;zh;aaaaaaa;";

            var ad = someString2.Split(';').Where(x => x.StartsWith("a")).First().All(x => x == 'a');

            Console.WriteLine(ad);

            var strAaa = from a in someString2.Split(';')
                         where a.StartsWith("a")
                         select a;
            var strAAAA = strAaa.First();
            var strAa   = strAAAA.All(a => a == 'a');

            Console.WriteLine(strAa);
            Console.WriteLine("\n" + new string('=', 75));
            //============================================================================================

            //            Delegates and events
            //Задача «Автомойка» (придумала сама)
            //У вас есть 4 сущности: Car, WashingStation и WashingCard, WashingService где каждая из них содержит следующие поля:
            //WashingCard: срок действия, баланс
            //Car: марка, год выпуска, WashingCard, состояние (чистая / грязная), метод для обработки уведомлений
            // WashingService: имя услуги, стоимость
            //WashingStation: имя станции, список предоставляемых WashingService, события: успешная мойка/ недостаточно средств.

            //Опишите следующую логику программы : у вас есть 10 разных машин и 2 мойки.
            //Пусть каждая из грязных машин попробует заехать на автомойку и получить услугу.
            //Если средств недостаточно – обрабатываете событие «недостаточно средств» -например, пытаетесь поехать на вторую мойку или отказываетесь от идеи помыть машину.
            //Если все в порядке – обрабатываете событие «успешная мойка» -меняете статус машины на «чистая».
            //Не забывайте менять состояние баланса на WashingCard после мойки.
            //Старайтесь все состояния генерировать случайно
            Car car1 = new Car("Lada", 2005,
                               new WashingCard(new DateTime(2021, 03, 12), 15.40m));
            Car car2 = new Car("BMW", 2018,
                               new WashingCard(new DateTime(2022, 04, 13), 800.00m));
            Car car3 = new Car("Tavria", 2001,
                               new WashingCard(new DateTime(2023, 05, 14), 247.00m));
            Car car4 = new Car("Chevrolet", 2015,
                               new WashingCard(new DateTime(2024, 06, 15), 560.00m));
            Car car5 = new Car("Renault", 2015,
                               new WashingCard(new DateTime(2025, 07, 17), 540.00m));
            Car car6 = new Car("Mersedes", 2005,
                               new WashingCard(new DateTime(2021, 08, 18), 154.00m));
            Car car7 = new Car("Daewoo", 2017,
                               new WashingCard(new DateTime(2022, 09, 18), 428.00m));
            Car car8 = new Car("Cherry", 2019,
                               new WashingCard(new DateTime(2023, 10, 19), 341.00m));
            Car car9 = new Car("Volga", 1998,
                               new WashingCard(new DateTime(2024, 11, 20), 58.00m));
            Car car10 = new Car("Ford", 1999,
                                new WashingCard(new DateTime(2025, 12, 21), 135.00m));
            List <Car> cars = new List <Car>();

            cars.AddRange(new List <Car> {
                car1, car2, car3, car4, car5, car6, car7, car8, car9, car10
            });
            WashingStation station1 = new WashingStation("Yljana",
                                                         new List <WashingService> {
                new WashingService(EnumService.ContactlessSink, 155.00m),
                new WashingService(EnumService.ManualWash, 140.00m),
                new WashingService(EnumService.VacuumCleaning, 100.00m)
            });

            station1.SuccessWashEvent   += Car.Station1_SuccessWashEventHendler;
            station1.UnsuccessWashEvent += Car.Station1_UnsuccessWashEventHendler;

            WashingStation station2 = new WashingStation("KharkovOil",
                                                         new List <WashingService> {
                new WashingService(EnumService.ContactlessSink, 130.00m),
                new WashingService(EnumService.ManualWash, 125.00m),
                new WashingService(EnumService.VacuumCleaning, 98.00m),
                new WashingService(EnumService.GlassCleaning, 85.00m)
            });

            station2.SuccessWashEvent   += Car.Station2_SuccessWashEventHendler;
            station2.UnsuccessWashEvent += Car.Station2_UnsuccessWashEventHendler;
            List <WashingStation> stations = new List <WashingStation>();

            stations.AddRange(new List <WashingStation> {
                station1, station2
            });

            CarManage.GetWashing(cars, stations);
        }