Skip to Content

Олімпіада від Елекс

Вітаємо, шановні програмісти.

Вже вдруге, для студентів-програмістів, проводиться Олімпіада від компанії Елекс.

Олімпіада триватиме з 12 по 26 грудня. Нагородження відбудеться з початку другого семестру.

Нагадаємо, що минулорічний переможець олімпіади Богдан Пашковський пройшов стажування і успішно працює у компанії Елекс.

Переможці матимуть можливості:

  • Пройти стажування на «реальному» проекті
  • Працевлаштування на «ЕЛЕКСІ»
  • Отримати практичний досвід
  • Познайомитися з колективом висококласних спеціалістів
  • Стати частиною успішої команди професіоналів-однодумців

А також отримати призи: «пріколи» та професійну літературу.

Для розв'язку можна використовувати будь-яку мову програмування.

Оцінюється

  • правильність програми, для цього перевіряються результати виконання програми на тестових даних
  • алгоритм вирішення
  • стиль написання, тобто зрозумілі імена ідентифікаторів, структурованість, розбиття на функції тощо

Оцінювання:

  • кожне завдання оцінюється у 20 балів, які нараховуються за правильний розв'язок
  • бали знімаються, якщо розв'язок не враховує окремих випадків вхідних даних
  • бали знімаються, якщо код написаний без дотримання хорошого стилю, незрозуміло читається
  • не готові повністю розв'язки також оцінюються

Poker hands

В покері на руках ви маєте 5 карт. Ці 5 карт можуть складати одну із покерних комбінацій. Ось ці комбінації (від найстаршої до наймолодшої):
- Роял флеш (royal flush) – A, K, Q, J, 10 одної масті
- Стрейт флеш (straight flush) – п’ять карт одної масті в послідовності, наприклад , 10, 9, 8, 7, 6 пікові.
Туз може враховуватись і як найменша карта (A, 2, 3, 4, 5 червові – стрейт флеш), і як найстарша (10, J, Q, K, A бубнові – стрейт флеш).
Але 4, 3, 2, A, K пікові – не стрейт флеш, а просто флеш.
- Каре (four of a kind) – чотири карти одного достоїнства, наприклад чотири короля.
- Фул хауз (full house) – три карти одного достоїнства плюс дві карти іншого, наприклад 10, 10, 5, 5, 5.
- Флеш (flush) – п’ять карт одної масті, наприклад 3, 4, 6, К, А пікові.
- Стрейт (straight) – п’ять карт по порядку будь-яких мастей, наприклад 5, 4, 3, 2, А.
- Трійка (three of a kind) – три карти одного достоїнства, наприклад 3, 4, 4, 2, 4.
- Дві пари (two pairs) – дві пари карт, наприклад 8, 8, 4, 4, 2.
- Одна пара (pair) – дві карти одного достоїнства, наприклад 5, A, A, J, 10?.
- Старша карта (high card) – жодної із вищеописаних комбінацій.

Серед двох комбінацій з однаковою назвою сильніша визначається за старшою картою.

Більш детальний опис - на http://en.wikipedia.org/wiki/List_of_poker_hands

Напишіть програму для визначення сильнішої комбінації.

Вхід
Файл input.txt. В рядку записані 5 карт першого гравця та одразу за ними 5 карт другого гравця. Разом в рядку 10 карт. Всі карти розділені пробілом. Кожна карта представлена двома символами. Перший символ – достоїнство карти (A,K,Q,J,T,9,8,7,6,5,4,3 або 2), другий символ – масть (S,H,D,C – spades, hearts, diamonds and clubs – піки, черви, бубни, хрести).

Рядків у файлі не більше мільйона.

Вихід
Файл output.txt. Для кожного вхідного рядка у результуючому рядку зазначено, в якого гравця комбінація сильніша (first або second), чи нічия (equal).

Приклад
Вхід input.txt
KH KD 2S KC 2C 3S 5D AS 2C 4D
3S 5D AS 2C 4D 3S 5D AS 4D 2C
3S 5D AS 4D 2C AH KH 5H TH JH

Вихід output.txt
first
equal
second

Binary search

Реалізуйте бінарний пошук елемента у відсортованому масиві цілих чисел. Програма повинна повертати індекс знайденого елемента в масиві. Якщо масив містить декілька шуканих однакових елементів, програма повинна повертати індекс останнього знайденого елемента.

Використовувати бібліотечні функції пошуку не дозволяється.

Вхід
Файл input.txt. На початку рядка задано елемент, який потрібно знайти в масиві. Далі через пробіл за елементом задано відсортований по зростанню масив 32-bit integer чисел. Всі числа розділені пробілом. Розмір масива 0 <= size < 1 000 000

Рядків у файлі не більше мільйона.

Вихід

Файл output.txt. Для кожного вхідного рядка у результуючому рядку зазначено індекс (0-based) останнього знайденого елемента в масиві, або -1, якщо такого елемента у масиві немає.

Приклад
Вхід input.txt
42 1 2 4 33 42 44 50
1 1 2 4 33 42 44 50
4 1 2 4 4 33 42 50
42
43 1 2 4 33 42 44 50

Вихід output.txt
4
0
3
-1
-1

Wildcard matching

Напишіть програму, яка визначає, чи відповідає рядок заданому шаблону. Використовуйте DOS-like шаблон, який містить спеціальні символи:
* -- позначає нуль або більше будь-яких символів
? -- позначає один будь-який символ

Детальніший опис -- на http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs...

Використовувати бібліотечні функції та бібліотечні регулярні вирази не дозволяється.

Вхід
Файл input.txt. Шаблон та рядок задаються в двох послідовних рядках файла. Послідовні пари шаблон-рядок розділені між собою порожнім рядком.
Рядків у файлі не більше мільйона.

Вихід
Файл output.txt. Для кожної вхідної пари шаблон-рядок у результуючому рядку вказано true, якщо вхідний рядок відповідає вхідному шаблону, інакше false .

Приклад
Вхід input.txt
gloss*
glossary.txt
gloss*.doc
glossary.doc
gloss?.doc
glossy.doc
gloss?.doc
glossary.doc

Вихід output.txt
true
true
true
false

Завдання можна відіслати за допомогою форми.
Після 26 грудня 2011 завдання на перевірку прийматись не будуть.

Коментарі

Зображення користувача Гість.

Неточності

Я, звісно, не майстер покеру і взагалі грати в нього не вмію, але в задачі Poker hands я знайшов смислову помилку.
- Роял флеш (royal flush) – A, K, Q, J, 10 одної масті
- Стрейт флеш (straight flush) – п’ять карт одної масті в послідовності, наприклад, 10, 9, 8, 7, 6 пікові.
Туз може враховуватись і як найменша карта (A, 2, 3, 4, 5 червові – стрейт флеш), і як найстарша (10, J, Q, K, A бубнові – стрейт флеш).
Якщо туз в стрейт-флеші вважати найбільшою картою, то дана послідовність буде вже роял-флешем, а не стрейт-флешем. Тобто: 10, J, Q, K, A бубнові – роял флеш.

Зображення користувача Pashkovskyi Bohdan.

ви праві в цьому випадку

ви праві в цьому випадку