[C# Part 1 Exam 24.06.2013] Задачи и Решения


4

Предлагам в тази тема да споделяме решенията на задачите от изпита на 24.06.2013 Morning.

Условията на задачите може да намерите тук:

https://github.com/CuST0M1z3/24.06-MorningExamTasks

И моите решение на задачи 1,2 и 4 на които имам 100 точки:

https://github.com/CuST0M1z3/CSharp24.06MorningSolutions

 




Отговори



8
Ето ви официалните условия, тестове и авторски решения: http://downloads.academy.telerik.com/svn/csharppart1/2013/8.%20Exam/Variant%202%20(2013-06-24).zip

от Nikolay.IT (39117 точки)


2

cchapo 

Направи проверка дали входа ти не е отрицателно число.


от IankoVanov (139 точки)


0
Да го направя uint ли ?

от cchapo (583 точки)

0
if (n<0) { n *= -1; //по този начин обръщаш знакът }

от IankoVanov (139 точки)



0

Здравейте колеги!

Някой може ли да ми обясни как е възможно на Card Wars още в първия пример да имаме Score 63. Аз разбрах условието така: първата цифра е за броят игри. След това първата тройка показва картите на първият играч, втората тройка показва тези на втория и се сравняват точките между двете тройки, дава се евентуална победа на един от двамата и се продължава по същия начин до достигане броя игри зададени на първи ред. Тук случая с карта X не ни вълнува, защото няма такава в примера.

Input

Output

2

2

2

2

A

A

5

2

K

2

5

6

A

First player wins!

Score: 63

Games won: 2

 


от p.penchev (204 точки)


0
Ами първия играч има 30 точки от първата ръка, с трите си двойки, което е 3* 10. За втората ръка има 2* 10 + 13(от попа) ... Което общо прави 63 точки. Той печели първата и втората игра. Общо две игри. Ако това отговаря на въпроса ти. Изглежда си коректно


0
Мале мале....... аз съвсем изключих, че точките са в обратен ред - 2 - 10, 3 - 9... Благодаря колежке, отвори ми очите :)

от p.penchev (204 точки)


1

Здравейте отново,

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

http://pastebin.com/gf4Z097w

Предварителни благодарности.


от p.penchev (204 точки)


0
Z, Y и X картите влияят на общия брой точки, а не на временния и независимо кой печели междинната игра. Т.е. ако има 50 точки за двамата, добавят им се към общия, умножаването на точките при Z картата също става с общия брой точки.
Също така има значение кога прилагаш действията от X Y Z картите. При мене се получи на 100% когато първо ги обработвам тях, чак след това проверявам кой е получил повече точки от текущата игра.
Нямам думи колко е омотано описанието на задачата обаче! Получават се доста двусмислия, особено при изписването на резултата за "равен". "It's a tie! Score: S, Where S is the score of both players." Е иди докажи, че не трябва да печатя общия им сбор точки, а само на единия :)
Ето моето решение: http://goo.gl/sWDwTH

от davidvesely (97 точки)

0
Условието наистина на много места въобще не е кристално ясно и има възможност да се разбере по няколко начина...Ще го преправя кода според това, което казваш да видим ще вдигна ли резултата :) Благодаря

от p.penchev (204 точки)


0

За да не пускам нова тема, ако може да кажете къде ми е грешката тук на задача 3. Card Wars: http://pastebin.com/56ydSpf6
 

Изкарва ми само 43/100.


от cchapo (583 точки)


0
Доколкото виждам, сравняваш пълните точки на играчите, а трябва да имаш временни точки само за конкретното раздаване. Специалните карти се прилагат върху целия.


0
Всъщност да, прав си. Сега като се вгледам ... явно просто нещо не съм доразбрал условието.

от cchapo (583 точки)



0

Здравейте колеги може ли някой да ми каже къде е грешката - издържа на всички тестове освен на два (86/100)

http://pastebin.com/0LXZz1pC - това е първоначално както я събмитнах

http://pastebin.com/e6UfRjnP - това е втория път (махнах вложените IF-ове от опасения че системата може да се заяжда с тях.

Пробвах я в доста ситуации и мислех че работи коректно но явно съм се объркал. Ето screenshot и log файл от системата:

http://pastebin.com/8z6L6c4J - log файла

https://www.diigo.com/item/image/42ies/bx4s - ето го screenshot-а




0
Ползвай {0:F2} в реда Console.WriteLine("Total costs: {0:N}", vegetablesPrice); N се използва за други неща и няма да бъде отчетен правилно от bgcoder.

от Vazzzz (1380 точки)

0
Аха да вярно сега видях и в MSDN-то пише че F се позлва за fixed-point. Благодаря колега :)



0

моите решения са тези:

secrets http://pastebin.com/ns6FsBzm

gardens http://pastebin.com/ZA4GNxXQ

card wards  http://pastebin.com/R4LD8Cu4

batGojkoTower http://pastebin.com/gbbzeH2b

Bittris http://pastebin.com/vUE6RXFK

признавам, че за послената гледах видеата, за да мога да я направя. Тя май е прекалено трудна и няма да дадат подобна за изпита. Успех с останалите изпитни теми :) , че има още доста.

 




0
Не знам защо мислиш, че няма да дадат задача като Bittris на изпита. Bittris е задача от последния изпит по C#1. Дори и при вас да има нещо подобно не бива да те притеснява, защото задачата ще е трудна за всички не само за теб, а резултатите се определят според средното ниво на положилите изпита.

от anilak (1134 точки)

0
аз очаквам много трудни задачи, защото има много курсисти и те трябва да се отсеят

от ttitto (1950 точки)


0

Колеги имам леки затруднения с Card Wars. Общо взето от оригиналното решение взаимствах за X card идеята, но искарвам само 25точки. Ето решението http://pastebin.com/p2uthCvH


от Pavlin1987 (326 точки)


0
Мога да ти преправя кода, но няма да си го познаеш :). По-добре опитай сам - трябва да имаш отделни променливи за резултата от текущото разиграване и за общия резултат, защото картите Y и Z влияят само върху общия резултат, но не и върху текущия. От текущия резултат се определя кой ще получи играта и ще добави текущия си резултат към общия.

от anilak (1134 точки)

0
Да... мн благодаря... това не го бях мислил така ... :D

от Pavlin1987 (326 точки)


0

И аз ще се възползвам от темата, за да помоля за помощ при дибъга на CardWars. Чуква 87/100 и толова. Гърми на 12ти и 13ти тест, които вкарват игра с по 100 рунда, съответно 601 реда input. E тогава гърми с грешен резултат и не мога да разбера защо. Поствам решението си. http://pastebin.com/nXXdFNCL .

Благодаря предварително!




0
Здравей, проблема идва от случая, когато и двамата играчи имат Х карта. Ти им добавяш 50 към общия резултат още преди края на текущото раздаване и ако във същото раздаване изтеглят карта Z за удвояване на общия резултат се удвояват и тези 50 точки. Ето как го коригирах, за да получи 100/100: http://pastebin.com/8VhPhbqp ЕДИТ: Иначе браво за оригиналния подход със стрингове, не бях срещала такова решение.

от anilak (1134 точки)

0
Благодаря много за помощта! Разбрах проблема, наистина не се бях сетила за това. Поздрави и успех на предстоящия изпит! :)



0

Задачата Card Wars на 3-ти тест има

Първи играч: 9,Х,А

Втори играч: А,Х,А

Питам, защо първия играч печели след като по-условие ако и двамата изтеглят Х, всеки получава 50 точки към общия си резултат, няма победители и точки от текущата ръка не се дават?


от ivan.yosifov (679 точки)


0
Ето извадка от условието: - The “X” card – wins the whole game match, BUT if both players draw the “X” card in the same game, they are both awarded 50 points to their player score (without any one of them winning the game). It doesn’t matter if the card is drawn 2 or 3 times in the same hand.
Така, т.к. и двамата имат изтеглена карта Х играта не свършва. По условие и първия и втория играч получават по 50 точки към резултата си, т.е. до момента: Първи играч: 50 точки Втори играчи: 50 точки
След това никъде не пише, че даденото раздаване е свършило, т.е. трябва да се оценят останалите карти: Първи играч: А + 9 = 1 + 3 = 4 точки Втори играч: А + А = 1 + 1 = 2 точки
Първи играч има повече точки и печели играта и трябва да се отпечата: First player wins! Score: 54 Games won: 1
Всичко това при условие, че няма други раздавания.

от wnvko (3123 точки)

0
Много добре обяснено wnvko. Обаче по условие е казано:
The “X” card – wins the whole game match, but if both players draw the “X” card in the same GAME, they are both awarded 50 points to their player score (without any one of them winning the GAME). It doesn’t matter if the card is drawn 2 or 3 times in the same HAND.
Което е супер объркващо. Защото първото GAME се отнася за текущата ръка на двамата играча, а второто GAME се отнася за играта като цяло.

от ivan.yosifov (679 точки)