Tweetable Mathematical Art
比赛,用
三段 140 字以内代码生成一张1024*1024图,
感觉挺cool。
自己模(chao)仿(xi)了几张,感觉后三张不忍直视。
5张1024*1024图片的代码如下:
参赛者编写的代码会被插进下面这段程序当中
【cool】三段 140 字以内代码生成一张图
自己模(chao)仿(xi)了几张,感觉后三张不忍直视。
5张1024*1024图片的代码如下:
/*picture1
unsigned char RD(int i,int j){
return i&&j?((i%j)|(j%i)):0;}
unsigned char GR(int i,int j){
return i&&j?((i%j)|(j%i)):0;}
unsigned char BL(int i,int j){
return i&&j?((i%j)|(j%i)):0;}
*/
/*
picture2
unsigned char RD(int i,int j){
return i&&j?(i%j)&(j%i):0;}
unsigned char GR(int i,int j){
return i&&j?(i%j)|(j%i):0;}
unsigned char BL(int i,int j){
return i&&j?(i%j)^(j%i):0;}
*/
/*
picture3
unsigned char RD(int i,int j){
return i&&j?(i%j)+(j%i):0;}
unsigned char GR(int i,int j){
return i&&j?(i%j)+(j%i):0;}
unsigned char BL(int i,int j){
return i&&j?(i%j)+(j%i):0;}
/*
/*
picture4
unsigned char RD(int i,int j){
return i&&j?(i%j)*(j%i):0;}
unsigned char GR(int i,int j){
return i&&j?(i%j)+(j%i):0;}
unsigned char BL(int i,int j){
return i&&j?(i%j)&(j%i):0;}
*/
/* picture5
/* picture5
unsigned char RD(int i,int j){
return (int((i+j))/3);}
unsigned char GR(int i,int j){
return (int((i|j)/2));}
unsigned char BL(int i,int j){
return (int((i&j)/5));}
*/
参赛者编写的代码会被插进下面这段程序当中
// NOTE: compile with g++ filename.cpp -std=c++11
#include <iostream>
#include <cmath>
#include <cstdlib>
#define DIM 1024
#define DM1 (DIM-1)
#define _sq(x) ((x)*(x)) // square
#define _cb(x) abs((x)*(x)*(x)) // absolute value of cube
#define _cr(x) (unsigned char)(pow((x),1.0/3.0)) // cube root
unsigned char RD(int i,int j);
unsigned char GR(int i,int j);
unsigned char BL(int i,int j);
void pixel_write(int,int);
FILE *fp;
int main(){
fp = fopen("MathPic4.ppm","wb");
fprintf(fp, "P6\n%d %d\n255\n", DIM, DIM);
for(int j=0;j<DIM;j++)
for(int i=0;i<DIM;i++)
pixel_write(i,j);
fclose(fp);
return 0;
}
void pixel_write(int i, int j){
static unsigned char color[3];
color[0] = RD(i,j)&255;
color[1] = GR(i,j)&255;
color[2] = BL(i,j)&255;
fwrite(color, 1, 3, fp);
}
参考
Matrix67 blog
【cool】三段 140 字以内代码生成一张图