Сейчас 09:45:00 Четверг, 25 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: BinGO, vladyka  
Форум о Warcraft 3 » Общий раздел » Турниры | Конкурсы | Дуэли » [ЗАДАНИЯ] Programming Contest
[ЗАДАНИЯ] Programming Contest
SirNikolasДата: Четверг, 24 Января 2013, 00:00:11 | Сообщение # 1
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:

Задачи первого тура:



1. Системы счисления

Эта задача настолько простая, что авторы даже поленились составить для нее условия.
Вам нужно написать две функции. Первая - DecToN, принимает целое число и размер системы счисления, в которую это число нужно перевести (размер лежит в интервале от 2 до 35). Возвращает строку. Вторая - NToDec, принимает строку и размер исходной системы, возвращает число в десятичной. За первую функцию Вы получаете 15 баллов, за вторую - 10.



2. Идеальное покрытие

Ландер Лёня оборудует спальню графа, который очень любит шахматы. Разумеется, пол в этой спальне должен быть выложен черными и белыми тайлами. Лёня желает, чтобы все было идеально - а для этого плитки пола должны иметь определенное соотношение. Он хочет перебрать несколько вариантов и выбрать из них лучший.
Лёня сообщает вам два положительных числа M и N - размеры спальни по горизонтали и вертикали соответственно. Третье число равно 1, если верхняя левая плитка должна быть черной, или (-1), если она белая. От вас требуется вычесть из количества черных плиток количество белых. Таким образом, если больше окажется черных, результат будет положительным, а если белых - отрицательным (соответственно, если поровну, то ноль). Если Ваша функция поможет Лёне создать идеальную комнату, Вы получите 25 баллов.



3. Уберкод

васяиллидан11754 решил написать свою функцию. К сожалению, пока он писал, он забыл, что она делает и для чего вообще нужна. Вася помнит только, что функция должна каким-то образом обрабатывать глобальный массив, причем в этом массиве никогда не бывает чисел, меньших единицы. Помогите бедному Васе разобраться с этой проблемой: объясните задачи, которые выполняют его основная и вспомогательная фукнции (10 баллов) и, если возможно, напишите более оптимальное решение (15 баллов).




4. Морской бой

Адмирал Праудмур очень гордится своим флотом. Однажды он решил посчитать, сколько кораблей у него имеется. Однако флот его был столь огромен, что он быстро сбился со счета. Тогда он достал квадратную карту, изображающую боевое построение судов, и дал ее Вам.
Карта расчерчена на клетки и имеет размер NxN. Несколько подряд идущих клеток закрашены, если в этом месте стоит корабль (размеры кораблей варьируются от 1 до 4 клеток). Корабли не соприкасаются ни бортами, ни углами. Необходимо подсчитать количество кораблей на карте. Если Вы справитесь с возложенной на Вас задачей, Вы получите в награду 25 баллов.
Ваша функция должна принимать число N. Чтобы проверить, закрашена ли клетка, обращайтесь к функции Filled (function Filled takes integer x, integer y returns boolean). Клетки нумеруются с 0 до (N - 1).




Сообщение отредактировал SirNikolas - Четверг, 24 Января 2013, 00:00:55
 

SirNikolasДата: Суббота, 02 Февраля 2013, 00:00:09 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:

Задача второго тура:



Маленький заводной гоблин находится в лабиринте. Лабиринт представляет собой прямоугольник размера MxN, разделенный на клетки. Между некоторыми клетками стоят стенки.
Заводной гоблин может выполнять четыре команды, переходя на соседнюю клетку в соответствующем направлении. Если гоблин врезается в стену, он разрушается.

На вход Вам подаются размеры лабиринта по горизонтали и вертикали, координаты робота и строка с алгоритмом, который он должен выполнить (гарантируется, что робот находится внутри лабиринта, а строка корректна). Строка состоит из слов "up", "down", "left" и "right", разделяемых ровно одним пробелом. Требуется записать в переменные udg_X и udg_Y координаты робота после исполнения алгоритма. Если в процессе выполнения он убьется об стену, следует задать координаты клетки, в которой это произойдет.
Клетки нумеруются с нуля. Для получения информации о стенах вызывайте функцию Labyrinth (function Labyrinth takes integer x, integer y returns integer). Список значений, которые может возвращать эта функция:


За решение задачи в таком виде Вы получаете 20 баллов.

Дополнительные баллы:

  • За реализацию условного оператора - 10 баллов. Пишется слово if, затем направление и wall/empty. Следующее действие выполняется, только если условие истинно.

  • За реализацию цикла с условием - 10 баллов. Пишется слово while, затем условие, как в предыдущем пункте. Действие выполняется, пока условие истинно. Гарантируется, что никогда не будет происходить зацикливаний.

  • За реализацию цикла со счетчиком - 10 баллов. Пишется слово times, затем целое положительное число. Следующее действие выполняется указанное количество раз.

  • За реализацию блоков для предыдущих пунктов - 10 баллов за каждый. Действия для предыдущих пунктов могут оборачиваться в begin и end, и тогда они выполняются все вместе.

  • За реализацию вложенности условий и циклов - 20 баллов. Вы получаете 20 баллов, если сделали хотя бы один из первых трех пунктов, и при этом конструкции можно вкладывать друг в друга.



Сообщение отредактировал SirNikolas - Суббота, 02 Февраля 2013, 00:01:42
 

SirNikolasДата: Суббота, 02 Февраля 2013, 00:00:50 | Сообщение # 3
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:

Задачи третьего тура:



1. Города

Для одной настольной игры используется прямоугольное поле (карта) размером MxN. В некоторых клетках карты находятся города. Перед началом игры поле нужно разделить между двумя государствами так, чтобы у каждого было поровну клеток-городов. При этом сами государства могут не иметь равную площадь. Единственное условие: из каждого уголка каждого государства должен существовать путь в любую точку того же государства без пересечения границы.

На вход подаются целые положительные числа M и N. В строковом массиве udg_Field1 находится карта: пустые клетки представляются пробелами, клетки-города - буквой 'O'. Гарантируется, что на карте есть хотя бы два города и при этом всего их четное количество. Необходимо заполнить массив udg_Field2 строками, состоящими из единиц и двоек - какая клетка должна принадлежать какому государству.

2. Теоретическая магия

Нархиз учится в школе юных волшебников. Он интересуется теоретической магией.

Все заклинания делятся на классы по количеству частей, из которых они состоят. Так, заклинания первого порядка состоят из одного слова, второго порядка - из двух различных слов, третьего - из трех различных и так далее. Магические формулы по общепринятому соглашению записываются латинскими рунами, компоненты в сложном заклинании разделяются дефисом. У заклинаний есть так называемая магическая сила, которую принято обозначать целыми числами по шкале Акромониона. Для заклинаний первого порядка сила положительна, если длина слова четная, и отрицательна, если длина нечетная. Модуль силы равен длине волшебного слова. Например, компонент "Abra" обладает силой 4, а компонент "Cadabra" - силой (-7). Магическая сила заклинаний второго порядка равна произведению сил составляющих. Так, заклинание "Abra-Cadabra" (равно как и "Cadabra-Abra") имеет силу (-28).

Нархиз составил конспект по теоретической магии, в котором выписал все существующие заклинания первого порядка. Он хочет узнать, какое заклинание второго порядка будет обладать наибольшей магической силой, а какое - наименьшей.

На вход подается строка со списком компонентов, разделенных пробелом. Размер списка не превышает 4000 символов, список состоит хотя бы из двух слов, а заклинания в списке не повторяются. Требуется вернуть строку из двух заклинаний второго порядка, разделенных пробелом: первое должно иметь наибольшую силу, а второе - наименьшую. Ввиду того, что всегда существует несколько правильных ответов, можно выбрать любой из них.
Примечание: один и тот же компонент может входить в оба заклинания, но не в одно два раза.


 

Форум о Warcraft 3 » Общий раздел » Турниры | Конкурсы | Дуэли » [ЗАДАНИЯ] Programming Contest
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz