Прислал мне тут один программист смешную круглую программку на языке C, там был #define определяющий подчерк, а потом из подчерков и минусов был нарисован круг:
При вычислении этого выражения получалось число π. Ну на самом деле, там чего-то съехало и вместо π получалось 0.250, но не в этом дело.
Сначала я хотел «отладить» эту программку, но подумал, что таких программ, где кодом нарисована какая-то картинка, вообще-то много. А ведь можно придать этому геометрический смысл!
Сказано — сделано, вот программа для вычисления числа π:
Получается 3.1666…, но если нарисовать картинку побольше, то точность возрастет.
Площадь круга πR², то есть если поделить площадь круга на площадь квадрата, сторона которого равна радиусу этого круга, то получится π. Берем две переменных и рисуем круг инкрементами одной переменной, а квадрат инкрементами другой. В результате, соотношение этих переменных равно соотношению площадей фигур.
UPDATE: Собственно, вдохновившая меня программка, также оказалась с геометрическим смыслом.
Её историю и полный текст можно найти тут: International Obfuscated C Code Contest,
а пояснения есть в комментариях к этому посту.
Однако, он от меня ускользнул. Кстати, в комментариях приведен вариант, подправленный под современные препроцессоры, но в нём геометрический смысл уже частично утерян, так как диаметр круга уже зашит в константу (0xF).
Остаётся посыпать голову пеплом и порадоваться, что мой вариант более прозрачный, и что я, пусть и не прямо (и даже не сознавая этого), но сослался-таки на первоисточник идеи.
_-_-_-_ _-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_ _-_-_-_
При вычислении этого выражения получалось число π. Ну на самом деле, там чего-то съехало и вместо π получалось 0.250, но не в этом дело.
Сначала я хотел «отладить» эту программку, но подумал, что таких программ, где кодом нарисована какая-то картинка, вообще-то много. А ведь можно придать этому геометрический смысл!
Сказано — сделано, вот программа для вычисления числа π:
#define O o++; #define K k++; double o = 0; double k = 0; main() { O O O O O O K K K K K K K K O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O O O O O K K K K K K K K O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O printf("%f\n",o/k); }
Получается 3.1666…, но если нарисовать картинку побольше, то точность возрастет.
Площадь круга πR², то есть если поделить площадь круга на площадь квадрата, сторона которого равна радиусу этого круга, то получится π. Берем две переменных и рисуем круг инкрементами одной переменной, а квадрат инкрементами другой. В результате, соотношение этих переменных равно соотношению площадей фигур.
UPDATE: Собственно, вдохновившая меня программка, также оказалась с геометрическим смыслом.
Её историю и полный текст можно найти тут: International Obfuscated C Code Contest,
а пояснения есть в комментариях к этому посту.
Однако, он от меня ускользнул. Кстати, в комментариях приведен вариант, подправленный под современные препроцессоры, но в нём геометрический смысл уже частично утерян, так как диаметр круга уже зашит в константу (0xF).
Остаётся посыпать голову пеплом и порадоваться, что мой вариант более прозрачный, и что я, пусть и не прямо (и даже не сознавая этого), но сослался-таки на первоисточник идеи.