Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Exam906_Snowmen
- {
- class Program
- {
- static void Main(string[] args)
- {
- //Read
- //traverse
- //element -> attacker index
- //integer value -> target index
- // conditions
- //тук четем входа
- List<int> snowmen = Console.ReadLine()
- .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
- .Select(int.Parse)
- .ToList();
- //по условие имаме че трябва да въртим цикъл докато не остане само един снежен човек
- while (snowmen.Count > 1)
- {
- for (int i = 0; i < snowmen.Count; i++)// тук обхождаме входа който получаваме
- {
- //с тази if провера проверяваме дали накрая не е останал само един снежен човек който да иска да се
- //самоубие тъй като може да остане само един и ако отговаря на дадените условия да се самоубие и да не
- // остане никой в листа
- if (snowmen.Count(x => x != -1) == 1)
- {
- break;
- }
- //с -1 маркираме снежните човеци които са мъртви вече
- if (snowmen[i] == -1)
- {
- continue;
- }
- //тук даваме стойностите на target-а и на attacker-а. Например 4 3 2 1 0
- int attacker = i; // attacker-а на 0 индекс се цели в
- int target = snowmen[i]; // target-а snowmen[i] което в първата итерация е 4
- //от условието ако target-а е по-голям от дължината на input-а трябва да го разделим модулно
- if (target > snowmen.Count)
- {
- target %= snowmen.Count;
- }
- int absoluteValue = Math.Abs(attacker - target);// това е абсолютната стойност с която ще работим
- // по-долу и ще питаме дали е равна на target-а четна или нечетна
- if (attacker == target)
- {
- snowmen[attacker] = -1;
- Console.WriteLine($"{attacker} performed harakiri");
- }
- else if (absoluteValue % 2 != 0)//target wins
- {
- snowmen[attacker] = -1;// в този случай target-а бие и attacker-а умира и за това маркираме
- // attacker-а с -1
- Console.WriteLine($"{attacker} x {target} -> {target} wins");
- }
- else if (absoluteValue % 2 == 0)//attacker wins
- {
- //същата логика прилагаме и тук
- snowmen[target] = -1;
- Console.WriteLine($"{attacker} x {target} -> {attacker} wins");
- }
- }
- snowmen = snowmen.Where(x => x != -1).ToList(); // на този ред понеже след обработката на листа ни ще имаме
- //нещо подобно на -1 -1 -1 2 -1 за това с ламбдата му казваме в snowmen да ми запише само тези числа които са различни от -1
- //с други думи да не ми записва тези умрелите снежни човеци
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement