12月
24
この記事は、SYSKEN Advent Calendar 2024 12月24日の記事です。
はじめに
皆さん、こんにちは、今年で法律上大人になってしまった赤石匠です。
今夜はクリスマスイブですね。私はこの18年間、恋人がいたことは一度もないので今年も例年とかわらずひとりで過ごしています。
今回私は、SYSKEN Advent Calendar 2024のトリを任されました。去年もトリだったような…。今回の記事は、すこし長くなる予定なので前置きはこのくらいにしてさっそく本題へ移ります。
続きを読む
12月
24
この記事は、SYSKEN Advent Calendar 2023 12月24日の記事です。
はじめに
皆さん、こんにちは、後輩が優秀すぎてビビっている赤石匠です。
今夜はクリスマスイブですね。私は今夜も明日も誰かと過ごす予定がないのでMinecraftをしていると思います。
今回私は、SYSKEN Advent Calendar 2023の大トリを任されました。任されたからにはいいものを作りたいと思い、早めに準備を始めました。
続きを読む
12月
14
この記事は、SYSKEN Advent Calendar 2022 12月14日の記事です。
はじめに
皆さん初めまして、こんにちは、赤石匠です。
もう少しでクリスマスですね。私はクリスマス当日は予定があって遊ぶことはできませんが、ホワイトクリスマスになるといいですね。
ということで雪の結晶のような模様を描いてみましょう。プログラムで
本題
手順としては、
・どのようにして模様を描くか考える
今回の場合グラフは使わず、□と■を使ってマスを表します。
・どうやって模様を作るか
今回は、数式を使って、模様を描きます。
・プログラム作成
今回は、C++で、プログラムを組みました。マスを全て□で埋め、式で出てきたマスを■に変えていきます。
と、いう順でやっていきました。
今回使う数式はこちらです。
r=sin(nθ/k)
この式のnとkを変えるといろいろな模様ができます。
そして模様を描いてくれるプログラムがこちらです。
#include<bits/stdc++.h>
using namespace std;
int main(){
int size,n,k;
cin>>size>>n>>k;
vector<vector<int>>f(2*size,vector<int>(2*size));
for(int i=0;2*size>i;i++){
for(int j=0;2*size>j;j++){
f.at(i).at(j)=false;
}
}
for(double i=0;360>n*i/k;i+=0.01){
double r=sin(n*i/k);
double x=r*cos(i);
double y=r*sin(i);
f.at(floor((double)size*y+size)).at(floor((double)size*x+size))=true;
}
for(int i=2*size-1;0<=i;i--){
for(int j=0;2*size>j;j++){
if(f.at(i).at(j))
cout<<"■";
else{cout<<"□";}
}
cout<<endl;
}
}
遊ぶ
このプログラムにサイズ n kの値を打ち込むと
(例1)
10 2 1
このような模様が現れます。
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□■■■■■□□□□□□■■■■■□□
□□■□□□■■□□□□■■□□□■□□
□□■□□□□■■□□■■□□□□■□□
□□■□□□□□■■■■□□□□□■□□
□□■■□□□□□■■□□□□□■■□□
□□□■■□□□□■■□□□□■■□□□
□□□□■■□□□■■□□□■■□□□□
□□□□□■■■■■■■■■■□□□□□
□□□□□■■■■■■■■■■□□□□□
□□□□■■□□□■■□□□■■□□□□
□□□■■□□□□■■□□□□■■□□□
□□■■□□□□□■■□□□□□■■□□
□□■□□□□□■■■■□□□□□■□□
□□■□□□□■■□□■■□□□□■□□
□□■□□□■■□□□□■■□□□■□□
□□■■■■■□□□□□□■■■■■□□
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
「雪の結晶に見えない!」と思う人もいると思います。
そうです。これは花の模様です。雪の結晶のような花の模様です。
なぜ花の模様になったのかは、聞かないでください。 実力不足です。
そんなことはさておき、つぎは、このように打ち込んでみます。
(例2)
20 3 4
これで、プログラムを実行すると、
□□□□□□□□□□□□□□□■■■□□□□■■■□□□□□□□□□□□□□□□
□□□□□□□□□□□■■■■■□■■■■■■□■■■■■□□□□□□□□□□□
□□□□□□□□□■■■□□□□■■■□□■■■□□□□■■■□□□□□□□□□
□□□□□□□□■■□□□□□■■□□□□□□■■□□□□□■■□□□□□□□□
□□□□□□□■■□□□□□■■□□□□□□□□■■□□□□□■■□□□□□□□
□□□□□□■■□□□□□■■□□□□□□□□□□■■□□□□□■■□□□□□□
□□□□□■■□□□□□□■□□□□□□□□□□□□■□□□□□□■■□□□□□
□□□□■■□□□■■■■■■□□□□□□□□□□■■■■■■□□□■■□□□□
□□□□■□■■■■□□■□■■■□□□□□□■■■□■□□■■■■□■□□□□
□□□□■■■□□□□□■□□□■■■□□■■■□□□■□□□□□■■■□□□□
□□□■■□□□□□□□■□□□□□■■■■□□□□□■□□□□□□□■■□□□
□□■■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■■□□
□□■■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■■□□
□■■■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■■■□
□■□■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■□■□
■■□■■□□□□□□□■■□□□□■■■■□□□□■■□□□□□□□■■□■■
■□□□■□□□□■■■■■■■■□■■■■□■■■■■■■■□□□□■□□□■
■□□□■□□■■■□□□■■□■■■■■■■■□■■□□□■■■□□■□□□■
■□□□■■■■□□□□□□■■■□■■■■□■■■□□□□□□■■■■□□□■
■□□□□■■□□□□□□□□□■■■■■■■■□□□□□□□□□■■□□□□■
■□□□□■■□□□□□□□□□■■■■■■■■□□□□□□□□□■■□□□□■
■□□□■■■■□□□□□□■■■□■■■■□■■■□□□□□□■■■■□□□■
■□□□■□□■■■□□□■■□■■■■■■■■□■■□□□■■■□□■□□□■
■□□□■□□□□■■■■■■■■□■■■■□■■■■■■■■□□□□■□□□■
■■□■■□□□□□□□■■□□□□■■■■□□□□■■□□□□□□□■■□■■
□■□■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■□■□
□■■■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■■■□
□□■■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■■□□
□□■■□□□□□□□□■□□□□□□■■□□□□□□■□□□□□□□□■■□□
□□□■■□□□□□□□■□□□□□■■■■□□□□□■□□□□□□□■■□□□
□□□□■■■□□□□□■□□□■■■□□■■■□□□■□□□□□■■■□□□□
□□□□■□■■■■□□■□■■■□□□□□□■■■□■□□■■■■□■□□□□
□□□□■■□□□■■■■■■□□□□□□□□□□■■■■■■□□□■■□□□□
□□□□□■■□□□□□□■□□□□□□□□□□□□■□□□□□□■■□□□□□
□□□□□□■■□□□□□■■□□□□□□□□□□■■□□□□□■■□□□□□□
□□□□□□□■■□□□□□■■□□□□□□□□■■□□□□□■■□□□□□□□
□□□□□□□□■■□□□□□■■□□□□□□■■□□□□□■■□□□□□□□□
□□□□□□□□□■■■□□□□■■■□□■■■□□□□■■■□□□□□□□□□
□□□□□□□□□□□■■■■■□■■■■■■□■■■■■□□□□□□□□□□□
□□□□□□□□□□□□□□□■■■□□□□■■■□□□□□□□□□□□□□□□
なんだか複雑な模様ができましたね。
おわりに
模様を作ろうとしていたときは、グラフにしてやろうとしていたのですが、グラフにするやり方を知らなかったので、正方形をたくさん並べて方眼紙のようにすることができたので、まあまあ、そこそこいいものが作れたのではないでしょうか。
次回のSYSKEN Advent Calendar 2022は12月16日、担当はmaronnです。お楽しみに。