Соревнование по Delphi
От: delphichallenge  
Дата: 06.05.03 10:44
Оценка: 1 (1)
Проводится небольшое соревнование по Delphi. Подробности здесь

Задание №1
Макс. балл: 10

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

Результат оформить в виде процедуры:
procedure MinAndMax(const Data: array of Integer; var Min, Max: Integer);


Пример: Для массива [1, 6, 6, 1, 6, 7, 10, 0, 7] правильным результатом будет 1 и 7




Задание №2
Макс. балл: 15

Найти среднее арифметическое всех чисел в массиве, которые встречаются в нем от 3 до 5 раз.

Результат оформить в виде функции
function Middle(const Data: array of Integer): Extended;



Пример: Для массива [1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4] правильным ответом будет 1.625 = (1+1+1+2+2+2+2+2)/8.




Задание №3
Макс. балл: 15

Найти все комбинаций целых чисел в промежутке от 1 до N, которые удовлетворяют условию a2+b2=c2. Число c может состоять только из чисел, которые содержатся в a или b. Результат оформить в виде функции:
type TSolutionCallback = procedure(A, B, C: Integer); 
procedure Find(N: Integer; SolutionCallback: TSolutionCallback);


Пример: 152+202=252




Задание №4
Макс. балл: 10

Имеется последовательность цифр, образованная последовательно записанными натуральными числами 123456789101112131415161718192021... Необходимо получить N-ю цифру из заданной последовательности (N>=1)

Суть задания состоит в том, чтобы самому эффективно получать заданную последовательность чисел (а не пользоваться заданной).

Результат оформить в виде функции:
function Func(N: Integer): Integer;



Пример:
Func(3) = 3
Func(11) = 0
Func(17) = 3




Задание №5
Макс. балл: 15

Пусть задано некоторое слово. Необходимо вывести набор всевозможных различных слов (возможно бессмысленных) полученных всевозможными перестановками букв исходного слова.

Результат оформить в виде процедуры:
type TSolutionCallback = procedure(const Value: string);
procedure Words(const Word: string; SolutionCallback: TSolutionCallback);


Пример: для слова "ФАРА" в набор входят "АРФА", "ФААР" и т. д.




Задание №6
Макс. балл: 15

Число, состоящее из n цифр, называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому этому числу. Необходимо найти все n- значные числа Армстронга (1 < n < 10).

Результат оформить в виде процедуры:
type TSolutionCallback = procedure(Value: Integer);
procedure Armstrong(const N: Integer; SolutionCallback: TSolutionCallback);


Пример: 153 является числом Армстронга, (153 = 13 + 53 + 33)




Задание №7
Макс. балл: 25

Дана шахматная доска размером M x N. Необходимо ходом коня побывать на каждом поле (i,j) доски (i=1..M, j=1..N) и вернуться в исходное поле. Для определенности считаем, что обход доски начинается с клетки (1,1).

Результат оформить в виде процедуры:
type TSolutionCallback = procedure(I,J: Integer);
procedure Knignt1(const M, N: Integer; SolutionCallback: TSolutionCallback);


Замечание: вызов функции SolutionCallback для поля (1,1) обязателен. Если найдено несколько маршрутов, то просто по окончании вызовов SolutionCallback для первого маршрута, просто вызвать SolutionCallback(1,1) и начать выдавать клетки второго маршрута, и т. д.




Задание №8
Макс. балл: 25
Дано: N сосудов, каждый из которых имеет вместимость V[i] литров и заполнен на U[i] литров (U[i] <= V[i]). Необходимо установить, можно ли "отмерить" заданный объем V0, и если да, то за какое наименьшее число ходов. Объем V0 можно отмерить, если в результате операций
1. Переливания воды из сосуда в сосуд.
2. Выливания воды из сосуда
в одном из сосудов оказалось ровно V0 литров воды.

Результат оформить в виде функции:
function MoveCount(N: Integer; V0: Extended; const V, U: array of Extended): Integer;


Примечание: если объем V0 отмерить нельзя, функция должна вернуть -1.

Пример: пусть N=3, V[0] = 3, V[1] = 5, V[2] = 10, U[0] = 0, U[1] = 0, U[2] = 10. Тогда
1. Переливаем воду из 2 в 1, U[0] = 0, U[1] = 5, U[2] = 5
2. Переливаем воду из 1 в 0, U[0] = 3, U[1] = 2, U[2] = 5
3. Выливаем воду из 0, U[0] = 0, U[1] = 2, U[2] = 5
4. Переливаем воду из 1 в 0, U[0] = 2, U[1] = 0, U[2] = 5
5. Переливаем воду из 3 в 0, U[0] = 3, U[1] = 0, U[2] = 4
Таким образом, объем V0=4 можно отмерить за пять ходов.




Задание №9
Макс. балл: 15

Нахождение последовательностей в списке случайных чисел, числа могут повторятся. Количество чисел так же случайное.
На входе: строка с числами, разделенными запятой. Числа [0..MaxInt].
Ожидается: строка со списоком последовательностей упорядоченый по возрастанию + список одиночных чисел также упорядоченых по возрастанию.

Результат оформить в виде функции:
function GetConsecutiveString(const Data: array of Integer): string;


Пример:
Вход: '13,9,2,3,4,14,15,1,5,17,12,20'
Результат: '(1..5),(12..15),(9,17,20)'
Re: Задание №6 - придирка
От: Кодт Россия  
Дата: 06.05.03 11:56
Оценка:
Здравствуйте, delphichallenge, Вы писали:

D>Задание №6

D>Макс. балл: 15

D> Число, состоящее из n цифр, называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому этому числу. Необходимо найти все n- значные числа Армстронга (1 < n < 10).


D>Результат оформить в виде процедуры:

D>
D>type TSolutionCallback = procedure(Value: Integer);
D>procedure Armstrong(const N: Integer; SolutionCallback: TSolutionCallback);
D>


D>Пример: 153 является числом Армстронга, (153 = 13 + 53 + 33)

Откуда взялись 13,53,33 ???

N(153) = 3.
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153.
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
Re[2]: Задание №6 - придирка
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 06.05.03 12:22
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, delphichallenge, Вы писали:


D>Задание №6

D>Макс. балл: 15

D> Число, состоящее из n цифр, называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому этому числу. Необходимо найти все n- значные числа Армстронга (1 < n < 10).


D>Результат оформить в виде процедуры:

D>
D>type TSolutionCallback = procedure(Value: Integer);
D>procedure Armstrong(const N: Integer; SolutionCallback: TSolutionCallback);
D>


D>Пример: 153 является числом Армстронга, (153 = 13 + 53 + 33)

К>Откуда взялись 13,53,33 ???

К>N(153) = 3.

К>1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153.

Да, форматирование потералосб при копировании... аналогично в задании №3 подразумевается a^2 + b^2 = c^2. Тут же правильнее "Число c может состоять только из цифр, которые содержатся в a или b. Результат оформить в виде функции:"...

Да, одна из целей проведения соревнования состояла в том, чтобы приручать молодых программистов к самостоятельному мышлению, а не к поиску готовых решений в интернете. Поэтому хотелось бы подождать пару недель с обсуждением решений... Впрочем не думаю, чтобы это так уж сильно навредило...
Re: Соревнование по Delphi
От: delphichallenge  
Дата: 06.05.03 12:43
Оценка:
Да и еще пожалуйста пишите свои решения нам на почту чтобы не открывать их для остальных участников.. Если можно, прошу модератора удалить сообщение. Пусть остальные думают сами!
Re[2]: Соревнование по Delphi
От: Кодт Россия  
Дата: 06.05.03 12:56
Оценка:
Здравствуйте, delphichallenge, Вы писали:

D>Да и еще пожалуйста пишите свои решения нам на почту чтобы не открывать их для остальных участников.. Если можно, прошу модератора удалить сообщение. Пусть остальные думают сами!


Окей, свое сообщение я удалил.

Но слать ответы на почту —
Тогда от вас — публикация лучших решений (и возможно, разбор полетов) после 18 мая.
Годидзе?
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
Re: Соревнование по Delphi
От: Дмитро  
Дата: 06.05.03 14:36
Оценка:
Здравствуйте, delphichallenge, Вы писали:

D>Проводится небольшое соревнование по Delphi. Подробности здесь


Я так понимаю, что решения принимаются только на Pascal'е? Как насчет С++?

--
Дмитрий
--
Дмитрий
Re[2]: Соревнование по Delphi
От: Кодт Россия  
Дата: 06.05.03 14:53
Оценка:
Здравствуйте, Дмитро, Вы писали:

D>>Проводится небольшое соревнование по Delphi. Подробности здесь


Д>Я так понимаю, что решения принимаются только на Pascal'е? Как насчет С++?


Для меня тоже С++ роднее чем паскаль.
Тем более, что важна алгоритмическая, а не языковая часть.
Я могу хоть в псевдокоде все изобразить
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
Re[3]: Соревнование по Delphi
От: Les Россия  
Дата: 06.05.03 15:21
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Дмитро, Вы писали:


D>>Проводится небольшое соревнование по Delphi. Подробности здесь


Д>Я так понимаю, что решения принимаются только на Pascal'е? Как насчет С++?


К>Для меня тоже С++ роднее чем паскаль.

К>Тем более, что важна алгоритмическая, а не языковая часть.
К>Я могу хоть в псевдокоде все изобразить

Хотя явно этого в правилах нет , видимо подразумевается именно pascal:

"... Если задание алгоритмического характера, то должны быть указаны вход и выход алгоритма, и вид представления: Procedure... или Function... ..."

А то и вообще именно Delphi. (Обожаю консольные приложения в Builder-е делать)
Re[3]: Соревнование по Delphi
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 06.05.03 15:38
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, delphichallenge, Вы писали:


D>Да и еще пожалуйста пишите свои решения нам на почту чтобы не открывать их для остальных участников.. Если можно, прошу модератора удалить сообщение. Пусть остальные думают сами!


К>Окей, свое сообщение я удалил.


К>Но слать ответы на почту —

К>Тогда от вас — публикация лучших решений (и возможно, разбор полетов) после 18 мая.
К>Годидзе?

Годится...
Re[2]: Соревнование по Delphi
От: delphichallenge  
Дата: 06.05.03 17:36
Оценка:
Здравствуйте, Дмитро, Вы писали:

Д>Здравствуйте, delphichallenge, Вы писали:


D>Проводится небольшое соревнование по Delphi. Подробности здесь


Д>Я так понимаю, что решения принимаются только на Pascal'е? Как насчет С++?


В принципе принимаются задания и на C++, но рассматриваться сначала будут решения на Delphi.

Д>--

Д>Дмитрий
Re: Соревнование по Delphi
От: Кодт Россия  
Дата: 07.05.03 06:05
Оценка:
Здравствуйте, delphichallenge, Вы писали:

D>Проводится небольшое соревнование по Delphi. Подробности здесь


Мы в свою очередь напоминаем, что проводится большое соревнование по Delphi
<b>Конкурс на лучшую статью по продуктам и технологиям Borland</b>
Автор(ы):
на сайте RSDN.
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
Re[2]: Соревнование по Delphi
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 07.05.03 18:09
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, delphichallenge, Вы писали:


D>Проводится небольшое соревнование по Delphi. Подробности здесь


К>Мы в свою очередь напоминаем, что проводится большое соревнование по Delphi

К><b>Конкурс на лучшую статью по продуктам и технологиям Borland</b>
Автор(ы):
на сайте RSDN.


Да, я знаю. Просто я стараюсь ко всему подходить основательно. Скажем менеджер памяти изучался не один месяц. Плюс перевод Memory SDK из MSDN --- это все части задумки написания статьи "Кое-что про память".

Чтобы выиграть этот конкурс, надо написать нечто вроде "Проведение рефакторинга в Delphi" или "Приемы объектного программирования в Delphi". С одной стороны можно просто пересказать соответствующие книги (кстати, книга Фаулера --- неплохое введение в Java ). А можно и серьезнее подойти к проблеме (надеюсь когда-то выделить время для этого время)...
Re: Соревнование по Delphi
От: nikholas Россия  
Дата: 16.05.03 17:14
Оценка:
Здравствуйте, delphichallenge, Вы писали:

D>Проводится небольшое соревнование по Delphi.



А что здесь случилось? Куда ответы то слать?
Re[2]: Соревнование по Delphi
От: Дмитро  
Дата: 16.05.03 23:49
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Здравствуйте, delphichallenge, Вы писали:


D>>Проводится небольшое соревнование по Delphi.



N>А что здесь случилось? Куда ответы то слать?


http://delphichallenge.ru/
Полагаю, сюда сup@delphichallenge.ru
--
Дмитрий
Re[2]: Соревнование по Delphi
От: Кодт Россия  
Дата: 19.05.03 06:39
Оценка:
Здравствуйте, nikholas, Вы писали:

N>А что здесь случилось? Куда ответы то слать?


Раньше действовал адрес ...
(=^.^=) Neko ... << RSDN@Home 1.0 beta 7a >>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.