C#Practice "Telerik Academy Exam 1 @ 29 Dec 2012" -- problem 3 - Poker - къде бъркам?


0

Това е моето решение ... 

using System;
 
class Program
{
    static void Main(string[] args)
    {
        string[] hand = new string[5];
        hand[0] = Console.ReadLine();
        hand[1] = Console.ReadLine();
        hand[2] = Console.ReadLine();
        hand[3] = Console.ReadLine();
        hand[4] = Console.ReadLine();
        int counter = 0;
        int twos = 0;
        int threes = 0;
        string[] cards = new string[13] { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
        int[] countCards = new int[13];
        for (int i = 0; i < 13; i++)
        {
            countCards[i] = 0;
        }
        for (int i = 0; i < 13; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                if (cards[i] == hand[j])
                {
                    countCards[i]++;
                }
            }
        }
        for (int i = 0; i < 13; i++)
        {
 
            if (countCards[i] == 5)
            {
                Console.WriteLine("Impossible");
                break;
            }
            if (countCards[i] == 4)
            {
                Console.WriteLine("Four of a Kind");
                break;
            }
 
            if (countCards[i] == 1)
            {
                if (i < 8)
                {
                    if ((countCards[i + 1] == 1) && (countCards[i + 2] == 1) && (countCards[i + 3] == 1) && (countCards[i + 4] == 1))
                    {
                        Console.WriteLine("Straight");
                        break;
                    }
                    if ((countCards[12] == 1) && (countCards[0] == 1) && (countCards[1] == 1) && (countCards[2] == 1) && (countCards[2] == 1))
                    {
                        Console.WriteLine("Straight");
                        break;
                    }
                    else
                    {
                        counter++;
                    }
                     
                }
                    else
                {
                    counter++;
                
                }
            }
                 if (countCards[i] == 2) 
                {
                    twos++;
                }
                if (countCards[i] == 3)
                {
                    twos++;
                    threes++;
                } 
            
              
            }
            if (twos == 2 && threes != 1)
                Console.WriteLine("Two Pairs");
            if (threes == 1)
            {
                if (twos == 2)
                {
                    Console.WriteLine("Full House");
                }
                else if ( twos != 2)
                {
 
                    Console.WriteLine("Three of a Kind");
                }
            }
            if (twos == 1 && threes != 1)
                Console.WriteLine("One Pair");
            if (counter == 5)
                Console.WriteLine("Nothing");
        }
    }
 
 
 
-- и ми дава 96%... проверих всички възможни входни данни и ми изкарва вярно решение... нямам идея къде бъркам...
Някой може ли да помогне?



Отговори



1
Привет,
нещо ме съмнява проверката ти за straight. Мисля че така написано, не хващаш поредни десетка-асо, а в следващия if проверяваш countCards[2] == 1 два пъти.
Едит: махнах объркване забелязано от bankoff.
-- intelligence shared is intelligence squared

от staafl (5770 точки)


0
Според мен при К, A, 2, 3, 4 би трябвало да дава изход Nothing, а не Straight

от bankoff (3997 точки)

0
хмм, всъщност си прав :-) Забравих че асо-то може да е 1-ца.

от staafl (5770 точки)



0

Бъркаш в единия if

 

if ((countCards[12] == 1) && (countCards[0] == 1) && (countCards[1] == 1) && (countCards[2] == 1) && (countCards[2] == 1))

 

Трябва да е

if ((countCards[12] == 1) && (countCards[0] == 1) && (countCards[1] == 1) && (countCards[2] == 1) && (countCards[3] == 1))


от bankoff (3997 точки)


0
ООо благодаря... не съм го видяля... това го поправих.. интересното е, че и без него проверката на този вид стрейт вървеше безпроблемно.... Проблемът обаче остава... Все още получавам 96%! И си смята всеки вид стрейт не е там грешката....!

от Djufy (1103 точки)


0

За тази задача има ли тестовете качени? Защото и аз съм на 92 и не знам къде ми е грешката. SOURCE


от IceElementor (398 точки)


0
Всички изпитни варианти ги има в архива най-долу тук: http://telerikacademy.com/Courses/Courses/Details/1 . В случая, това е "2012 - изпит вариант 3"

от Flystar (1171 точки)

0
Мерси, малка грешка имах в Full housa.

от IceElementor (398 точки)