Compartir a través de


Головоломка: Одним Движением Руки... (найдите три способа)

???????????: ???? ??????? ???????? ???????? ?????????, ??????? ???????? ???????? ?????????. ?? ??????? ????????? ????????????:

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 removed

  • Anonymous
    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 --) у меня тоже не работает, печатается лишняя звездочка.