Конкурс по программированию. Выкладываем на стол, часть 3.

Чтобы не скучать.


Also kameraden, хочу предложить вам милое развлечение и соревнование заодно.
Тут наверняка есть программисты, да, и всех, кроме совсем старперов, в школе учили. Я выдаю задание класса «шарады/ребусы» и оригинальный алгоритм решения. Но решение графическое, т.е., напрямую в текст программы его не перенести. Нужно немного подумать, как его реализовать, и написать программу с определенными условиями. Писать на любом подходящем языке, хоть на VBA, хоть на турбо-бейсике. Задача несложная. Реальный программист напишет за 20 минут, любой дурак за пару часов.

Затем свое решение вы сбрасываете мне в личку, в час «Ч» я все их публикую. Те, что работают верно, отправляются на голосование за самое красивое решение.
У победителей будет возможность невозбранно написать «Fuck Yeahhh!» и потешить свое ЧСВ. Ну, если администрация выделить еще какойнибудь приз, то тоже будет неплохо.

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

Алгоритм изложен в этом топике magspace.ru/blog/intresting/209094.html
Решаем задачу о переливании воды. Имеем: три сосуда, самый большой из них полон, два других имеют меньший объем и пусты. После нескольких переливаний мы получаем некоторое количество воды в меньших сосудах.

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

Фактически такая программа позволит генерировать задачи этого типа с ручным подбором условий.

Интерфейс на ваше усмотрение, хоть консоль, хоть GUI, хоть ввод и вывод через стороннюю программу. Главное — правильность решения, вывод в удобном виде. Не забывайте о контроле входных данных.

Свистелки и перделки добавлять можно, но уместные. Усложнить задачу не запрещается при сохранении требуемого функционала. Например, сделать решение и для четырех сосудов, но чтобы три тоже можно было.

Если кого-то посетит остроумная мысль приделать к программе функцию форматирования винтов, вычислю по IP и набью морду, но запускать буду только на стенде, такшта винты не пострадают ;)

Если будете делать интерпретируемую, то давайте вместе со средой.

ОС: DOS, WinXP.

Решения присылайте мне в личку, последний срок — 06:00 среды.
  • avatar
  • .
  • +12

Больше в разделе

112 комментариев

avatar
всм с тебя алгоритм с нас программа? =)
  • Grey
  • 0
avatar
ага
avatar

avatar
ну вот другое дело =) а то бегать 5 километров =))
Кто-то написал фигню.
avatar
вы, эта… Пишите что-то вроде: «буду участвовать»
avatar
только в будни
avatar
«буду участвовать»
avatar
Странно, что ещё кто-то прочёл саму суть топика…
И не отвлёкся на велосипед.
avatar
Велик да, классный. Только там девка какая-то рыжая. отвлекает от созерцания велосипеда.

avatar
Стелс 750 :)
avatar
RED 90-60-90
avatar
Это не велик уже, это ближе к мотоциклу)

avatar
redhead правильнее будет…
avatar
Так в том и смысл: нормальные программисты увидев «Конкурс по программированию» забьют на картинку и посмотрят топик :)
Буду участвовать
avatar
Я всё понял… Луис заказ взял на какую-то программку, а самому писать лень. Сейчас ему народ куски кода напишет, он соберёт в кучу и вуаля)

ЗЫ Возможно буду участвовать, зависит от наличия свободного времени.
avatar
поверь мне, собрать что-то целое из кусков ЧУЖИХ кодов гораздо сложнее, чем собрать программу амому
avatar
я тоже хочу попробовать.
avatar
я так понимаюб на картинке приз?
avatar
ишь чего захотел :)
avatar
да он же про велик :)
avatar
Так и он про то же. Для Луиса велик — святое!
avatar
Давай свою задачку, посмотрим как это покрасивше можно реализовать =)
avatar
топег updated
avatar
что-то все замолчали…
Кодят или испугались? :)
avatar
:)
Дык, кому охота себя дураком выставлять? Сам же сказал:
Задача несложная. Реальный программист напишет за 20 минут, любой дурак за пару часов.

Прошло уже больше двух часов...:)
avatar
саму прогу по переливанию сделать вполне спокойно можно, а вот она сама себя еще и выполняла — это больше 2-ух часов + пример решения который дан геометрический, а нужен математический. просто времени и мыслей нет
avatar
путь решения дан, чтобы его переработать в матмодель, пригодную к кодированию, нужно чуть-чуть подумать, а сама реализация тривиальна.
avatar
Сам-то уже переработал? Я пару часов думал, нихера не вышло.
avatar
ну, моделируешь движение шарика внутри площади, начальная, конечная точки, всё такое…
avatar
Это тот-же граффический способ. Но тут шарику придется чекать множество путей, прежде чем попасть в цель.
А если в данных указаны емкости 1500, 1200 и 500 литров? Мы то можем решить сократив, а для графф. моделирования ситуации, придется справляться с нагромождением путей, а это не хорошо.
Тут нужно именно математическую модель разработать.
avatar
+ граффически это не обязательно четырехугольник.
Можно взять емкости 7, 5 и 3 литра, 7 — заполненно, остальные пусты. Ответ — 1, 5 и 1. В решении будет пятиугольник.
В общем такое колличество нюансов моделированием не решить.
avatar
Можно взять емкости 7, 5 и 3 литра, 7 — заполненно, остальные пусты. Ответ — 1, 5 и 1. В решении будет пятиугольник.
не понял.
В общем такое колличество нюансов моделированием не решить.
да, можно. В том и суть.
avatar
Даны 3 емкости, А=7л. Б=5л. В=3л.
емкость А заполнена водой. Реши задачу описанным способом так, чтобы получить А=1л. Б=5л. В=1л.
avatar
Просто налей воды…
avatar
добавь*
avatar
ну, ты тут разделяешь задачу на две:
1. Определение возможности решения
2. Само решение.

Для второго все равно придется пройти все точки.
А для первого можно как бы развернуть траекторию в прямую и проверить, лежит ли конечная на точка на ней. Это первое, что в голову пришло.
avatar
Решений тоже может быть бесконечное множество, так как на каждом узлу аж 3 варианта развития событий, это пирамида.
Вряд-ли кто-то будет строить невероятный анализатор кратчайшего пути, даже если и есть такой программист, то это точно не за бесплатно, и не за то чтоб получить плюсики.
avatar
не, там же на каждом этапе достигается предельное состояние в одном из элементов системы.
avatar
В общем поучавствуй сам в конкурсе, попробуй выведи алгоритм, а я в это время тебе нарисую схемку.
avatar
в общем, в задании не было требования соответствовать именно этому алгоритму. Просто мне показалось, что этот алгоритм удобнее.
avatar
В данном случае нужно или писать искусственный разум или брутфорсить.
Первый вариант отпадает, второй отпадает при вводных данных Over_1000 хотя-бы ибо вариантов масса, это я еще не рисовал обратные пути.

Или можно привязаться за острые углы. Но это все фигня, потому, что это граффический способ, если его нагрузить прямыми то просчет может длиться годами =)
avatar
видишь ли, если ты начинаешь перемещаться по периметру, а не внутри, то приходишь, то каждый твой ход, сделанный по периметру приводит систему в состояние, которое могло быть достигнуто из исходного за 0,1 или 2 хода. Соотвественно, такое может быть оптимальным решением только при том условии, что до этого было сделано не более 1 хода.

Т.е., это вопрос оптимизации, а это и есть одно из содержаний задачи, которую требуется решить.
avatar
Ну уже не важно, я складываю с себя участие в этой олимпиаде. В посте уж явно преувеличены задачи, это может быть и выполнимо, но точно не 20 минут.
Жду голосования, если конечно хоть кто-то напишет эту программу.
А вообще задача очень древняя, наверняка программа была-бы уже написана если она имеет мат. решение, а не брутфорс.
avatar
саму переливашку написанную видел, а вот чтобы такое извращение — нет =)
avatar
Ну вот переливашку может любой дурак написать. А тут Луис для первого раунда такую хреновину добыл.
avatar
а что она делала-то?
avatar
если ты про переливашку, то это данная тобой задача, только в пк исполнении. С помощью комманд переливаешь из одного сосуда воду в другой + показываются текущие значения где и сколько в сосудах воды.
avatar
Скорее всего задаются параметры ведер, и ты сидишь вручную переливаешь. Симулятор в общем.
avatar
во — симулятор самое то слово, только ведра были зафиксированы между собой, но вариантов выбора первого ведра (в котором вода хранится) 2 или 3, да и цель у него получить 1 литр в любом ведре.
avatar
конкурс вроде закончился, покажи теперь свой код, для сранвнения с кодом победителя
avatar
я ж не писал
avatar
Радует пост — не политика и не просто сиськи :) хотя последние правда и присутствуют, но смотрю народ на них не отвлекается. Как я понимаю — сама задача сводится к разработке алгоритма, в код его воплотить и негр сможет…
  • Gvv
  • 0
avatar
не каждый негр =)
avatar
сиськофоб!!!
avatar
Не, ты что сиськи — это святое :) пойду посмотрю :)
avatar
тут же есть!
avatar
Ну так я по соседним постам и прошёлся :) Это всё же лучше, чем извилину морщить, вспоминая программирование, особенно учитывая, что после ASM51 я к программированию отношения не имею :)
avatar
Ну, и ЧО? Хоть кто-нибудь взялся?
avatar
подобную задачу решали и реализовывали на с++ лет 10 назад)
если не изменяет память было два решения… через теорию графов и матрицы… чё как не спрашивай… устал уже вспоминать — не помню =-(
avatar
подобную задачу решали и реализовывали во все времена… Без всяких С++… Это я говорю как «старпёр»… Логику жизни не обязательно «облечь в матиматику»…
avatar
Звиняюсь за грамматику… Пьян зело…
avatar
я к тому что был чёткий алгоритм, который был реализован на языке программирования…
avatar
На языке программирования даже 2+2 не всегда 4… А в жизни… Второй шкуры точно не будет… Не будите лихо…
avatar
Шо, вспоминать что и как там в бейсике? Не, фпесду, не буду участвовать.
avatar
Мне пришлось и бейсик и паскаль и фортран…
avatar
Луис, давай другую задачу, а то конкурс провалится.
avatar
это пока ты отказался, другие, может, сделают. Подождем до среды.

А хорошее задание придумать не так просто.
У меня есть один вариант. Только не в всем может вкатить.
Есть одна приблуда, которую я делал в Excel на VBA. Там получился очень красивый и компактный код. Можно было бы выставить в качестве задания повторение той же задачи с еще более компактным кодом.

Вообще, офисному сотруднику или инженегру полезно уметь VBA, оно может экономить вагоны времени. Тут был бы повод потренироваться…
avatar
макросы писать будем? =)
avatar
разве плохо?
avatar
давай до пятницы
avatar
ты эту сначала сделай :)
avatar
я имею ввиду эту до пятницы, работы много, времени мало )))
avatar
а я уже решил) не сложно
avatar
Я бы глянул этот код.
avatar
пока есть одно решение
avatar
признавайся! это был чей то курсач, и срок сдачи в 8 утра в среду? ))
avatar
да, ничей. Я даже исходников не просил :)
avatar
Ничего себе сколько тут программистов =)
  • Infi
  • 0
avatar
я не программЁр, но хочу себе велик, чтобы составить компанию Рыжей бестии…
до чего она хороша…
  • STi
  • 0
avatar
Спустился с рыжей головы до коленок… поднялся обратно… завис посередине… текст не вижу, логически мыслить отказываюсь…
  • SPGM
  • +3
avatar
есть алгоритм — нет времени закодить, продли до 23:59 пятницы
avatar
я сожалею, но нет.
У тебя пока не нашлось часика, то не факт, что найдется и дальше.
Если мы продлим, а ты все же не сделаешь, то мы все будем выглядеть глупо.
avatar
я с работы к 22 прихожу, а в пятницу до 18. я за пару часов успею накидать. честно-честно.
avatar
Конкурс окончен. Выложить на стол нашлось только у одного.

magspace.ru_magspace.ru_sosud.rar (274 Kb)

Программа работает, считает верно, интерфейс хороший. Есть небольшой косяк — при вводе кривых данных виснет.

Энд зе виннер ииииизззззз… — TrueEvil.

А вы, чуваки, меня разочаровали. Задача была по силам многим, а вы как лошары.
avatar
Fuck Yeahhh!
жаль, что так тухло среагировали
avatar
Давай второй раунд, и найди что полегче, тогда больше людей наберется.
Победителю поздравления, велосипед и бабу.
avatar
Я прошу прощения, у меня с утра чувство юмора не работает. Так что:
А вы, чуваки, меня разочаровали. Задача была по силам многим, а вы как лошары.
Тебе (якобы =)) просто интересно утроить конкурс, при этом ты думаешь, что у тебя будет несколько участников. То есть, на твой интерес должно быть затрачено порядка десяти человекочасов квалифицированного труда. Насмешил =))

Вот делать мне больше нех… всякой х… нёй заниматься. Ну по силам мне задача, а с чего ты взял что после работы и всех дел, когда я к 11 вечера залезаю на Магспэйс, мне захочется тратить время на написание программы?
avatar
это какой-то пиздец…
Ты совсем ебанутый?
avatar
Аха, бываю иногда.
Чуть более развёрнуто ты не мог бы ответить?
avatar
у тебя была возможность показать свой длинный хуй. А теперь твои отмазки выглядят смешно и нелепо. У тебя короткий, чувак.
avatar
Ты совсем ебанутый.
avatar
порядка десяти человекочасов квалифицированного труда
10 часов это ты чет много взял.
У меня на установку ide ушло больше времени, чем на написание.
Алгоритм был дан в уже готовом виде, написать сотню строк по готовому алгоритму — 10 часов? Что это за квалификация такая?
Ну по силам мне задача
не убедительно
а с чего ты взял что после работы и всех дел, когда я к 11 вечера залезаю на Магспэйс, мне захочется тратить время на написание программы?
Ну программеры они такие, приходя домой включают игрули типа colobot, размышляют о высоких материях и не упустят случая померятся пиписьками.
И еще: в человеко-часах задачи измеряют только мудаки (пользуясь случаем, передаю физкульт привет, моему бывшему руководству)
avatar
Человекочасы — это сумма времени работы всех участников. Десять человек по часу — это тоже 10 человекочасов.
Это тебе для общего развития, чемпион.
avatar
некоторое развитие алгоритма может дать решение задачи для 4-ех сосудов (в тетраэдре) и для N сосудов вообще. А приделав перебор всех возможных вариантов исходных данных (в разумных пределах), можно получить набор всех возможных задач этого типа с решениями.
avatar
Что то я не понял смысл всего этого… Показать у кого яйца круче? Или что кто-то умнее кого-то? Если это конкурс, где вообще все процедуры полагающееся конкурсу. Если это попытка под шумок получить готовый вариант решения, то почему те, кто не согласился — тот как лошара? о_О
avatar
Показать у кого яйца круче?
ага. В этом смысл любого конкурса.
А про какие процедуры ты говоришь?
avatar
Ну по любому конкурсы проводятся не так — "-Так, Давайте-те ка быстренько сообразим программку, кто быстрее, тот и молодец!". "-Ура!!!!". «Ты и ты лошара, Серёжа молодец!». "-Слава Серёже!". "-Конкурс закончен. Расходимся!"…
avatar
благородному дону никто не запрещает устроить конкурс получше.
avatar
Нет ни желания ни средств или связей для стимулирования участия. А производить жалкие потуги наподобие этого, как-то не айс.
avatar
жалкие потуги… ололо.
Это был самый лучший конкурс по программированию на магспейсике ;)
avatar
это был единственный конкурс по программированию на уютненьком:)
avatar
Поэтому и лучший :)
avatar
ну, чо? Продолжать будем?
Но у меня только одна более-менее идея про VBA.
Если у кого-то есть задумки-задачки, велкам, чтобы я тоже поучаствовал.

Ну, есть еще… Написать «крестики-нолики», но, думаю, это аццкий аккордеон.
avatar
Крестики-нолики я ещё в басик01 рисовал, в инете найти просто. Нужны оригинальные задачи)
avatar
придумывай
avatar
А если что-нибудь связанное с самим магСпейсом? Подобных ресурсов в инете не мало, но мутации на лицо. Время уже позднее…
Я помню была задача по построению рисунка в одну строку, то есть формула, по которой раскидывались точки. Не очень сложная, но требующая знаний математики, геометрии и физики. Если взять за основу именно старые языки програмирования (в объектно-ориентированных уже всё есть)… То получится задача на логику. Но как её создать… я пока ХЗ)
Если сделать ограничение по языкам, то можно покумекать)
avatar
А если что-нибудь связанное с самим магСпейсом?
ну, есть пара мыслей.
Можно сделать «случайную страницу». А то в лурке есть, а тут нет. Очень удобно для некропостинга будет. А может, это в движке есть, просто незаюзанно?

Еще можно сделать «Гадание по внутренностям жЫвотных».
Выбирать три слова из случайного камента.
Скажем, девочка хочет соблазнить какого-то мальчика, но боится получить отказ. Гадание придет на помощь. Если оно выдаст «Я бы вдул», то всё прокатит, а если «Иди на хуй», то…
Или девочка хочет соблазнить мальчика, но не знает, какого ей выбрать. Тогда гадание подскажет ей это в виде аффтара камента.
avatar
какой хитрый план, учитывая процент твоих комментариев
avatar
может литературу посоветуйте по программированию, для первых шагов, а то ничего не понятно
  • Nano
  • +1
avatar
ну, обычно начинают с бейсика или с паскаля.
avatar
обычно с алгоритмики начинают, уже потом бейсик и паскаль =)
avatar
не спорь!
Алгоритмам как раз и учатся на учебных языках.
avatar
Мы алгоритмам учились на алгоритмизации :) А потом уже до языков допускали :)
avatar
типа, ты — крутой хуй, который учился программированию? Ну, ладно-ладно…
Помолчу, меня особо не учили…
avatar
ты хотел сказать, теории алгоритмов. Там изучают машины тьюринга и прочую фигню.
От себя по рекомендую упомянутую выше игрушку colobot, вместо теории алгоритмов, а после этого, любую кижку из серии visual с++(или delphi) для начинающих.
avatar
ты хотел сказать...

Я хотел сказать «алгоритмизация». Я это и сказал. Был у нас такой предмет, «алгоритмизация» назывался.

От себя по рекомендую… любую кижку из серии visual с++(или delphi) для начинающих

Спасибо, друг. Но мне пока диплома программиста хватает. Потом может…
avatar
а я это и не тебе. Но если потом прижмет, обращайся)
avatar
Найди в инете по поиску что-то типа «Q-basic», возможно есть книги из коллекции «для чайников». Но если серьёзно не собираешься заниматься програмированием, просто поищи структуры и алгоритмы языков програмирования. Потом выбери для себя что-нибудь (я бы C++ для начала посоветовал) и втыкай в литературу, предварительно установив редактор…
И, возможно, через полгодика-год что-то начнёт получаться)

ЗЫ Хотя в наше время глубокое знание програмирование нафик не нужно, почти все программы, необходимые простому человеку уже есть в инете, а их модификация под себя делается несколькими кликами мышки.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.