Название: Искусство программирования - 8 Отправлено: LazarusLong от Октябрь 18, 2008, 12:50:05 Есть массив размерностью MxN (могут быть как равны, так и не равны).
Необходимо заполнить массив числами от 1 до MxN по спирали, то есть к примеру для M = 3, N = 4 массив будет иметь вид:
Принимаются ответы на языках С/С++, Паскаль, Java, C#. Автору самого короткого решения - +1, так же автору наиболее оргинального решения(по моему усмотрению) - +1. Задача, на самом деле, довольно тривиальна, но хочется поднять темы по программированию, а то отгадывание рож уже поднадоело. Название: Re: Искусство программирования - 8 Отправлено: LazarusLong от Октябрь 23, 2008, 06:38:23 Вариантов не будет? Можно оглашать ответ?
ЗЫ:Неужели так сложно? Название: Re: Искусство программирования - 8 Отправлено: Alder от Октябрь 23, 2008, 06:41:47 LazarusLong, подожди. Я вечерком подумаю :)
Название: Re: Искусство программирования - 8 Отправлено: Polyakov от Октябрь 23, 2008, 10:52:06 Если мне не изменяет память, то эта задача была в билетах рейтинга по информатике для поступающих в ВУЗ на специальность ИУС и КСД в 2002 году. Уровень этой задачи 6 балов из 60 возможных при выделении на все задачи 3 часов времени.
Тема вроде бы называется "Искусство программирования" - так причем здесь задача школьного уровня? Название: Re: Искусство программирования - 8 Отправлено: EvilMax от Октябрь 23, 2008, 10:56:20 Задачка простая. Усложнение в том, чтобы написать как можно более компактный и эффективный код. Если не будут гуглить, то смысл есть.
Название: Re: Искусство программирования - 8 Отправлено: LazarusLong от Октябрь 23, 2008, 11:17:30 так причем здесь задача школьного уровня? Как я написал - задача тривиальная. Просто давно не было задач по программированию и мне хотелось поднять интерес к таким викторинам. Пускай и такой вот простой задачей. Я в свое время её решил минут за 10 (когда мне её показали я был на 5-м курсе). Честно говоря ожидал ответа на эту викторину в первый час после публикации. Но, видимо, народу действтительно угадывание картинок более интересно, чем программирование. Увы.А "Искусство программирования № N" - это просто сложившееся исторически на данном форуме заглавие для задач по программированию. Название: Re: Искусство программирования - 8 Отправлено: Polyakov от Октябрь 23, 2008, 11:25:17 Эффективность программы обычно заключается в ее быстродействии, а минимизация кода - это величина обычно обратная быстродействию. Поэтому эффективность и компактность в программировании - это противоположные критерии, хотя не всегда угол их противоречий равен 180 градусам.
Раньше (когда была проблема с нехваткой оперативной памяти - 640К, 1, 2 или 4 М) на объем exe-модуля существенное влияние оказывала величина исходного кода и общепринято было его сокращать. Я даже помню как я был безмерно доволен собой когда для программы общим объемом где-то в 50-40 тыс.строк после очередной оптимизации кода удалось сократить exe-модуль с 400 до 320 Кбайт, что позволило для ПК на i486 с 8М оперативки увеличить производительность расчетов практически в 3-5 раз, то есть на определенные расчеты вместо 15-20 минут стало тратится 3-4 минуты. P.S. В данном случае быстродействие достигалось за счет освобождения оперативной памяти и уменьшения операций свопирования. Название: Re: Искусство программирования - 8 Отправлено: LazarusLong от Октябрь 23, 2008, 11:40:17 Эффективность программы обычно заключается в ее быстродействии, а минимизация кода - это величина обычно обратная быстродействию. Поэтому эффективность и компактность в программировании - это противоположные критерии, хотя не всегда угол их противоречий равен 180 градусам. В общем-то все правильно, единственное что печально что как на компактность так и на быстродействие программ, в последнее время все чаще плюют с пятого этажа. Потому как в связи с удешевлением железа и общим ростом производительности компьютеров вдруг выяснилось что самым дорогим ресурсом стало время, затрачиваемое на разработку. К примеру, одна контора написала тормозящее г...., зато первой и успела продать. А другая писала аналогичную программу, вылизала её до состояния полного шика, но продать её уже не может, так как все используют то самое г.... а инерция пользовательского мышления это такая вещь, которую перебороть крайне сложно.Название: Re: Искусство программирования - 8 Отправлено: EvilMax от Октябрь 23, 2008, 11:46:38 Да, как правило, оптимизация по быстродействию часто противоположна оптимизации по размеру. Но быстродействие зависит и от скорости загрузки, т.е. от размера исполняемого кода и объёма данных. Так что компромисс иногда надо искать. А минимизация кода за счёт более профессионально составленного алгоритма, скорее всего, приведёт и к росту быстродействия. Для небольших алгоритмов можно и мозгами покрутить, как их оптимизировать и по размеру и по скорости.
Ну а маркетинг... речь не о нём в этой теме. Название: Re: Искусство программирования - 8 Отправлено: zer_owlet от Октябрь 24, 2008, 10:54:08 мужики, хорош спамить! давайте код, а не ваши расмазывания мысли по стеклу! это не ученый совет, тут правктику показать надо )))
ЗЫ: я в этой задаче пролетаю по фильтру языков... Название: Re: Искусство программирования - 8 Отправлено: Alder от Октябрь 24, 2008, 11:10:07 zer_owlet, напиши на php. Я думаю, что поймем код.
Название: Re: Искусство программирования - 8 Отправлено: LazarusLong от Октябрь 24, 2008, 11:29:59 Специально для него сделаю исключение и приму код на пхп )))
Название: Re: Искусство программирования - 8 Отправлено: Alexandr от Январь 16, 2009, 05:21:44 Если не будут гуглить, то смысл есть. вот она подсказка к решению)) Название: Re: Искусство программирования - 8 Отправлено: artri от Январь 16, 2009, 10:04:18 Рискну предложить свое решение :)
Код: package test; З.Ы. Задачка простая. Усложнение в том, чтобы написать как можно более компактный и эффективный код. Если не будут гуглить, то смысл есть. Не гуглил...Название: Re: Искусство программирования - 8 Отправлено: pfa от Январь 17, 2009, 11:23:56 Рискну предложить свое решение Улыбка Ужос...Название: Re: Искусство программирования - 8 Отправлено: Storm от Январь 29, 2009, 11:51:29 Решение классика классикой ни компактное, ни красивое, ИМХО.... Но коль других уж нет...
Писал на Perl, на С будет аналогично, разве что вместо elsif придется флаг вешать. Выводит на экран: Код: $ ./iskus_prog8.pl Исходник: Код: (perl) #!/usr/bin/perl -w Зануление на Perl делать не обязательно было, но для алгоритма в целом этот момент важен. Название: Re: Искусство программирования - 8 Отправлено: artri от Январь 30, 2009, 02:01:15 пошли алгоритмы, а то сплошной флейм и оффтоп :)
|