Sep 20

M67的那篇文章在这:http://www.matrix67.com/blog/archives/1598
很久之前就转到自己博客上来了,在这里,当时也没细看,当然也没看明白。
今天仔细分析了下,终于明白怎么回事了。
先用字符串“I love you to death! You are the cutest and sweetest girl I've ever met.”生成程序为:

     #include      <stdio.h>
   main(t ,_,a)  char*a;{return
 t<1?main(*a,a[-t],"=a-1kj3gnm:q\
ebh_cf*<r.d>i^+?,()[?qzyrjuvcdefg\
h,!kbpolwxs'.t main(")&&a[-t]&&main
(t-1,_,a):t/2?_==*a?putchar(32[a])
  :_%115<36||main(t,_,a+1):main(
    0,t,")?r<g:?1<3?+<#?#m:}(\
      w+b_?1<}3?tt(yk:?+|b:\
        ?n3+:>+?([m?>.::+\
          :>+?e)kr?)ig{\
            :?y:~g:k?\
              ,:+^")
                ;}

是一个很漂亮的心形,用gcc编译执行输出:

i love you to death! you are the cutest and sweetest girl i've ever met.#

Mar 28

来源:www.matrix67.com

代码分析在这里

Mar 24

      最近突然冒出一个想法:怎样写一个程序,它可以输出自己的源代码?

      我们都写过这个程序:

#include<stdio.h>
main() { printf("Hello, world");}

      它会输出:

Hello, world

      于是很自然地,要写出一个输出自己的程序,可以尝试这样写:

#include<stdio.h>
main() { printf("#include<stdio.h>\nmain() { printf(\"#include<stdio.h>\n main() { ...\") } ");}

      它会输出:

#include<stdio.h>
main() { printf("#include<stdio.h>
main() { ..."
) }

      你可以继续这样写下去,但你会发现自己已经陷入死循环了,写到printf那就得返回去加上一段。显然像上面这样是做不到的。是不是说这样的程序就不存在呢?答案是否定的,不仅写得出来,而且各种各样,五花八门的都有。

Mar 11
    前面写了一篇文章“绝对强大:太极图极坐标函数”,里面用给出了一种方式画那个太极图,这种方法确实在所有t(角度)都是以三角函数出现的情况下很好,而且也很快,昨天晚上突然想到我这个方法似乎太笨了,我为什么不直接用r和t作变量,输出(r*Cos[t],r*Sin[t])呢?
于是今天就试了一下,发现这样做是简单,但是相当的慢,当r取100个点,t取1000个点时很长时间也算不出来,我只好让t取100个点。
像下面这样:

可能是用这种方法式子中有大量的三角函数运算,所以很浪费时间,而上篇文章中的那种方法巧妙的把大部分三角函数去掉了,所以特别的快。

Mar 10

M67的博客上发现了这张图。由于Mathematica里没有画极坐标隐函数的函数,所以他上面只写了一个Free Pascal的程序。我研究了一下,终于用Mathematica画出了上面一样的图形。像下面这样: