P演復習-第7,8回
7/4(土)はFMSCTFを開催してたことと主催者側の都合が合わないこともあって勉強会を開催しませんでした。
今回はここにちょっと個人的に思ったことを書きたいと思います。
第7回
基本問題のperfect_number
配布資料に書いてあった公式を使って、
int num=(int)pow(2,p-1)*(int)(pow(2,p)-1);
って書いちゃいばいいんです。(数学的なことは別の人に聞いてください。)
powってのがいわゆる関数って呼ばれるもので、例えば
float num=pow(a,b);
この場合numにaのb乗の値を代入してくれます。
使った人がいるかわかりませんがhspでいうpowf()の事ですね。
基本課題のchess
こいつ出来たと思うんですけど、僕はこう書きました~
void setup() { size(600, 500); background(-1);//背景白 fill(0);//黒く塗る } void draw(){ for (int i=0; i<10; i++) {//y軸方向のループ for (int j=0; j<10; j++) {//x軸方向のループ rect(j*100, i*100, 50, 50);//一個目 rect(j*100+50, i*100+50, 50, 50);//一個目の(+50,+50)の位置に書く } } }
こうしてやるとコードが短くて済みます。
発展課題のmogura
これですけど、赤丸の位置をX,Y座標で管理するのいいんですけど、自分がこの方法でやってないので記事が書けません。
変数一つでやってしまったのでかなり大変でした。
しかも、端っこはランダムになってない・・・・・・
端っこの処理は再帰使ったり涙ループ使ったりいろんな方法があります。
第8回
基本課題のparapara
僕は、先輩がyoutubeにうpしてたFMS紹介動画をjpg(984枚)にして流しました~
色々頑張ったのに、先生からスルーされて悲しかったです(*_*)
この時役にたったのが
nf(j,3);
という関数です。
ただの4とかを004にしてくれて0で埋めてくれるんで、ファイル読む込む時にすごく便利でした~
基本課題のgachachart48
これの課題は、最大値を求めるアルゴリズムを組むことがメインだったんだと思うんですけど、別の方法があって、それが
sortnum=sort(num); max=sortnum[47];
っていう書き方です。完全にせこいです。
上のソースはnumの配列の中身を小さい順に並び替えてsortnumに返してくれます。
その並び替えた後のsortnum[47]は絶対に最大値です。
あとは、これがnumと同じかどうかを見てやればOKです。
基本課題のoneline
組む時に最初に考えたのが色と数字の対応です。
白→0,赤→1,黄→2,緑→3
って言う風に考えてあとはキーによって変数を変えていけばOKです。
int [] circle =new int [10];//配列変数の宣言10 void setup() { size(500, 100); } void draw() { for (int i=0; i<10; i++) { if (circle[i]==0)fill(-1);//circle[i]の値によって色が決まる。 if (circle[i]==1)fill(255, 0, 0); if (circle[i]==2)fill(255, 255, 0); if (circle[i]==3)fill(0, 255, 0); ellipse(i*50+25, 50, 50, 50);//円を10個書く } } void mousePressed() {//マウスが押されたら for (int j=0; j<10; j++) { if (dist(mouseX, mouseY, j*50+25, 50)<25) { circle[j]++;//色を変える if (circle[j]==4)circle[j]=0;//もし、緑の次だったら白にする } } } void keyPressed() {//キーが押されたら int local=circle[9];//まずは最高位の数を保管 for (int k=9; k>0; k--) { circle[k]=circle[k-1];//一個づつ移動させる } circle[0]=local;//最初には保管してたのを入れる }
これは、正確にはもうちょっといじらないとだめですね。(制限かければいいだけね)
今週言いたかったのはこのぐらいです。
P演習テーマ発表
今年のテーマは以下の通りです!
FMS B1のP発表会について
7/20 18:00~
5Fホール
VAIO一台にゼミのメンバー全員のプログラムを集めてください。
発表時間は90秒
#p演習
— 又 (@matatsuna) 2015, 7月 1
processingを使うこと
自宅,自宅から50m以内にあるものの模倣をしてください。
何かしらの動きがあること
何かしらの入力があること
3Dじゃなくてよい
自己紹介も含めて90秒
実際には60秒かも
バックアップも準備した方がいい
#p演習
— 又 (@matatsuna) 2015, 7月 1
提出点20点
配列繰り返し条件分岐関数
4*4=16点
インデント系4点
発表点10点
オリジナリティー
一人しかいなかったら5点
かぶったらその数だけ-1点
#p演習
— 又 (@matatsuna) 2015, 7月 1
頑張りましょう!
最近、雨が強かったり台風が来る来ないとかいろいろあるので気を付けましょう!
次回はtwitterにて連絡します。
(*睡眠は重要です*)