C++红旗之最短形式:500多字符且无法遵守原题规则
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++红旗之最短形式:500多字符且无法遵守原题规则,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2793字,纯文字阅读大概需要4分钟。
内容图文
![C++红旗之最短形式:500多字符且无法遵守原题规则](/upload/InfoBanner/zyjiaocheng/1118/8189241eb2f74faeb66aaf220d99e5fb.jpg)
已经尽力了。继续深入压缩代码的方法肯定很诡异了。
参考了基于高级一些的Mathematica下的办法:
list=Table[Manipulate[With[{p=Rest@pts,pt=First@pts},Graphics[{If[testpoint[p,pt],Pink,Cyan],Polygon@p},PlotRange->3{{-1,1},{-1,1}},ImageSize->{380,415},PlotLabel->Text[Style[If[testpoint[p,pt],"在其中","已出局"],FontFamily->"Arial",If[testpoint[p,pt],Red,Blue],30]]]],{{pts,{{0,0},{x,1/2},{-1,-1},{2,-3/2},{1,2},{0,1}}},Sequence@@(3{{-1,-1},{1,1}}),Locator,LocatorAutoCreate->{4,Infinity}},SaveDefinitions->True,Initialization:>((*test if point pt inside polygon poly*)testpoint[poly_,pt_]:=Round[(Total@Mod[(#-RotateRight[#])&@(ArcTan@@(pt-#)&/@poly),2Pi,-Pi]/2/Pi)]!=0)],{x,-2,2.55,.1}];
Export["testWinding.gif",list]
输出这样的图片为了好看:
可能达到的最短C++代码(再短小于500字符基于当前方法也难)
// NOTE: compile with g++ filename.cpp -std=c++11
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <vector>
//#include <functional>
#define DIM1 600
#define DIM2 400
//#define DM1 (DIM1-1)
//#define DM2 (DIM2-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 GR(int,int);
unsignedchar BL(int,int);
#define F float
F e=1.e-7,p=3.14;
unsignedchar RD(int i,int j){
// YOUR CODE HERE#define E for(int k=0;k<5;k++){#define at(x,y) abs(x)>e?x>e?atan(y/x):y>0?atan(y/x)+p:atan(y/x)-p:y>0?p/2:-p/2return255;
}
bool Q(int i,int j,int* x){
F t[5],o;
E
t[k]=at((F)(x[k]-i),(F)(x[k+5]-j));
}
F tl=0.;
E
o=t[(k+1)%5]-t[k];
o+=o<-p?p:o>p?-p:0;
tl+=o;
}
returnabs(tl)>.5;
};
unsignedchar GR(int i,int j){
// YOUR CODE HEREint q[10]={100, 135, 43, 157, 65, 40, 149, 81, 81, 149},
r[10]={184, 220, 183, 207, 205, 168, 181, 191, 161, 199},
s[10]={183, 208, 204, 185, 220, 50, 22, 59, 27, 42},
t[10]={221, 259, 229, 239, 252, 135, 133, 157, 120, 156},
u[10]={220, 254, 237, 231, 258,83, 66, 100, 62, 89};
return Q(i,j,q)||Q(i,j,r)||Q(i,j,s)||Q(i,j,t)||Q(i,j,u)?255:0;
}
unsignedchar BL(int i,int j){
// YOUR CODE HEREreturn0;
}
void pixel_write(int,int);
FILE *fp;
int main(){
fp = fopen("MathPic.ppm","wb");
fprintf(fp, "P6\n%d %d\n255\n", DIM1, DIM2);
for(int j=0;j<DIM2;j++)
for(int i=0;i<DIM1;i++)
pixel_write(i,j);
fclose(fp);
system("pause");
return0;
}
void pixel_write(int i, int j){
staticunsignedchar 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);
}
- 优点,代码已经进一步压缩到500多字符,大大缩短;
- 缺点,没有严格安装特定地方写代码,以及140x3的要求。
输出虽然近似,也是正常的红旗:
原文:http://blog.csdn.net/stereohomology/article/details/46463397
内容总结
以上是互联网集市为您收集整理的C++红旗之最短形式:500多字符且无法遵守原题规则全部内容,希望文章能够帮你解决C++红旗之最短形式:500多字符且无法遵守原题规则所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。