Смекни!
smekni.com

Составление расписания встреч участников соревнований (стр. 3 из 3)

Рисунок 4 - Блок-схема решения задачи для функции UNION: LST- список, в котором просматриваются вхождения числа NUM, TEMP_NUM- рабочий список

Рисунок 5 - Блок-схема решения задачи для функции COPY_HALF_LIST, LST_RES- список-результат, в который копируется первая половина списка LST, I- рабочая переменная

Рисунок 6 - Блок-схема решения задачи для функции COPY_LAST_HALF_LIST, LST_RES- список-результат, в который копируется вторая половина списка LST, I- рабочая переменная

4. Программная реализация решения задачи

; составляем пары

(defun union (lst num)

(cond

( (null num) nil)

( (atom num)

(cond

( (null lst) nil)

( (atom lst) (if (not (eq lst num)) (list lst ': num)))

(t (cons (union (car lst) num) (union (cdr lst) num)))

)

)

(t (append (union lst (car num))

(progn

(setq temp_num (car num))

(setq lst (remove temp_num lst))

(unionlst (cdrnum))

)

)

)

)

)

; функция устанавливает счет матча

(defun set_res (lst)

(list (list (random 7) ': (random 7)) lst)

)

; копируем первую половину списка

(defuncopy_half_list (lst)

(declare (special lst_res))

(setq lst_res nil)

(do

( (i 0))

( (>= i (/ (length lst) 2)) lst_res)

(setq lst_res (insert i lst_res (nth i lst)))

(setqi (+ i 1))

)

)

; копируем вторую половину списка

(defun copy_last_half_list (lst)

(declare (special lst_res))

(setq lst_res nil)

(do

( (i (/ (length lst) 2)) (iter 0))

( (>= i (length lst)) lst_res)

(setq lst_res (insert iter lst_res (nth i lst)))

(setq i (+ i 1))

(setq iter (+ iter 1))

)

)

; вставка элемента at в pos позицию списка lst

(defun insert (pos lst at)

(cond

( (null lst) (cons at nil))

( (eql pos 0) (cons at lst))

(t (cons (car lst) (insert ( - pos 1) (cdr lst) at)))

)

)

; функция выбирает победителя

(defunget_winner (lst)

(nth (random (length lst)) lst)

)

; функция иммитирует игру по олимпийской системе

(defun play_off (l output)

(cond

; если осталось 2 участника выбираем победителя и выходим из функции

( (= (length l) 2)

(progn

(print 'pobeditel output)

(print (get_winner l) output)

)

)

( (/= (lengthl) 2)

(progn

; разбиваем команды на 2 группы

(setq group1 (copy_half_list l))

(print 'gruppa1 output)

(print group1 output)

(setq group2 (copy_last_half_list l))

(print 'gruppa2 output)

(print group2 output)

; формируем встречи комманд

(setq commands (mapcar 'list group1 group2))

(print 'igroki output)

(print commands output)

; выбираем победителя

(setq l (mapcar 'get_winner commands))

(print 'pobediteli output)

(print l output)

(print '______________________________________________ output)

; рекурсивно вызываем функцию play_off с новым

; списком комманд участников

(play_offloutput)

)

)

)

)

; открываем файл и получаем команды

(setqinput_stream (open "d: \commands. txt": direction: input))

; вид системы

; 1 - круговая

; 2 - playoff

(setq system (read input_stream))

(setq commands (read input_stream))

(close input_stream)

(setq output_stream (open " d: \play. txt": direction: output))

(if (= system 1)

; круговая система

(print (setq play (mapcar 'set_res (remove nil (union commands commands)))) output_stream)

;иммитируем игру по олимпийской системе для получееных комманд

(play_off commands output_stream)

)

(terpri output_stream)

(close output_stream)

5. Пример выполнения программы

Пример 1.

Рисунок 7 - Команды, играющие по олимпийской системе

Рисунок 8 - Игра команд по олимпийской системе

Рисунок 9 - Команды, играющие по круговой системе

Рисунок 10 - Игра команд по круговой системе

Пример 2.

Рисунок 11 - Команды, играющие по олимпийской системе

Рисунок 12 - Игра команд по олимпийской системе

Рисунок 13 - Команды, играющие по олимпийской системе

Рисунок 14 - Игра команд по олимпийской системе

Заключение

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

Итогом работы можно считать созданную функциональную модель составления расписания встреч участников соревнований. Данная модель применима к круговой и олимпийской системе проведения спортивных соревнований. Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.

Список использованных источникови литературы

1. Бронштейн И.Н. Справочник по математике для инженеров и учащихся втузов [Текст] / И.Н. Бронштейн, К.А. Семендяев. - М.: Наука, 2007. - 708 с.

2. Круговая система [Электронный ресурс] - Режим доступа: http://ru. wikipedia.org/wiki/Круговая_система

3. Платонов В.Н. Профессиональный спорт. [Текст] / В.Н. Платонов, С.И. Гуськова. - К.: Олимпийская литература, 2000. С.293.

4. Плей-офф [Электронный ресурс] - Режим доступа: http://ru. wikipedia.org/wiki/Плей_офф

5. Степанов П.А. Функциональное программирование на языке Lisp. [Электронный ресурс] / П.А. Степанов, А.В. Бржезовский. - М.: ГУАП, 2003. С.79.

6. Столбов В.В. История физической культуры. [Электронный ресурс] / В.В. Столбов, И.Г. Чудинов - М.: ФиС. 1999. С.643.

7. Симанков В.С. Основы функционального программирования [Текст] / В.С. Симанков, Т.Т. Зангиев, И.В. Зайцев. - Краснодар: КубГТУ, 2002. - 160 с.

8. Хювенен Э. Мир Лиспа [Текст] / Э. Хювенен, Й. Сеппянен. - М.: Мир, 1990. - 460 с.