Loading...
svetlyoek avatar svetlyoek 20 Точки

задача 06.Cards game - List Exercise -C#- Tech

Здравейте.

Ще се радвам някой да погледне кода,който така или иначе гърми с Exception,понеже още ми е мътно да разбера къде ми е грешката...Не знам дали изобщо би бил ок и кода де.

https://pastebin.com/XDRZVp0L

 

You will be given two hands of cards, which will be integer numbers. Assume that you have two players. You have to find out the winning deck and respectively the winner.

You start from the beginning of both hands. Compare the cards from the first deck to the cards from the second deck. The player, who has the bigger card, takes both cards and puts them at the back of his hand - the second player’s card is last, and the first person’s card (the winning one) is before it (second to last) and the player with the smaller card must remove the card from his deck. If both players’ cards have the same values - no one wins, and the two cards must be removed from the decks. The game is over, when one of the decks is left without any cards. You have to print the winner on the console and the sum of the left cards: "Player {one/two} wins! Sum: {sum}".

Examples

Input

Output

20 30 40 50

10 20 30 40

First player wins! Sum: 240

10 20 30 40 50

50 40 30 30 10

Second player wins! Sum: 50

Thanks!

Тагове:
0
Fundamentals Module
Hristo13 avatar Hristo13 227 Точки

Смени на 20ти ред || проверката с while (firstPlayer.Count > 0 && secondPlayer.Count > 0) така ти отпада долния if. Усложняваш си решението доста с тези два вложени for цикли. Проверявай ги по нулев индекс както в кода на sad_incoming.

0
svetlyoek avatar svetlyoek 20 Точки

Благодаря ви,но не схващам логиката да се проверява всеки път по 0 индекс?И друго-как да съм сигурен,че винаги ще ми се подават в еднаква дължина,за да въртя само един for цикъл и защо в while да е §§ след като трябва да свърши при зануляване на едно от двете тестета?Не си го обеснявам за мене си,затова питам...

0
Hristo13 avatar Hristo13 227 Точки

Няма проблем за това е форума.

while (firstPlayer.Count > 0 && secondPlayer.Count > 0)

С това условие в началото на всяка итерация проверява дали и двата листа съдържат карти. При всички положения освен в една крайност се получава така че почти винаги има разлика в дължините на листовете и while цикъла ще си върти докато на единия играч не му свършат картите затова няма много значение от началните дължини. Проверяваме с нулев индекс защото сравняваме само "първите" карти. След като премахнем или преместим сравнените карти картите от 1 индекс отиват на 0 и в следващата итерация на while-a ги проверяваме тях.

0
22/02/2019 14:22:47
Ivan_Lefterov avatar Ivan_Lefterov 12 Точки

Здравей, колегата ти е прав, че в този случай не са ти нужни for цикли, защото при всяко влизане в цикъла ти сравняваш нулевите елементи на двата листа и после ги махаш във всяко едно от условията и така при всяко влизане следващите елементи за сравнение са станали нулеви.Направи си проверките от типа: 

if (firstPlayer[0] > secondPlayer[0])
                {
                    firstPlayer.Add(Player1[0]);
                    firstPlayer.Add(Player2[0]);
                    firstPlayer.RemoveAt(0);
                    secondPlayer.RemoveAt(0);
                }

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.