2. Kitty решение


0

Здравейте,

може ли някой да сподели решението си на изпитна задача Kitty от C# Advanced - 2016/2017 @ 1 June 2016 - Evening. Имам някакъв Runtime error и не разбрах откъде е.

10х




Отговори



0

Ето моето решение 100/100

// @ - > soul // * - > food // x - > deadlock namespace _02.Task_Two { using System; using System.Collections.Generic; using System.Linq; class TaskTwo { static void Main() { char[] path = Console.ReadLine().ToCharArray(); var moves = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); int soulsCounter = 0; int foodCollected = 0; int deadLocks = 0; int currentIndex = 0; int currentMove = 0; bool deadlocked = false; while (true) { char currentItem = path[currentIndex]; if (currentItem == '@') { soulsCounter++; path[currentIndex] = '0'; } if (currentItem == '*') { foodCollected++; path[currentIndex] = '0'; } if (currentItem == 'x') { if (currentIndex % 2 == 0) { soulsCounter--; path[currentIndex] = '@'; if (soulsCounter < 0) { Console.WriteLine("You are deadlocked, you greedy kitty!"); Console.WriteLine("Jumps before deadlock: {0}", currentMove); deadlocked = true; break; } } else { foodCollected--; path[currentIndex] = '*'; if (foodCollected < 0) { Console.WriteLine("You are deadlocked, you greedy kitty!"); Console.WriteLine("Jumps before deadlock: {0}", currentMove); deadlocked = true; break; } } deadLocks++; } // Change Index && break if (currentMove == moves.Length) { break; } if (moves[currentMove] > 0) { currentIndex = (int)((currentIndex + moves[currentMove]) % path.Length); } else { int check = currentIndex + moves[currentMove]; //currentIndex = (int)((currentIndex - moves[currentMove]) % path.Length); currentIndex = check % path.Length; if (currentIndex < 0) { currentIndex += path.Length; } } currentMove++; } if (!deadlocked) { Console.WriteLine("Coder souls collected: {0}", soulsCounter); Console.WriteLine("Food collected: {0}", foodCollected); Console.WriteLine("Deadlocks: {0}", deadLocks); } // Console.WriteLine("You are deadlocked, you greedy kitty!"); } } }


от tabula (2134 точки)


0
Аз го докарах до 80/100 с това решение ЦЪК Ако някой има идея къде гърми да споделя

от magadisho (823 точки)


0
И при мен беше така,като си x трябва да оставиш на това място @ или * .

от Desislav_A (167 точки)

0
И не просто да оставиш едно от двете, ами и deadlock-ът губи предишната си функция. Аз това така и не го хванах на изпита, съответно ми костваше и 20 точки.

от dimpechev (50 точки)


0
Ето моето решение: 100/100

от StoikoNeykov (2621 точки)