Конкурс по программированию. Выкладываем на стол, часть 3.
Чтобы не скучать.
Also kameraden, хочу предложить вам милое развлечение и соревнование заодно.
Тут наверняка есть программисты, да, и всех, кроме совсем старперов, в школе учили. Я выдаю задание класса «шарады/ребусы» и оригинальный алгоритм решения. Но решение графическое, т.е., напрямую в текст программы его не перенести. Нужно немного подумать, как его реализовать, и написать программу с определенными условиями. Писать на любом подходящем языке, хоть на VBA, хоть на турбо-бейсике. Задача несложная. Реальный программист напишет за 20 минут, любой дурак за пару часов.
Затем свое решение вы сбрасываете мне в личку, в час «Ч» я все их публикую. Те, что работают верно, отправляются на голосование за самое красивое решение.
У победителей будет возможность невозбранно написать «Fuck Yeahhh!» и потешить свое ЧСВ. Ну, если администрация выделить еще какойнибудь приз, то тоже будет неплохо.
Если есть желающие, отписывайтесь тут. Если наберется хотя бы человек пять, будем затевать.
Алгоритм изложен в этом топике magspace.ru/blog/intresting/209094.html
Решаем задачу о переливании воды. Имеем: три сосуда, самый большой из них полон, два других имеют меньший объем и пусты. После нескольких переливаний мы получаем некоторое количество воды в меньших сосудах.
В качестве входных данных программа должна принимать начальное состояние системы: объемы всех трех сосудов, и конечное состояние системы: количество воды в двух меньших сосудах. В качестве ответа программа должна выдавать кратчайшее решение, а если решения при заданных параметрах не существует, то сообщать об этом.
Фактически такая программа позволит генерировать задачи этого типа с ручным подбором условий.
Интерфейс на ваше усмотрение, хоть консоль, хоть GUI, хоть ввод и вывод через стороннюю программу. Главное — правильность решения, вывод в удобном виде. Не забывайте о контроле входных данных.
Свистелки и перделки добавлять можно, но уместные. Усложнить задачу не запрещается при сохранении требуемого функционала. Например, сделать решение и для четырех сосудов, но чтобы три тоже можно было.
Если кого-то посетит остроумная мысль приделать к программе функцию форматирования винтов, вычислю по IP и набью морду, но запускать буду только на стенде, такшта винты не пострадают ;)
Если будете делать интерпретируемую, то давайте вместе со средой.
ОС: DOS, WinXP.
Решения присылайте мне в личку, последний срок — 06:00 среды.
Also kameraden, хочу предложить вам милое развлечение и соревнование заодно.
Тут наверняка есть программисты, да, и всех, кроме совсем старперов, в школе учили. Я выдаю задание класса «шарады/ребусы» и оригинальный алгоритм решения. Но решение графическое, т.е., напрямую в текст программы его не перенести. Нужно немного подумать, как его реализовать, и написать программу с определенными условиями. Писать на любом подходящем языке, хоть на VBA, хоть на турбо-бейсике. Задача несложная. Реальный программист напишет за 20 минут, любой дурак за пару часов.
Затем свое решение вы сбрасываете мне в личку, в час «Ч» я все их публикую. Те, что работают верно, отправляются на голосование за самое красивое решение.
У победителей будет возможность невозбранно написать «Fuck Yeahhh!» и потешить свое ЧСВ. Ну, если администрация выделить еще какойнибудь приз, то тоже будет неплохо.
Если есть желающие, отписывайтесь тут. Если наберется хотя бы человек пять, будем затевать.
Алгоритм изложен в этом топике magspace.ru/blog/intresting/209094.html
Решаем задачу о переливании воды. Имеем: три сосуда, самый большой из них полон, два других имеют меньший объем и пусты. После нескольких переливаний мы получаем некоторое количество воды в меньших сосудах.
В качестве входных данных программа должна принимать начальное состояние системы: объемы всех трех сосудов, и конечное состояние системы: количество воды в двух меньших сосудах. В качестве ответа программа должна выдавать кратчайшее решение, а если решения при заданных параметрах не существует, то сообщать об этом.
Фактически такая программа позволит генерировать задачи этого типа с ручным подбором условий.
Интерфейс на ваше усмотрение, хоть консоль, хоть GUI, хоть ввод и вывод через стороннюю программу. Главное — правильность решения, вывод в удобном виде. Не забывайте о контроле входных данных.
Свистелки и перделки добавлять можно, но уместные. Усложнить задачу не запрещается при сохранении требуемого функционала. Например, сделать решение и для четырех сосудов, но чтобы три тоже можно было.
Если кого-то посетит остроумная мысль приделать к программе функцию форматирования винтов, вычислю по IP и набью морду, но запускать буду только на стенде, такшта винты не пострадают ;)
Если будете делать интерпретируемую, то давайте вместе со средой.
ОС: DOS, WinXP.
Решения присылайте мне в личку, последний срок — 06:00 среды.
112 комментариев
И не отвлёкся на велосипед.
Буду участвовать
ЗЫ Возможно буду участвовать, зависит от наличия свободного времени.
Кодят или испугались? :)
Дык, кому охота себя дураком выставлять? Сам же сказал:
Прошло уже больше двух часов...:)
А если в данных указаны емкости 1500, 1200 и 500 литров? Мы то можем решить сократив, а для графф. моделирования ситуации, придется справляться с нагромождением путей, а это не хорошо.
Тут нужно именно математическую модель разработать.
Можно взять емкости 7, 5 и 3 литра, 7 — заполненно, остальные пусты. Ответ — 1, 5 и 1. В решении будет пятиугольник.
В общем такое колличество нюансов моделированием не решить.
да, можно. В том и суть.
емкость А заполнена водой. Реши задачу описанным способом так, чтобы получить А=1л. Б=5л. В=1л.
1. Определение возможности решения
2. Само решение.
Для второго все равно придется пройти все точки.
А для первого можно как бы развернуть траекторию в прямую и проверить, лежит ли конечная на точка на ней. Это первое, что в голову пришло.
Вряд-ли кто-то будет строить невероятный анализатор кратчайшего пути, даже если и есть такой программист, то это точно не за бесплатно, и не за то чтоб получить плюсики.
Первый вариант отпадает, второй отпадает при вводных данных Over_1000 хотя-бы ибо вариантов масса, это я еще не рисовал обратные пути.
Или можно привязаться за острые углы. Но это все фигня, потому, что это граффический способ, если его нагрузить прямыми то просчет может длиться годами =)
Т.е., это вопрос оптимизации, а это и есть одно из содержаний задачи, которую требуется решить.
Жду голосования, если конечно хоть кто-то напишет эту программу.
А вообще задача очень древняя, наверняка программа была-бы уже написана если она имеет мат. решение, а не брутфорс.
если не изменяет память было два решения… через теорию графов и матрицы… чё как не спрашивай… устал уже вспоминать — не помню =-(
А хорошее задание придумать не так просто.
У меня есть один вариант. Только не в всем может вкатить.
Есть одна приблуда, которую я делал в Excel на VBA. Там получился очень красивый и компактный код. Можно было бы выставить в качестве задания повторение той же задачи с еще более компактным кодом.
Вообще, офисному сотруднику или инженегру полезно уметь VBA, оно может экономить вагоны времени. Тут был бы повод потренироваться…
до чего она хороша…
У тебя пока не нашлось часика, то не факт, что найдется и дальше.
Если мы продлим, а ты все же не сделаешь, то мы все будем выглядеть глупо.
magspace.ru_magspace.ru_sosud.rar (274 Kb)
Программа работает, считает верно, интерфейс хороший. Есть небольшой косяк — при вводе кривых данных виснет.
Энд зе виннер ииииизззззз… — TrueEvil.
А вы, чуваки, меня разочаровали. Задача была по силам многим, а вы как лошары.
жаль, что так тухло среагировали
Победителю поздравления, велосипед и бабу.
Тебе (якобы =)) просто интересно утроить конкурс, при этом ты думаешь, что у тебя будет несколько участников. То есть, на твой интерес должно быть затрачено порядка десяти человекочасов квалифицированного труда. Насмешил =))
Вот делать мне больше нех… всякой х… нёй заниматься. Ну по силам мне задача, а с чего ты взял что после работы и всех дел, когда я к 11 вечера залезаю на Магспэйс, мне захочется тратить время на написание программы?
Ты совсем ебанутый?
Чуть более развёрнуто ты не мог бы ответить?
У меня на установку ide ушло больше времени, чем на написание.
Алгоритм был дан в уже готовом виде, написать сотню строк по готовому алгоритму — 10 часов? Что это за квалификация такая?
не убедительно
Ну программеры они такие, приходя домой включают игрули типа colobot, размышляют о высоких материях и не упустят случая померятся пиписьками.
И еще: в человеко-часах задачи измеряют только мудаки (пользуясь случаем, передаю физкульт привет, моему бывшему руководству)
Это тебе для общего развития, чемпион.
А про какие процедуры ты говоришь?
Это был самый лучший конкурс по программированию на магспейсике ;)
Но у меня только одна более-менее идея про VBA.
Если у кого-то есть задумки-задачки, велкам, чтобы я тоже поучаствовал.
Ну, есть еще… Написать «крестики-нолики», но, думаю, это аццкий аккордеон.
Я помню была задача по построению рисунка в одну строку, то есть формула, по которой раскидывались точки. Не очень сложная, но требующая знаний математики, геометрии и физики. Если взять за основу именно старые языки програмирования (в объектно-ориентированных уже всё есть)… То получится задача на логику. Но как её создать… я пока ХЗ)
Если сделать ограничение по языкам, то можно покумекать)
Можно сделать «случайную страницу». А то в лурке есть, а тут нет. Очень удобно для некропостинга будет. А может, это в движке есть, просто незаюзанно?
Еще можно сделать «Гадание по внутренностям жЫвотных».
Выбирать три слова из случайного камента.
Скажем, девочка хочет соблазнить какого-то мальчика, но боится получить отказ. Гадание придет на помощь. Если оно выдаст «Я бы вдул», то всё прокатит, а если «Иди на хуй», то…
Или девочка хочет соблазнить мальчика, но не знает, какого ей выбрать. Тогда гадание подскажет ей это в виде аффтара камента.
Алгоритмам как раз и учатся на учебных языках.
Помолчу, меня особо не учили…
От себя по рекомендую упомянутую выше игрушку colobot, вместо теории алгоритмов, а после этого, любую кижку из серии visual с++(или delphi) для начинающих.
Я хотел сказать «алгоритмизация». Я это и сказал. Был у нас такой предмет, «алгоритмизация» назывался.
Спасибо, друг. Но мне пока диплома программиста хватает. Потом может…
И, возможно, через полгодика-год что-то начнёт получаться)
ЗЫ Хотя в наше время глубокое знание програмирование нафик не нужно, почти все программы, необходимые простому человеку уже есть в инете, а их модификация под себя делается несколькими кликами мышки.