lp6m’s blog

いろいろかきます

AVのタイトルをマルコフ連鎖のプログラムにかけた

深夜に思いついて1時間くらい遊んだだけの話。もっとGTAのMODをビルドした話とかXamarinでアプリつくってる話もあるけどめんどくさいので書かない.

適当にスクレイピングしてAVのタイトルをダウンロードする
rubyはしらないのでCっぽいのでてきとうにgoogleruby whileとかruby for ってしらべてかいてるのでてきとう。

マルコフ連鎖のプログラムにかけて何回か表示する

ここを参考にした.

AVのタイトルは比較的短いものもあれば長いものもあるので、分けてみた.
エラーもでることあるけどとりあえず何回か実行した結果

長いタイトルの場合

短いタイトルの場合

あんまりうまくいかなかった。いろんな種類がありすぎるし、もともとのデータをなんらかの方法で絞れば良さそう。
頑張ったらおもしろくなるかもしれないし、だれかやってみて

・・・・オマ○コ航空・・・

cocos2d-x: 角丸のボタン用の画像をつくる

cocos2d-xでゲームを作ってる。わからないことだらけで全然進まない。少しずつわかってきた感じ。

角丸のボタンってデザインがいいかんじなのでゲームで使いたいと思ってまああるだろうとおもって調べてみたら公式にはない。

ここにスプライトに角丸のマスクをする方法が載ってたのでコピー。(ほとんどこれのおかげ.自分で追加したの10行程度・・)
http://discuss.cocos2d-x.org/t/how-can-i-create-sprite-with-rounded-corner/15403/7discuss.cocos2d-x.org
あとは適当に色設定したり、文字表示する用にした。
RoundedBoxSpriteというクラス名にした。

RoundedBoxSprite::setParam(Size size,Color3B BGColor,float CornerRadius,int CornerSegment,std::string String,Color3B FontColor,int FontSize)

CornerRadiusは角の円の半径,CornerSegmentは角あたりの点の数(増やすほど円に近づく).
※2015 04/03 修正 
cocos2d-x Ver3.2だと正常に動作しません(スプライトを描画すると背景が真っ白になる)
解決策:
AppDelegate.cppに以下を追加

void AppDelegate::initGLContextAttrs()
{
    //set OpenGL context attributions,now can only set six attributions:
    //red,green,blue,alpha,depth,stencil
    GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8};

    GLView::setGLContextAttrs(glContextAttrs);
}

AppDelegate.hのAppDelegateClassのpublicメソッドに

    virtual void initGLContextAttrs();

を追加.
サンプル:
f:id:lp6m:20150402052229p:plain

使い方はこんな感じで。

#include "RoundedBoxSprite.h"
bool HelloWorldScene::init(){
    if(!Layer::init()){
        return false;
    }
    Color3B MyColor[6]={
        Color3B(111,201,88),
        Color3B(1,186,184),
        Color3B(65,154,210),
        Color3B(253,96,167),
        Color3B(230,75,133),
        Color3B(253,168,0)
    };
    std::string strarray[6]={
        "トレーニング",
        "プロフィール",
        "お知らせ",
        "オプション",
        "ヘルプ",
        "クレジット"
    };
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    
    for(int i=0;i<6;i++){
        auto test = RoundedBoxSprite::create();
        test->setParam(Size(350,80),MyColor[i],10,10,strarray[i],Color3B::WHITE,40);
        test->setPosition(visibleSize.width/2,visibleSize.height-250-i*100);
        this->addChild(test);
    }
}

コードはここ。
RoundedBoxSprite.cpp

RoundedBoxSprite.h

CODE THANKS FESTIVAL 2014 A日程に参加してきました

CODE THANKS FESTIVAL 2014 A日程に参加してきました.

fc2blogから移転しました.
CODE FESTIVAL本戦には予選落ちで参加できなかった.予選落ち救済コンテストみたいな感じ。
1回生で予選通った人たくさんいて悲しいなあ(解いてないから当たり前)とか思いながら,企業の金で東京に行った.企業の金サイコー.
https://twitter.com/lp6m/status/541114174504730624

前日15時に品川についた.ホテルにチェックインしたあと東京の友達が10時まで用事があるみたいだからぼっちで回ってた.
21時からのABCにマクドで参加した.
次の日までしか持たないお菓子を買ってしまったので仕方なく友達と二人で食べた.
https://twitter.com/lp6m/status/541250395670974464

朝8時くらいに起きてだらだらした.
お弁当とTシャツが配られた.企業のお金ってすごい.
f:id:lp6m:20141208031835j:plain





コンテスト結果:
515点/800 22位/78.
f:id:lp6m:20141208030441p:plain
実は開始3分は1位だった.Eまで解いたときに6位〜とか言ってた.


F問題が全く方針たたなかったのでH問題の部分点15点を取った.
https://twitter.com/lp6m/status/541445710378311681

f:id:lp6m:20141208030333p:plain

なんでみんな通してるんだ?とか思いながらF問題う〜〜っていってよくわからないコードをかいていた.
20分くらいして,あぁ二つ目の要素が1になってるやつの一つ目の要素の人たちほげほげとか気づいた.

A:計算
B:問題文の意味がよくわからなかったので先Cをといた.next_permutationは使わなかった.

int n;
int data[3];
int search(int a,int b,int c){
	int ima = 0;
	int rst = 0;
	while(ima<n){
		if(rst%3==0) ima+=data[a];
		if(rst%3==1) ima+=data[b];
		if(rst%3==2) ima+=data[c];
		rst++;
	}
	return rst;
}
int main(){
	cin >> n >> data[0] >> data[1] >> data[2];
	int ans = inf;
	ans = min(search(0,1,2),ans);
	ans = min(search(0,2,1),ans);
	ans = min(search(1,0,2),ans);
	ans = min(search(1,2,0),ans);
	ans = min(search(2,0,1),ans);
	ans = min(search(2,1,0),ans);
	cout << ans << endl;
	return 0;
}

C:計算
D:うまいやり方ありそう・・とか思ったけど場合分けなんて数個しかないやと思って丁寧に書いた.

int n,q;
int main(){
	cin >> n >> q;
	REP(i,q){
		int a,b,s,t;
		cin >> a >> b >> s >> t;
		if(b<=s||t<=a){
			cout << (t-s)*100 << endl;
			continue;
		}
		if(a<=s&&t<=b){
			cout << 0 << endl;
			continue;
		}
		if(s<=a&&b<=t){
			cout << ((a-s)+(t-b))*100 << endl;
			continue;
		}
		if(a<=s&&b<=t){
			cout << (t-b)*100 << endl;
			continue;
		}
		if(s<=a&&t<=b){
			cout << (a-s)*100 << endl;
			continue;
		}

	}
	return 0;

E:とりあえず全部ためして書いて提出してからTLEしそうって気づいて書き直した.
TLEするコード:

int r,c,m,n;
int ban[100][100];
int funcc[4][5000];
int countsouth(){
	int rst = 0;
	REP(i,r){
		REP(j,c){
			if(ban[i][j]%4==0) rst++;
		}
	}
	return rst;
}
void move(int ra,int rb,int ca,int cb){
	FOR(i,ra-1,rb){
		FOR(j,ca-1,cb){
			ban[i][j]++;
		}
	}
}

bool search(int tejun){
	REP(i,n){
		if(i!=tejun){
			move(funcc[0][i],funcc[1][i],funcc[2][i],funcc[3][i]);
		}
	}
	if(countsouth()==m) return true;
	else return false;
}
int main(){
	cin >> r >> c >> m;
	cin >> n;
	REP(i,100) REP(j,100)  ban[i][j] = 0;o
	REP(i,n){
		REP(j,4){
			cin >> funcc[j][i];
		}
	}
	REP(i,n){
		REP(i,100) REP(j,100) ban[i][j] = 0;
		if(search(i)) cout << i+1 << endl;
	}
	return 0;
}

書き直したコード

int r,c,m,n;
int ban[100][100];
int funcc[4][5000];
int kekka[100][100];
int countsouth(){
	int rst = 0;
	REP(i,r){
		REP(j,c){
			if(ban[i][j]%4==0) rst++;
		}
	}
	return rst;
}
void move(int ra,int rb,int ca,int cb){
	FOR(i,ra-1,rb){
		FOR(j,ca-1,cb){
			ban[i][j]++;
		}
	}
}
void movekekka(int ra,int rb,int ca,int cb){
	FOR(i,ra-1,rb){
		FOR(j,ca-1,cb){
			kekka[i][j]++;
		}
	}
}
void unmove(int ra,int rb,int ca,int cb){
	FOR(i,ra-1,rb){
		FOR(j,ca-1,cb){
			ban[i][j]--;
		}
	}
}
bool search(int tejun){
	REP(i,100)REP(j,100) ban[i][j] = kekka[i][j];
	unmove(funcc[0][tejun],funcc[1][tejun],funcc[2][tejun],funcc[3][tejun]);
	if(countsouth()==m) return true;
	else return false;
}
int main(){
	cin >> r >> c >> m;
	cin >> n;
	REP(i,n){
		REP(j,4){
			cin >> funcc[j][i];
		}
	}
	REP(i,100) REP(j,100)  ban[i][j] = 0;
	REP(i,100) REP(j,100)  kekka[i][j] = 0;
	REP(i,n) movekekka(funcc[0][i],funcc[1][i],funcc[2][i],funcc[3][i]);
	REP(i,n){
		REP(i,100) REP(j,100) ban[i][j] = 0;
		if(search(i)) cout << i+1 << endl;
	}
	return 0;
}

F:25回提出した.WA.

懇親会では,色々と話をしていた.本戦じゃないからか、アルハラはなかった.

帰りのゆりかもめからみえる景色が綺麗だった.結局今回も用事だけ済ませて急いで帰ることになった.ゆっくり旅行したい.

今回のコンテスト、優しめの問題設定で「解いてる」っていう実感があって楽しかった.
来年は普通に予選突破できるレベルまで上げたい.なんだかんだで下がってたプロコンのモチベがあがった.
アプリ開発やらバイトの物理シュミレーションのプログラムやらもあるけどやっぱりプロコンの勉強も少しずつ進める.

ちょくだいさんとのツーショットがとれて幸せだった.笑顔が思いっきりにぱーってしてて素敵でした.
https://twitter.com/lp6m/status/541473872017514496

CODE THANKS FESTIVAL,本当に楽しかったです.スタッフの方々,ありがとうございました!!