avva: (Default)
[personal profile] avva

Эта запись заинтересует только программистов, знающих язык C :)

Отличная задачка от [livejournal.com profile] yms, для разминки мозгов. Дан текст программы на C. Требуется найти три способа изменить в нем один символ (не добавить, не убрать, не переставить - изменить один символ), так, чтобы программа стала печатать 20 звездочек.

Программа:

main()
{
       int i, N=20;
       for(i = 0 ; i < N ; i--)
               printf("*");
}

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

Update: несколько человек предложили один возможный ответ, причем правильно. Но один ответ найти относительно легко. Постарайтесь найти три разных.

Update: первым правильный ответ написал [livejournal.com profile] shigin, но он знал эту задачу раньше. Первым нашел все три ответа сейчас [livejournal.com profile] feuerbach и почти одновременно с ним [livejournal.com profile] squadette. Я не открываю правильные ответы еще несколько часов, потом открою.

Update: Все, раскрываю все комментарии, и перестаю отвечать, верно или нет, проверьте себя сами по комментариям - правильные ответы есть в них в изобилии (поэтому не заглядывайте туда, если хотите сами решить). Очень многие нашли три правильных ответа; предлагались также другие варианты, но все они по тем или иным причинам не работают, правильных ответа есть только три, насколько известно.

Page 1 of 10 << [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] >>

Date: 2006-09-03 09:57 am (UTC)
From: [identity profile] rakshas.livejournal.com
Я не программировал сто лет, но думаю, что первый способ — «i--» на «N--»

Date: 2006-09-03 10:01 am (UTC)
From: [identity profile] kapahel.livejournal.com
Я не программист ни разу и С не знаю, поэтому позволю себе спросить: можно ли исправить i-- на N--?

Date: 2006-09-03 10:02 am (UTC)
From: [identity profile] knooper.livejournal.com
заменить пробел на 4 :3

Date: 2006-09-03 10:02 am (UTC)
From: [identity profile] aldanur.livejournal.com
Ну n-- и i+N были на IPSC'2005 (http://ipsc.ksp.sk/problems.php?arg_contest=ipsc2005), а вот третий способ — это уже интересно. Ладно бы ещё добавить…

Date: 2006-09-03 10:02 am (UTC)

Date: 2006-09-03 10:03 am (UTC)
From: [identity profile] tejblum.livejournal.com
i-- заменить на N--.

Date: 2006-09-03 10:03 am (UTC)
From: [identity profile] avva.livejournal.com
Верно, это один из трех.

Date: 2006-09-03 10:03 am (UTC)
From: [identity profile] avva.livejournal.com
Можно - это один из трех вариантов.

Date: 2006-09-03 10:04 am (UTC)
From: [identity profile] avva.livejournal.com
А еще два? :)

Date: 2006-09-03 10:04 am (UTC)
From: [identity profile] avva.livejournal.com
Верно, осталось еще два.

Date: 2006-09-03 10:05 am (UTC)

Date: 2006-09-03 10:05 am (UTC)
From: [identity profile] avva.livejournal.com
В смысле i =40? Нет, это не работает.

Date: 2006-09-03 10:06 am (UTC)
From: [identity profile] greena.livejournal.com
ooops, пропустил о трех способах :)

Date: 2006-09-03 10:06 am (UTC)
From: [identity profile] uzhin.livejournal.com
for ( i=0; i+N; i--)
?

Date: 2006-09-03 10:08 am (UTC)

Date: 2006-09-03 10:08 am (UTC)
From: [identity profile] 0qwerty0.livejournal.com
nice.
1, easy: for(i = 0 ; i < N ; N--)
2, nice: (i = 0 ; i + N ; i--)
3, no can do yet, will work on it.

Date: 2006-09-03 10:11 am (UTC)
From: [identity profile] shigin.livejournal.com
1. -i < N
2. i + N
3. N--

Старая задача, в свое время долго ее решал, а третий вариант нашел только месяца через 3, посмотрев на все это еще раз.

Date: 2006-09-03 10:12 am (UTC)
From: [identity profile] kapahel.livejournal.com
N = 0 вместо i = 0

Date: 2006-09-03 10:13 am (UTC)
From: [identity profile] ex-feuerbach769.livejournal.com
1. Заменяем ' ' на '-':
main()
{
       int i, N=20;
       for(i = 0 ;-i < N ; i--)
               printf("*");
}


2. Заменяем '<' на '+':
main()
{
       int i, N=20;
       for(i = 0 ; i + N ; i--)
               printf("*");
}


3. Заменяем 'i' на 'N':
main()
{
       int i, N=20;
       for(i = 0 ; i < N ; N--)
               printf("*");
}

Date: 2006-09-03 10:13 am (UTC)

Date: 2006-09-03 10:15 am (UTC)
From: [identity profile] squadette.livejournal.com
i + N
вместо i < N

yay

Date: 2006-09-03 10:16 am (UTC)
From: [identity profile] leonov.livejournal.com
< заменить на +

Date: 2006-09-03 10:16 am (UTC)
From: [identity profile] http://users.livejournal.com/_glav_/
main()
{
       int i, N=20;
       for(i = 0 ;-i < N ; i--)
               printf("*");
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
main()
{
       int i, N=20;
       for(i = 0 ; i < N ; N--)
               printf("*");
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
main()
{
       int i, N=20;
       for(i =40 ; i < N ; i--)
               printf("*");
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Date: 2006-09-03 10:17 am (UTC)
From: [identity profile] abvgd.livejournal.com
может, так?

N--

Date: 2006-09-03 10:18 am (UTC)
From: [identity profile] leonov.livejournal.com
и, конечно, i-- на N--
Page 1 of 10 << [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 05:17 pm
Powered by Dreamwidth Studios