Головоломка: Одним Движением Руки... (найдите три способа)
???????????: ???? ??????? ???????? ???????? ?????????, ??????? ???????? ???????? ?????????. ?? ??????? ????????? ????????????:
main()
{
int i, N=20;
for(i = 0 ; i < N ; i --)
printf("*");
}
???????? ????, ??? ??? ?? ????????. ? ?????????, ???? ??? ??? ????? ??? ????????? ??? ???? ? ????? ?????? ?????????? ????????, ??????? ?????? ??? ??????? ??? ?? ??????????. ? ????? ??????, ???? ??????? ???? ????????? ? ?? ???? ????? ??????????, ? ??? ??? ? ??????? ? ????????... ?? ??? ???, ???? ??? ????????? ?? ???? ?? ?????????. ??? ?? ??????, ??, ??? ? ???, ??????, ??????... ??, ???!, ????????? ??????? ??????? ??????????? ????????????, ??? ????????? ? ??????????? ?????????? ? ????? ???? ? ?????????.
?????? ???? ?????? ?? ?????, ??? ???? ?? ????????? ??? ????? ??????? ? ??????????? ? ???, ????? ?????????????????? ????????? ?????????????? ??? ?? ? ???? ????? ???????? ? ??????????? ???? ????? ???? ??????????. ??????? ???, ???????????, ?????? ??. ? ????? ? ???? ??? ????????? ?????? ????? ???? ??????? ? ?????? ??????? ??? ?????? (???? ??????? delete), ????? ????????? ?????????.
????, ??? ?????!
??????, ??? ??? ??? ????? ??????????? ?? ?????????????? ??????, ????? ??????? ??????????? ??????.
????????? ??? ?????????, ????? ??? ???????? 20 ?????????, ??????? ?????? ???? ?????? (????? ???????? ???? ??????, ???? ??????? ???? ??????, ???? ???????? ???? ?????? ?? ??????, ?? ?????? ????!). ???????? ??? ??????? ???? ??????, ??????? ??? ???.
? ?????, ??????? ??????? ?? ????? ?? ??????????? ???????? (Haifa Technical Talk), ??? ????? ??????? ?? ???? ??????? ??????? ? ???? ?????????? ??? ?????????, ??????? ??? ???????? ??????. ??, ? ? ?? ??????? ?????????????? ?????????? ? ????? ????????. ??????? ???????? ?????!
--- ????? ??? ?????? ?????, ?????? ??? ????????, ?????????? ?????? ????! ---
--- ???????? ????? ?????? ?? ????? ?????, ????? ??????? ????? ---
?????? ? ??????? ? ??????.
??????? 1:
for(i = 0 ; -i < N ; i --)
??????? 2:
for(i = 0 ; i < N ; N --)
??????? 3:
for(i = 0 ; i + N ; i --)
--- ????? ?????? ---
??????, ?? ?????????? ?? ????????? ????????, ??? ?? ?? ?????? ???????? ?????? ????? -- ????? ? ??? ?? ????? ? ?????????? ?????? ???? ? ?????? ???? ?? ????????? ?????? ??? ???-?? ??????
Comments
Anonymous
January 01, 2003
У задачи 4 решения: for(i = 0 ; ~i < N ; i --)Anonymous
January 01, 2003
> Исходно: цвет фона - silver, цвет текста - silver > Выделено: цвет фона - gray, цвет текста - black > Правильно? Интересно, а у меня выделенные синим на белом показывает...Anonymous
January 01, 2003
Вообще-то да, но это решение уже зависимо от платформы. Далеко не на любом процессоре -i == ~i Например, на обычном Intel x86 -1 = 0xFFFFFFFF, ~0xFFFFFFFF = 0, то есть промахнетесь на единичку. Например, для N==1 напечатаете две звездочки.Anonymous
January 01, 2003
> отличная задачка, а можно еще? Постараюсь. За очипятку - спасибо, исправлю.Anonymous
January 01, 2003
Просто если вы не определяете виртуальную машину, то полностью платформо-независимого языка не бывает. Если на конкретной машине ~-1 = 0, а на другой ~-1 = 1, то как ни крутись, а перемешивание логических побитных и арифметических операций не будет независимым.Anonymous
October 19, 2006
меняем i на N :) что тут решать. :))) int i, N = 20; for (i = 0; i < N; N--) Console.Write("*"); Console.ReadLine();
Хочу работать в Microsoft :)
Anonymous
October 19, 2006
меняем i на N !!! int i, N = 20; for (i = 0; i < N; N--) Console.Write("*"); Console.ReadLine();Anonymous
November 11, 2006
>Кстати, не выскажутся ли уважаемые читатели, как на их взгляд работает данный прием Исходно: цвет фона - silver, цвет текста - silver Выделено: цвет фона - gray, цвет текста - black Правильно? п.с. нашел 3 решения (1 и 2), а 3-е оказалось неверным, недоглядел :-). Придется продолжит развивать мышление в мозгу, а не на бумаге... :-)Anonymous
November 13, 2006
The comment has been removedAnonymous
November 13, 2006
Тьфу ты, с ответом погорячился конечно же ;)Anonymous
November 16, 2006
Секрет с строчке с циклом а надо Секрет в строчке с циклом отличная задачка, а можно еще? Вариант с N-- придумал сам, вариант с -i<N достаточно очевиден. А вот i+N это сила! На следующий день как разобрался с задачкой (подсмотрел ответы) пытался вспомнить или найти заново этот ответ... и не смог. Позор. Шаблонное мышление - ф топку.Anonymous
November 21, 2006
Спасибо! 20 мин времени ушло :)Anonymous
December 20, 2007
У задачи 4 варианта решения: for (i = 0 ; ~i < N ; i--) printf("*");Anonymous
December 20, 2007
У задачи 4 решения: for (i = 0 ; ~i < N ; i--) printf("*");Anonymous
January 22, 2009
А почему так происходит? Ведь Си создан как платформо-независимый язык. Я это понимаю так: везде, где возможно установить компилятор Си, результат компилирования программ будет идентичен. P. S. Вариант: for(i = 0 ; ~i < N ; i --) у меня тоже не работает, печатается лишняя звездочка.