Программисты, поясните что это
-
- Posts: 11
- Joined: 25 Apr 2006 06:48
- Location: Japan
Программисты, поясните что это
Программисты, поясните что это, please.
задачка для разминки мозгов для программистов, знающих язык C
Дан текст программы на C. Требуется найти три способа изменить в нем один
символ (не добавить, не убрать, не переставить - изменить один символ), так,
чтобы программа стала печатать 20 звездочек.
Oдин ответ найти относительно легко. Постарайтесь найти три разных.
правильных ответа есть только три, насколько известно.
Программа:
main()
{
int i, N=20;
for(i = 0 ; i < N ; i--)
printf("*");
}
_________________
задачка для разминки мозгов для программистов, знающих язык C
Дан текст программы на C. Требуется найти три способа изменить в нем один
символ (не добавить, не убрать, не переставить - изменить один символ), так,
чтобы программа стала печатать 20 звездочек.
Oдин ответ найти относительно легко. Постарайтесь найти три разных.
правильных ответа есть только три, насколько известно.
Программа:
main()
{
int i, N=20;
for(i = 0 ; i < N ; i--)
printf("*");
}
_________________
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Программисты, поясните что это
Ryzhusya wrote:Программисты, поясните что это, please.
задачка для разминки мозгов для программистов, знающих язык C
Дан текст программы на C. Требуется найти три способа изменить в нем один
символ (не добавить, не убрать, не переставить - изменить один символ), так,
чтобы программа стала печатать 20 звездочек.
Oдин ответ найти относительно легко. Постарайтесь найти три разных.
правильных ответа есть только три, насколько известно.
Программа:
main()
{
int i, N=20;
for(i = 0 ; i < N ; i--)
printf("*");
}
_________________
вообщето она и так 20 должна печатать.
имеется ввиду чтото типа
Code: Select all
int i, N=21;
for(i = 0 ; i < N ; i--)
Code: Select all
int i, N=20;
for(i = 0 ; i <= N ; i--)
Code: Select all
int i, N=20;
for(i = -1 ; i < N ; i--)
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
Re: Программисты, поясните что это
A. Fig Lee wrote:вообщето она и так 20 должна печатать.
Должна - не должна, а напечатает гораздо больше 20-ти.
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 1609
- Joined: 03 Feb 2004 11:19
- Location: Moscow
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 8255
- Joined: 23 Jul 2003 03:53
- Location: SPb - KW - NY - CT - MD
Вопрос, конечно, интересный...
Но у меня, почему-то, впечатление, что именно любители такого рода головоломок написали огромное количество кода, с которым приходится сталкиваться ежедневно. Когда этот код рано или поздно перестает работать, то самым разумным и быстрым оказывается - просто выбросить его к чертовой матери, и переписать заново, чтобы получился именно код, а не головоломка...
Но у меня, почему-то, впечатление, что именно любители такого рода головоломок написали огромное количество кода, с которым приходится сталкиваться ежедневно. Когда этот код рано или поздно перестает работать, то самым разумным и быстрым оказывается - просто выбросить его к чертовой матери, и переписать заново, чтобы получился именно код, а не головоломка...
LG - Life's good.
But good life is much better.
But good life is much better.
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
SVK wrote:Вопрос, конечно, интересный...
Но у меня, почему-то, впечатление, что именно любители такого рода головоломок написали огромное количество кода,
Сомневаюсь. Такие задачи очень любят чистые теоретики. На практике нужно решать строго противоположные задачи повернуть мозги в противоположную сторону достаточно сложно.
с которым приходится сталкиваться ежедневно. Когда этот код рано или поздно перестает работать, то самым разумным и быстрым оказывается - просто выбросить его к чертовой матери, и переписать заново, чтобы получился именно код, а не головоломка...
Угу. Некоторые считают что
for (i=0,b=2,c=3;keyPress();i++){чего-то там} жутким хакерским приемом и устраивают истерику что сейчас он по-хакерски пишет, а завтра топор принесет.
-
- Уже с Приветом
- Posts: 8255
- Joined: 23 Jul 2003 03:53
- Location: SPb - KW - NY - CT - MD
KP580BE51 wrote:Угу. Некоторые считают что
for (i=0,b=2,c=3;keyPress();i++){чего-то там} жутким хакерским приемом и устраивают истерику что сейчас он по-хакерски пишет, а завтра топор принесет.
Ну, не надо передергивать.
1) про топоры никакой речи, и даже никаких намеков, вообще не было - замечание просто игнорируется
2) насчет исходной "головоломки" - пояснение: претензии вызывает абсолютно бессмысленное требование исправить явную ошибку в коде "с помощью изменения одного символа кода" - ???!!! По мне - более глупое требование придумать трудно... Именно такие превоначальные "тренировочные" требования приводят в дальнейшем к любви и привычке писать совершенно неприемлемый для дальнейшего использования код...
Таких теоретиков нельзя подпускать на пушечный выстрел к реальной работе.
3) к примеру от KP580BE51 вообще никаких особых претензий и нет. Ну кроме как: в сколько-нибудь серьезном проекте названия переменных b, c, и даже i говорят обычно о полном отсутствии дум о будущей судьбе этого кода... В общем - "гори оно огнем, когда я получу свои почасовые..."
4) в качестве другого примера, из сотен других, которые я имел в виду в первоначальном постинге, могу привести такой реальный фрагмент (с заменой переменных на чуть более абстрактные имена):
Code: Select all
++(*((ULONG*)((char*)(((PSPECIALENTRYRECORD)
(prb123->spRecordKey))->spRecordID)
+sizeof(RecordID)-sizeof(ULONG))));
Я действительно устроил истерику в компании, когда мне пришлось разбираться, почему программа с такими вот фрагментами иногда выдает сомнительные результаты после нескольких лет якобы успешного использования. Мне милостливо разрешили эти места исправить.
Немного спустя я решил проверить по системе архивирования версий, откуда этот код произошел. Оказалось, лет 10 назад его написал мой нынешний начальник...
LG - Life's good.
But good life is much better.
But good life is much better.
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
SVK wrote:3) к примеру от KP580BE51 вообще никаких особых претензий и нет.
Все уже сказали.
Ну кроме как: в сколько-нибудь серьезном проекте названия переменных b, c, и даже i говорят обычно о полном отсутствии дум о будущей судьбе этого кода... В общем - "гори оно огнем, когда я получу свои почасовые..."
Я вообще часто применяю и i и b и c. Я вообще не считаю нужным придумывать какое-то другое название переменной, если ее зона видимости влазит на один экран и ее назнавение очевидно.
Code: Select all
++(*((ULONG*)((char*)(((PSPECIALENTRYRECORD)
(prb123->spRecordKey))->spRecordID)
+sizeof(RecordID)-sizeof(ULONG))));
Тут согласен, попробовал его как-то более разумно отформатировать, ничего не получилось.
PS Стиль жутко вынь3.1 напоминает. Ой там такое любили.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
SVK wrote:Code: Select all
++(*((ULONG*)((char*)(((PSPECIALENTRYRECORD)
(prb123->spRecordKey))->spRecordID)
+sizeof(RecordID)-sizeof(ULONG))));
Я действительно устроил истерику в компании, когда мне пришлось разбираться, почему программа с такими вот фрагментами иногда выдает сомнительные результаты после нескольких лет якобы успешного использования. Мне милостливо разрешили эти места исправить.
классика жанра
называется secure your job for life
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Программисты, поясните что это
venco wrote:A. Fig Lee wrote:вообщето она и так 20 должна печатать.
Должна - не должна, а напечатает гораздо больше 20-ти.
а..
ну фиг с ним тады так:
Code: Select all
main()
{
int i, N=20;
for(i = 0 ; i < N ; N--)
printf("*");
}
Code: Select all
main()
{
int i, N=20;
for(i = 0 ; -i < N ; i--)
printf("*");
}
Code: Select all
main()
{
int i, N=20;
for(i = 0 ; i + N ; i--)
printf("*");
}
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
SVK wrote:2) насчет исходной "головоломки" - пояснение: претензии вызывает абсолютно бессмысленное требование исправить явную ошибку в коде "с помощью изменения одного символа кода" - ???!!!
Не понимаю, в чём претензии к задаче? Это именно головоломка, без кавычек, задана в соответствующем форуме, не программистском.
Почему не было столько эмоций по поводу бедной собачки, которую заставили бессмысленно носиться между двумя друзьями?
-
- Уже с Приветом
- Posts: 5102
- Joined: 11 Aug 2004 02:49
venco wrote:Не понимаю, в чём претензии к задаче? Это именно головоломка, без кавычек, задана в соответствующем форуме, не программистском.
Почему не было столько эмоций по поводу бедной собачки, которую заставили бессмысленно носиться между двумя друзьями?
Что значит бессмысленно? Если бы у Вас была собака, то Вы бы знали, что для собачки это в кайф и она это делает по собственному желанию. А насчет смысла - какой смысл в сбивании кегель пластиковым шаром например? Или когда двадцать два бугая один мяч перекатывают (с)?
-
- Уже с Приветом
- Posts: 8255
- Joined: 23 Jul 2003 03:53
- Location: SPb - KW - NY - CT - MD
venco wrote:SVK wrote:2) насчет исходной "головоломки" - пояснение: претензии вызывает абсолютно бессмысленное требование исправить явную ошибку в коде "с помощью изменения одного символа кода" - ???!!!
Не понимаю, в чём претензии к задаче? Это именно головоломка, без кавычек, задана в соответствующем форуме, не программистском.
Потому что развитие способностей исправлять такие ошибки такими (предлагаемыми) способами рождают "специалистов", которых просто нельзя близко подпускать к решению таких же задач в реальной жизни.
Из "непрограммистких" аналогий - ну... Например, в конечном итоге нельзя допускать к управлению финансами людей, которые успешно научились получать большую прибыль с помощью вскрывания сейфов, и других "методов" быстрого накопления капитала. Несмотря на то, что они наглядно продемонстрировали всем чрезвычайную "эффективность" своих методов...
Для достижения любой цели есть "правильные", "не очень правильные", и "недопустимые" методы. Не стоит устраивать соревнование по наилучшему использованию "недопустимых" (в реальной жизни) способов исправления программного кода.
А уж давать задачи на исправление кода программы для "непрограммистов" - ???
Это даже глупее, чем давать шахматные задачи "нешахматистам": "Выигрывает тот, кто забъет соперника шахматными фигурами насмерть, не используя шахматную доску!"
LG - Life's good.
But good life is much better.
But good life is much better.
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
SVK wrote:Из "непрограммистких" аналогий - ну... Например, в конечном итоге нельзя допускать к управлению финансами людей, которые успешно научились получать большую прибыль с помощью вскрывания сейфов, и других "методов" быстрого накопления капитала. Несмотря на то, что они наглядно продемонстрировали всем чрезвычайную "эффективность" своих методов...
А при чём тут управление финансами, даже если я задам головоломку про подбор кода сейфа?
А уж давать задачи на исправление кода программы для "непрограммистов" - ???
А нефизикам можно физические головоломки давать?
Это даже глупее, чем давать шахматные задачи "нешахматистам": "Выигрывает тот, кто забъет соперника шахматными фигурами насмерть, не используя шахматную доску!"
А можно здесь задать головоломку про обход шахматной доски конём? Это ведь тоже не по шахматным правилам - нет ни одного короля.
А про коня, который ходит 3x1?
У вас такое странное отношение к головоломкам вообще, или только на программистскую тему?
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 8255
- Joined: 23 Jul 2003 03:53
- Location: SPb - KW - NY - CT - MD
venco wrote:SVK wrote:Из "непрограммистких" аналогий - ну... Например, в конечном итоге нельзя допускать к управлению финансами людей, которые успешно научились получать большую прибыль с помощью вскрывания сейфов, и других "методов" быстрого накопления капитала. Несмотря на то, что они наглядно продемонстрировали всем чрезвычайную "эффективность" своих методов...
А при чём тут управление финансами, даже если я задам головоломку про подбор кода сейфа?
Ну, да, это можно. Так делал еще Майкл Корлеоне. Победители конкурсов потом ему и вскрывали, что нужно. А после этого - ноги в таз с цементом - и прямо в Гудзон...
LG - Life's good.
But good life is much better.
But good life is much better.
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD