Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Koch Curve"
https://onlinejudge.u-aizu.ac.jp/problems/ALDS1_5_C
・コッホ曲線
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #ALDS1_5_C : Koch Curve
/* Aizu Online Judge in C++ #ALDS1_5_C : Koch Curve https://onlinejudge.u-aizu.ac.jp/problems/ALDS1_5_C 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; string s; double vx,px,py,pi; int n,k,l; string f(int n){ if(n==0){ return ""; } return f(n-1)+"1"+f(n-1)+"4"+f(n-1)+"1"+f(n-1); } int main(void){ cin>>n; pi=acos(-1); vx=100.0/pow(3.0,n); s=f(n); l=s.size(); cout<<fixed<<setprecision(10)<<px<<" "; cout<<fixed<<setprecision(10)<<py<<"\n"; for(int i=0;i<l;i++){ px+=cos(k*pi/3.0)*vx; py+=sin(k*pi/3.0)*vx; cout<<fixed<<setprecision(10)<<px<<" "; cout<<fixed<<setprecision(10)<<py<<"\n"; k+=s[i]; } px+=cos(k*pi/3.0)*vx; cout<<fixed<<setprecision(10)<<px<<" "; cout<<fixed<<setprecision(10)<<py<<"\n"; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/