Вторник, 23 Апреля 2024, 10:30

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Проверь свои знания Pascal в интересной форме (Решаем не более 3-х суток, решение мне лс.)
Проверь свои знания Pascal в интересной форме
VinchensooДата: Четверг, 23 Декабря 2010, 11:31 | Сообщение # 1
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Вот, поспорили с одним из пользователей о его гениальности, предлагаю проверить свое знание всем, кто хочет(примерный уровень- старшая школа- 1 курс Вуза).
Решение присылаете мне лс, в нем скомпилированный ехе файл, а также код программы в txt файле.
Ни в коем случае не выкладываем готовое решение сюда: лично награжу баном!
Решение одной задачи ничего не значит, т.к. можно найти решение некоторых задач в интернете.
Кто решит все задачи- получит награду! Кто решит 3-4 задачи- дам +6 к репутации!

Задачи разделены на 2 типа:
1. Технический- требуется продемонстрировать знание конструкций языка на несложной логической задаче.
2. Логический- нужно решить сложную(относительно) математическую задачу.
Всего представлено 2 технических и 3 логических задачи.
Данные вводим с консоли, с нормальными запросами. Т.е. программа должна говорить, что она хочет получить.
Оценивать буду также эффективность и скорость работы программ.
Если вы не владеете Pascal, но хотите поучаствовать, можете написать программу на любом ЯП и кинуть мне лс исполняемый файл. Но такие программы в конкурсе на призовые места не участвуют.
Задание:
Технические:
1. Задано 2 множества. Найти их объединение, пересечение, мощности обоих(исходных множеств).
Вход: 2 строки, где элементы множества идут через пробел. Для упрощения считаем, что все элементы множеств- прописные буквы английского алфавита, максимальная мощность любого множества 26. Оба множества на входе- не пустые. Элементы в одном и том же множестве не повторяются.
Выход: вывести в первой строке объединение, во второй- пересечение, в последней- мощности обоих через пробел, порядок не важен.
Пустое множество можете обозначать как хотите.
2. Написать рекурсивную функцию для зануления числа. Использовать ее в теле программы.
Вход: число, можно из консоли.
Выход: всегда 0.
Логические:
3. Даны 4 точки в трехмерном пространстве, проверить, можно ли провести плоскость через них.
Вход: 4 строки с 3-мя координатами в каждой, координаты через пробел.
Выход: ответ да или нет. Если ответ да, то вывести уравнение данной плоскости.
4. Вычислить определитель квадратной матрицы:

Вход: в первой строке число n, порядок определителя. В остальных n строка- сама матрица. Числа в строке перечислены через пробел. Для определенности посчитаем n<=1000.
Выход: число.
5. Мальчик решил пронумеровать все страницы своего блокнота, выясните, сколько раз ему придется написать каждую цифру.
Вход: количество страниц. Число страниц не вызывает переполнение при счете или его вводе.
Выход: в каждой строке количество соотвествующих цифр, например, в первой строке- кол-во нулей, во-второй- единиц и т.д.
Кто решит участвовать, отпишитесь в этой теме.
Предварительные результаты будут выкладываться в первом посте.
Если вас они не устраивают, вы можете прислать решение нерешенных или неправильно решенных задач заново.


poljkeeДата: Четверг, 23 Декабря 2010, 22:13 | Сообщение # 2
был не раз
Сейчас нет на сайте
во блин.......я такие задачки хрен решу sad
VinchensooДата: Пятница, 24 Декабря 2010, 06:47 | Сообщение # 3
Злобный социопат с комплексом Бога
Сейчас нет на сайте
poljkee, попробуй, денег никто же не требует с тебя :D.
Судя по кол-ву просмотров/заявлений об участии все сочли задачи слишком сложными или как?


Serg1971Дата: Пятница, 24 Декабря 2010, 07:03 | Сообщение # 4
Весёлый программист
Сейчас нет на сайте
Vinchensoo, нет, задачки здоровские! Твою тему - можно как ЕГЭ сайта оставить. smile И всех - кто мнит себя крутыми "профи" smile сюда отправлять... Для проверки так сказать! Что-то да, не густо с сообщениями... Самому чтоль, вспомнить школьные годы и написать на Паскале! smile



Сообщение отредактировал Serg1971 - Пятница, 24 Декабря 2010, 07:05
VinchensooДата: Пятница, 24 Декабря 2010, 10:35 | Сообщение # 5
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (Serg1971)
Vinchensoo, нет, задачки здоровские! Твою тему - можно как ЕГЭ сайта оставить. И всех - кто мнит себя крутыми "профи" сюда отправлять... Для проверки так сказать! Что-то да, не густо с сообщениями... Самому чтоль, вспомнить школьные годы и написать на Паскале!

Ну для ЕГЭ это слишком. Но проверять хвастунов можно. Конкурс такой давно хотел провести.
Тут хотело 55 человек поучаствовать, а сейчас нет ни одного)
Задачи для выпускника школы не очень сложные, для студента мат. факультета- вообще нефиг делать


StraggerДата: Пятница, 24 Декабря 2010, 11:09 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Я участвую.. Пора готовиться к олимпиаде..
Хм, хотя здесь математики гораздо больше, чем программирования... Без математики конечно в программировании никуда, но всё-же...
Насчёт не более трех суток, не плохо бы побольше.


Сообщение отредактировал Stragger - Пятница, 24 Декабря 2010, 12:03
VinchensooДата: Пятница, 24 Декабря 2010, 12:21 | Сообщение # 7
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (Stragger)
Насчёт не более трех суток, не плохо бы побольше.

ну если никто не сдаст решения, то естественно продлим срок.
Просто задачи, в большинстве своем, тривиальные.
Но повторюсь, если будет мало работ- срок увеличим.
Quote (Stragger)
Хм, хотя здесь математики гораздо больше, чем программирования... Без математики конечно в программировании никуда, но всё-же...

ну школьных олимпиадах обычная практика применять программы для сложной мат.логики. Вообще, большую часть математики я, вроде как, объяснил. Как определитель посчитать расписал, осталось только в код это применить. Уравнение плоскости найдете в Вики, в школе его не проходят, кажется. Оно тоже считается через определитель. Ну и остальное, там не особо сложная математика. Алгоритмы вообще тривиальные.
Если конкурс привлечет внимание и будет интересен хотя бы 10-ку человек, то можно сделать позже еще 1 тур с более интересными и глубокими задачами. По сути, эти я написал/нашел за 1 час


StraggerДата: Пятница, 24 Декабря 2010, 12:28 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Я сейчас пожалуй сяду делать. Не понятно условие одной задачи, что есть зануление числа? Наверное позорно этого не знать, но все же..
VinchensooДата: Пятница, 24 Декабря 2010, 12:32 | Сообщение # 9
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (Stragger)
Я сейчас пожалуй сяду делать. Не понятно условие одной задачи, что есть зануление числа? Наверное позорно этого не знать, но все же..

Значит, нужно сделать функцию, которая будет из любого целого числа(как +, так и -) делать 0.
Задача находится в разделе технических, проверяет умение писать свои функции на паскале и знание рекурсии.
Т.е. ты делаешь функцию zanulit, например, я в программе пишу:
Code

f:=zanulit(10);
z:=zanulit(-7);
writeln(z);
writeln(f);

В итоге мне должно вывести в конечном файле:
Code

0
0


maximiliano007Дата: Пятница, 24 Декабря 2010, 19:55 | Сообщение # 10
Программист всея Руси
Сейчас нет на сайте
участвую

GECKДата: Пятница, 24 Декабря 2010, 20:39 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Все-таки я с занулением не понял.
Попахивает теорией алгоритмов, но практической ценности не имеет.
Code

Убрано
, и весь код.


Всё гениальное просто. И хреново работает.

Сообщение отредактировал GECK - Пятница, 24 Декабря 2010, 20:41
simtikoДата: Пятница, 24 Декабря 2010, 21:47 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
GECK,
Quote (Vinchensoo)
Написать рекурсивную функцию для зануления числа

Смысл в том, чтобы функция вызывала сама себя. Написал тебе в личку.


Сообщение отредактировал simtiko - Пятница, 24 Декабря 2010, 21:59
FarcuatДата: Суббота, 25 Декабря 2010, 00:24 | Сообщение # 13
частый гость
Сейчас нет на сайте
Присоединяюсь. Отправил в лс.
Pascal мне не родной язык, поэтому было интересно :D.
WTALKERДата: Суббота, 25 Декабря 2010, 00:49 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Мне, как любителю прогр-я узнать бы, что это за слова такие:
Quote
Задано 2 множества. Найти их объединение, пересечение, мощности обоих

biggrin :D

Можно конечно, в википедию заглянуть, чтобы знания пополнить. Если вообще есть смысл в знании "мощности множества" happy


Раз уж занялся игростроем, то умей и имей:
1) знание иностранного языка и понимание того, что делаешь
2) программы для игростроя, а так же для обработки текстур, моделей, звуков
3) много свободного времени


Сообщение отредактировал WTALKER - Суббота, 25 Декабря 2010, 00:49
VinchensooДата: Суббота, 25 Декабря 2010, 07:23 | Сообщение # 15
Злобный социопат с комплексом Бога
Сейчас нет на сайте
GECK, во-первых, неправильно.
Во-вторых,
Quote (Vinchensoo)
Ни в коем случае не выкладываем готовое решение сюда: лично награжу баном!

Какое из слов "награжу" или "бан" ты не понял?
Quote (WTALKER)
Можно конечно, в википедию заглянуть, чтобы знания пополнить. Если вообще есть смысл в знании "мощности множества"

гугли теорию множеств. Смысл есть, иногда используется.
Но в любительском программировании редко.
Общее понятие- множество- набор элементов.
Пересечение- поиск всех одинаковых элементов.
Объединение- множество, все элементы которого являются элементами или первого, или второго.
Мощность множества- в данном случае- это количество элементов в нем.
Quote (GECK)
Все-таки я с занулением не понял.

Смысл: проверить умение писать свои функции и знание понятия рекурсия.
Задача в разделе технических.
Подправил условия одной из задач:
Quote (Vinchensoo)
Вход: 2 строки, где элементы множества идут через пробел. Для упрощения считаем, что все элементы множеств- прописные буквы английского алфавита, максимальная мощность любого множества 26. Оба множества на входе- не пустые.
Выход: вывести в первой строке объединение, во второй- пересечение, в последней- мощности обоих через пробел, порядок не важен. Пустое множество можете обозначать как хотите.


ADJAДата: Суббота, 25 Декабря 2010, 16:24 | Сообщение # 16
частый гость
Сейчас нет на сайте
Пара вопросов по задачам:
1) Могут ли в исходных множествах быть повторяющиеся элементы? Если да, то считает ли задачи объединением к примеру (1,2) и (2,3) множество (1,2,2,3) ? Крайне неудобно, если это будет так.
2)-5) Неплохо бы иметь ограничения.



Кликабельно!
Мой сайт
VinchensooДата: Суббота, 25 Декабря 2010, 17:01 | Сообщение # 17
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (ADJA)
1) Могут ли в исходных множествах быть повторяющиеся элементы? Если да, то считает ли задачи объединением к примеру (1,2) и (2,3) множество (1,2,2,3) ? Крайне неудобно, если это будет так.

Естественно могут. В одном множестве не может быть 2-х одинаковых. Если все элементы были бы разными, какой смысл был бы искать пересечение множеств? Кстати, нужно найти мощности входных множеств. Некоторые представляют решение с поиском мощности пересечения и объединения.
Quote (ADJA)
2)-5) Неплохо бы иметь ограничения.

Ограничение в принципе нужно только в 4-й задаче. В остальных- можно и без него. Ну понятно, адекватный код не обязан считать числа типа 10 в 30 степени. Считайте стандартный 214..


ADJAДата: Суббота, 25 Декабря 2010, 17:12 | Сообщение # 18
частый гость
Сейчас нет на сайте
Quote (Vinchensoo)
Quote (ADJA)1) Могут ли в исходных множествах быть повторяющиеся элементы? Если да, то считает ли задачи объединением к примеру (1,2) и (2,3) множество (1,2,2,3) ? Крайне неудобно, если это будет так. Естественно могут. В одном множестве не может быть 2-х одинаковых. Если все элементы были бы разными, какой смысл был бы искать пересечение множеств? Кстати, нужно найти мощности входных множеств. Некоторые представляют решение с поиском мощности пересечения и объединения.

Спасибо за быстрый ответ, но я имел ввиду не совсем это. Вопрос касался того, может ли быть одно из исходных множеств к примеру (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2). Впрочем, это не критично.

Насчет 3 задачи: приводить ли уравнение к каноническому виду? Поясню: можно ли записать уравнение к примеру в виде (0)*x+(5)*y+(-2)*z+(-2)=0 или требуется привести это к 5y-2z-2=0



Кликабельно!
Мой сайт


Сообщение отредактировал ADJA - Суббота, 25 Декабря 2010, 17:12
VinchensooДата: Суббота, 25 Декабря 2010, 17:27 | Сообщение # 19
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (ADJA)
Спасибо за быстрый ответ, но я имел ввиду не совсем это. Вопрос касался того, может ли быть одно из исходных множеств к примеру (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2). Впрочем, это не критично.

Ответ в первом посте, невозможно.
Quote (ADJA)
Насчет 3 задачи: приводить ли уравнение к каноническому виду? Поясню: можно ли записать уравнение к примеру в виде (0)*x+(5)*y+(-2)*z+(-2)=0 или требуется привести это к 5y-2z-2=0

я думаю, что лучше привести к виду 5y-2z-2=0. Это несложно. Зато будет читабельно


VinchensooДата: Воскресенье, 26 Декабря 2010, 08:41 | Сообщение # 20
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Изменил ввод данных, т.к. с файлами очень сложно проверять.
Делайте консольные.


Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Проверь свои знания Pascal в интересной форме (Решаем не более 3-х суток, решение мне лс.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг