Администраторы группы

  • Аватар

Олимпиада по информатике. Готовимся побеждать!

Открытая группа активность: 1 дн., 3 ч. назад

Группа для тех, кто намеревается побеждать на районных и региональных олимпиадах по информатике.
Здесь можно будет найти олимпиадные задания, задачи повышенной сложности, обсудить оптимальные алгоритмы решений
Памятка для участников олимпиады

Сайт Информатикс – регистрирууемся, решаем, продвигаемся в рейтинге

Программирование на C# (записей: 26)

← Форум группы   Все форумы
  • Аватар root - 1 мес., 4 нед. назад:

    Забей на покер (азартные игры — зло!)
    Убери лишние карты и на стандартной колоде протестируй алгоритм на предмет экспериментального определения вероятности выпадания расклада «Большой шлем».

    Параллельная задача по комбинаторике — получить аналитическое решение той же задачи.

  • Аватар CHEWBACCA - 1 мес., 4 нед. назад:

    понял бы-попытался бы, изложите попонятнее, авось и попытаюсь

  • Аватар root - 1 мес., 3 нед. назад:

    Полная колода — 52 листа (4 масти по 13 листов).
    Раздаётся на четверых.

    «Большой шлем» — расклад, в котором на руке у игрока все карты одной масти.

    Перебор — это в первую очередь тест производительности.
    Решаться такая задача может долго, даже на оптимизированной базе.
    Поэтому параллельно стоит присмотреться к задачам контроля решения.
    И условиям останова (простейший вариант — завершение после проверки например сотни вариантов, полагаю, уже тут будет на что посмотреть в плане времени выполнения).

  • Аватар CHEWBACCA - 2 нед., 4 дн. назад:

    решил задачку олимпиадную, но там у них на сайте какая то лажа и я не могу отправить код свой, чтобы посмотреть баллы
    http://acmp.ru/index.asp?main=task&id_task=564
    В общем, вот код:

    using System;
    namespace task1
    {
    	class MainClass
    	{
    		static int n,fence1,fence2,fence3;
    		static double Smax,p;
    		static int[] stock = new int[100];
    
    		public static void Main (string[] args)
    		{
    			n = Convert.ToInt32 (Console.ReadLine ());
    
    			for (int i = 0; i < n; i++) {
    				stock [i] = Convert.ToInt32 (Console.ReadLine ());
    			}
    			for (int i = 0; i < n - 2; i++) {
    				for (int j = i + 1; j < n - 1; j++) {
    					for (int z = j + 1; z < n; z++) {
    						fence1 = stock [i];
    						fence2 = stock [j];
    						fence3 = stock [z];
    						SFind (fence1, fence2, fence3);
    						}
    					}
    				}
    			}
    		public static void SFind (int f1, int f2,int f3) {
    			if ((f1 + f2) < f3 || (f1 + f3) < f2 || (f2 + f3) < f1) {
    
    				Console.WriteLine (-1);
    				System.Environment.Exit (1);
    			}
    			else {
    				p = Convert.ToDouble ((f1 + f2 + f3)) / 2;
    				Console.WriteLine (p);
    				Smax = p * (p - f1) * (p - f2) * (p - f3);
    				Console.WriteLine (Math.Sqrt (Smax));
    			}
    		}
    	}
    }
    
  • Аватар root - 2 нед., 4 дн. назад:

    Я давно, практически изначально предупреждал, что вьеб-интерфейс — совершенно _лишний_ уровень абстракции…

  • Аватар CHEWBACCA - 2 нед., 4 дн. назад:

    Что ж мне по-вашему делать, коли не задачки решать?

  • Аватар root - 2 нед., 3 дн. назад:

    Во-первых, «решение задачек» — не самоцель¸ а _средство_.
    Во-вторых: в обсуждаемом случае ты не столько «решаешь задачу», сколько тестируешь прокладку web-интерфейса, в реальном режиме ненужную, но создающую удобства профессионалам.
    Оно тебе интересно? Если да, то можно и нужно запилить собственный сервис и поиграться уже с ним.

  • Аватар CHEWBACCA - 2 нед., 3 дн. назад:

    Зачем же мне собственный сервис?

  • Аватар root - 2 нед., 3 дн. назад:

    Для понимания сути… особенностей реализации, благодаря которой веб-интерфейс умирает на проверке решения задачи.

  • Аватар CHEWBACCA - 6 дн., 4 ч. назад:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Collections;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ochko
    {
        class Program
        {
            static Random rnd = new Random();
            static int answ1, answ2;
            static int suit;
            static int value;
            static bool repeatsOnDeck = false;
            static string DeckCard;
            static ArrayList Player1 = new ArrayList();
            static ArrayList Player2 = new ArrayList();
            static ArrayList Suit = new ArrayList();
            static ArrayList Value = new ArrayList();
            static ArrayList deck = new ArrayList();
            static string[] Pl1 = new string[5];
            static string[] Pl2 = new string[5];
            static void Main(string[] args)
            {
                Preflop();
                for (int i = 0; i < deck.Count; i++)
                {
                    Console.WriteLine(i);
                }
    
                Console.ReadKey();
            }
    
            static void Deck()
            {
                Suit.AddRange(new String[] { "пики", "черви", "буби", "крести" });
                Value.AddRange(new String[] { "шесть ", "семь ", "восемь ", "девять ", "десять ", "валет ", "дама ", "король ", "туз " });
                value = rnd.Next(0, 9);
                suit = rnd.Next(0, 4);
                deck.Add(Value[value] + "" + Suit[suit]);
                for (int i = 1; i < 36; i++)
                {
                    value = rnd.Next(0, 9);
                    suit = rnd.Next(0, 4);
                    DeckCard = Value[value] + "" + Suit[suit];
                    for (int j = 0; j < i; j++)
                    {
                        while (DeckCard == Convert.ToString(deck[j]))
                        {
                            j = 0;
                            value = rnd.Next(0, 9);
                            suit = rnd.Next(0, 4);
                            DeckCard = Value[value] + "" + Suit[suit];
                        }
                    }
                    deck.Add(DeckCard);
                }
            }
    
            static void Players()
            {
                Player1.Add(deck[rnd.Next(0, 36)]);
                Player2.Add(deck[rnd.Next(0, 36)]);
    
            }
    
            static void Preflop()
            {
                Deck();
                do
                {
                    Console.WriteLine("Ставка 1-ого игрока: ");
                    answ1 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Ставка 2-ого игрока: ");
                    answ2 = Convert.ToInt32(Console.ReadLine());
                } while (answ1 != (answ2 * 2));
                Player1.Add(deck[rnd.Next(0, deck.Count)]);
                deck.Remove(Player1[0]);
                Player1.Add(deck[rnd.Next(0, deck.Count)]);
                deck.Remove(Player1[1]);
                Console.WriteLine("Карты 1-ого игрока: ");
                for (int i = 0; i < Player1.Count; i++)
                {
                    Console.WriteLine(Player1[i]);
                }
    
            }
        }
    }
    
  • Аватар CHEWBACCA - 5 дн., 9 ч. назад:

    Первый этап игры «Покер»

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Collections;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ochko
    {
    	class Program
    	{
    		static Random rnd = new Random();
    		static int answ1, answ2,blind1,blind2,blind;
    		static int balance_2 = 1000;
    		static int balance_1 = 1000;
    		static int suit;
    		static int value;
    		static string DeckCard;
    		static ArrayList Player1 = new ArrayList();
    		static ArrayList Player2 = new ArrayList();
    		static ArrayList Table = new ArrayList();
    		static ArrayList Suit = new ArrayList();
    		static ArrayList Value = new ArrayList();
    		static ArrayList deck = new ArrayList();
    		static string[] Pl1 = new string[5];
    		static string[] Pl2 = new string[5];
    		static void Main(string[] args)
    		{
    			Preflop();
    
    			Console.ReadKey();
    		}
    
    		static void Deck()
    		{
    			Suit.AddRange(new String[] { "пики", "черви", "буби", "крести" });
    			Value.AddRange(new String[] { "шесть ", "семь ", "восемь ", "девять ", "десять ", "валет ", "дама ", "король ", "туз " });
    			value = rnd.Next(0, 9);
    			suit = rnd.Next(0, 4);
    			deck.Add(Value[value] + "" + Suit[suit]);
    			for (int i = 1; i < 36; i++)
    			{
    				value = rnd.Next(0, 9);
    				suit = rnd.Next(0, 4);
    				DeckCard = Value[value] + "" + Suit[suit];
    				for (int j = 0; j < i; j++)
    				{
    					while (DeckCard == Convert.ToString(deck[j]))
    					{
    						j = 0;
    						value = rnd.Next(0, 9);
    						suit = rnd.Next(0, 4);
    						DeckCard = Value[value] + "" + Suit[suit];
    					}
    				}
    				deck.Add(DeckCard);
    			}
    		}
    		static void Preflop()
    		{
    			Deck();
    			do {
    				Console.WriteLine ("Ставка 1-ого игрока: ");
    				blind1 = Convert.ToInt32 (Console.ReadLine ());
    				balance_1 -=blind1;
    				Console.WriteLine ("Ставка 2-ого игрока: ");
    				blind2 = Convert.ToInt32 (Console.ReadLine ());
    				balance_2 -=blind2;
    			} while (blind1 != (blind2 * 2) & (blind2 != (blind1 * 2)));
    			blind = blind1 + blind2;
    			for (int i = 0; i < 2; i++) {
    				Player1.Add (deck [rnd.Next (0, deck.Count)]);
    				deck.Remove (Player1 [i]);
    				Player2.Add (deck [rnd.Next (0, deck.Count)]);
    				deck.Remove (Player2 [i]);
    			}
    			Console.WriteLine("Карты 1-ого игрока: ");
    			for (int i = 0; i < Player1.Count; i++)
    			{
    				Console.WriteLine(Player1[i]);
    			}
    			Console.WriteLine ("Игрок №1, ваши действия?");
    			Console.WriteLine ("1 - Сброс карт и выход из игры");
    			Console.WriteLine ("2 - Поддержка ставки");
    			Console.WriteLine ("3 - Увеличение ставки");
    			do {
    				answ1 = Convert.ToInt32(Console.ReadLine());
    				if (answ1 != 1 & answ1 != 2 & answ1 != 3)
    					Console.WriteLine("Введите ответ корректно");
    			} while (answ1 != 1 & answ1 != 2 & answ1 != 3);
    			if (answ1 == 1) {
    				Console.WriteLine ("2-ой игрок - победитель");
    				balance_2 += blind;
    				Console.ReadKey ();
    				Environment.Exit (1);
    			} else if (answ1 == 2) {
    				if (blind1 < blind2) {
    					blind1 = blind2 - blind1;
    					blind += blind1;
    					balance_1 -= blind1;
    				}
    			} else {
    				Console.WriteLine ("На сколько повышаем?");
    				blind1 = Convert.ToInt32(Console.ReadLine());
    				blind += blind1;
    				balance_1 -= blind1;
    			}
    			Console.WriteLine("Карты 2-го игрока: ");
    			for (int i = 0; i < Player2.Count; i++)
    			{
    				Console.WriteLine(Player2[i]);
    			}
    			Console.WriteLine ("Игрок №2, ваши действия?");
    			Console.WriteLine ("1 - Сброс карт и выход из игры");
    			Console.WriteLine ("2 - Поддержка ставки");
    			Console.WriteLine ("3 - Увеличение ставки");
    			do {
    				answ2 = Convert.ToInt32(Console.ReadLine());
    				if (answ2 != 1 & answ2 != 2 & answ2 != 3)
    					Console.WriteLine("Введите ответ корректно");
    			} while (answ2 != 2 & answ2 != 2 & answ2 != 3);
    			if (answ2 == 1) {
    				Console.WriteLine ("1-ый игрок - победитель");
    				balance_1 += blind;
    				Console.ReadKey ();
    				Environment.Exit (1);
    			} else if (answ2 == 2) {
    				if (blind2 < blind1) {
    					blind2 = blind1 - blind2;
    					blind += blind2;
    					balance_2 -= blind2;
    				}
    			} else {
    				Console.WriteLine ("На сколько повышаем?");
    				blind2 = Convert.ToInt32(Console.ReadLine());
    				blind += blind2;
    				balance_2 -= blind2;
    			}
    		}
    
    	}
    }