しただけ。
sudo apt-get install apache2
ってそれだけ。
2011年12月27日火曜日
2011年12月24日土曜日
PCの自作に先立って昔買った無線LANアダプタをテスト
設定については完全にこのページを参考にしました。何が何だか分からない!
http://www37.atwiki.jp/linux_kai/pages/85.html
というわけで、問題なく動作したので、暫くはLANハブを購入する必要はなさそうです。
この冬やることが見つからない……
http://www37.atwiki.jp/linux_kai/pages/85.html
というわけで、問題なく動作したので、暫くはLANハブを購入する必要はなさそうです。
この冬やることが見つからない……
2011年12月19日月曜日
冬休みの宿題
冬休みにやること
1、蟻本を可能な限り進める。
2、哲学書的な書籍を1冊以上読む。
3、規則正しい生活を身につける。
4、ウェブアプリケーションとデータベースを学ぶ。
多分こんなもん。何かあったら追記しよう。
1、蟻本を可能な限り進める。
2、哲学書的な書籍を1冊以上読む。
3、規則正しい生活を身につける。
4、ウェブアプリケーションとデータベースを学ぶ。
多分こんなもん。何かあったら追記しよう。
2011年12月17日土曜日
練習問題の5問目
こんなん
#include<stdio.h>
#include<stdlib.h>
void input();
void output();
char fname[] = {"2012-pr-t5-in1.txt"};
char oname[] = {"1.txt"};
long n,ans;
int main(void){
int i;
long j;
for(i = 0; i < 5; i++){
ans = 3;
input();
for(j = 1; j < n; j++){
ans = ans * 3;
if(ans >= 100000){
ans = ans % 100000;
}
}
output();
fname[13]++;
oname[0]++;
}
}
void input(){
FILE *fp;
char inbuf[32];
if((fp = fopen(fname,"r")) == NULL){
printf("error\n");
exit(1);
}
fgets(inbuf,32,fp);
sscanf(inbuf,"%ld",&n);
fclose(fp);
}
void output(){
FILE *fp;
fp = fopen(oname,"w");
fprintf(fp,"%ld",ans);
fclose(fp);
}
もっとスマートに書きたい。
コメント文もつけたい。
#include<stdio.h>
#include<stdlib.h>
void input();
void output();
char fname[] = {"2012-pr-t5-in1.txt"};
char oname[] = {"1.txt"};
long n,ans;
int main(void){
int i;
long j;
for(i = 0; i < 5; i++){
ans = 3;
input();
for(j = 1; j < n; j++){
ans = ans * 3;
if(ans >= 100000){
ans = ans % 100000;
}
}
output();
fname[13]++;
oname[0]++;
}
}
void input(){
FILE *fp;
char inbuf[32];
if((fp = fopen(fname,"r")) == NULL){
printf("error\n");
exit(1);
}
fgets(inbuf,32,fp);
sscanf(inbuf,"%ld",&n);
fclose(fp);
}
void output(){
FILE *fp;
fp = fopen(oname,"w");
fprintf(fp,"%ld",ans);
fclose(fp);
}
もっとスマートに書きたい。
コメント文もつけたい。
AP 合格者の手記
午前得点 | 66.25点 |
---|---|
午後得点 | 70.00点 |
実は選択が
問1 | 経営戦略 |
問3 | 情報戦略 |
問7 | 組込みシステム開発 |
問9 | 情報セキュリティ |
問11 | ITサービスマネジメント |
問12 | システム監査 |
とりあえず合格できたから良かった。来年はデスペあたり挑みます。
2011年12月9日金曜日
クラスって何
今日学校でJavaをならったので、クラスを使ってみました。
C++で。
#include<iostream>
#include<queue>
#include<iomanip>
class Ctest{
private:
int i[10];
public:
void seti(int x, int n);
int geti(int x);
void reseti();
};
void Ctest::reseti(){
int j;
for(j = 0; j < 10; j++){
i[j] = 0;
}
}
int Ctest::geti(int x){
if(x > 9){
return 0;
}
return i[x];
}
void Ctest::seti(int x, int n){
i[n] = x;
}
int main(){
Ctest test;
std::queue<int> que;
int buf,n = 0;
test.reseti();
std::cin >> buf;
while(buf != 0){
que.push(buf);
std::cin >> std::dec >> buf;
}
while(que.size() != 0 && n < 10){
test.seti(que.front(), n);
que.pop();
n++;
}
n = 0;
while((buf = test.geti(n)) != 0 && n < 10){
std::cout << buf << std::endl;
n++;
}
}
なぜこんなものを作ったのかは分からない。
C++で。
#include<iostream>
#include<queue>
#include<iomanip>
class Ctest{
private:
int i[10];
public:
void seti(int x, int n);
int geti(int x);
void reseti();
};
void Ctest::reseti(){
int j;
for(j = 0; j < 10; j++){
i[j] = 0;
}
}
int Ctest::geti(int x){
if(x > 9){
return 0;
}
return i[x];
}
void Ctest::seti(int x, int n){
i[n] = x;
}
int main(){
Ctest test;
std::queue<int> que;
int buf,n = 0;
test.reseti();
std::cin >> buf;
while(buf != 0){
que.push(buf);
std::cin >> std::dec >> buf;
}
while(que.size() != 0 && n < 10){
test.seti(que.front(), n);
que.pop();
n++;
}
n = 0;
while((buf = test.geti(n)) != 0 && n < 10){
std::cout << buf << std::endl;
n++;
}
}
なぜこんなものを作ったのかは分からない。
2011年12月3日土曜日
JOI 予選 過去問 第8回 問題4
こんな感じになった。
void solve(int x,int y,int depth){
a[y][x] = 0;
if(a[y + 1][x] == 1){
solve(x,y + 1,depth + 1);
}
if(a[y - 1][x] == 1){
solve(x,y - 1,depth + 1);
}
if(a[y][x + 1] == 1){
solve(x + 1,y,depth + 1);
}
if(a[y][x - 1] == 1){
solve(x - 1,y,depth + 1);
}
a[y][x] = 1;
if(a[y + 1][x] + a[y - 1][x] + a[y][x - 1] + a[y][x - 1] == 0){
if(depth >= maxdepth){
maxdepth = depth + 1;
}
}
}
これでmain関数からx,yをそれぞれN,Mまで変えてsolve関数を呼び出します。
ってかコメント文まったくつけてないな……
void solve(int x,int y,int depth){
a[y][x] = 0;
if(a[y + 1][x] == 1){
solve(x,y + 1,depth + 1);
}
if(a[y - 1][x] == 1){
solve(x,y - 1,depth + 1);
}
if(a[y][x + 1] == 1){
solve(x + 1,y,depth + 1);
}
if(a[y][x - 1] == 1){
solve(x - 1,y,depth + 1);
}
a[y][x] = 1;
if(a[y + 1][x] + a[y - 1][x] + a[y][x - 1] + a[y][x - 1] == 0){
if(depth >= maxdepth){
maxdepth = depth + 1;
}
}
}
これでmain関数からx,yをそれぞれN,Mまで変えてsolve関数を呼び出します。
ってかコメント文まったくつけてないな……
BFS 幅優先探索
幅優先探索を使ってスタートからゴールまでの道のりを計算するらしい。
#include<stdio.h>
#include<queue>
typedef std::pair<int ,int> P;
int bfs();
const int INF = 500;
int sx = 1,sy = 0;
int gx = 8,gy = 9;
int d[10][10];
int dy[4] = {1,0,-1,0} , dx[4] = { 0,1,0,-1,};
int bfs(){
int i,j;
int nx,ny;
std::queue<P> que;
for(i = 0;i < 10;i++){
for(j = 0;j < 10;j++){
d[i][j] = INF;
}
}
que.push(P(sy,sx));
d[sy][sx] = 0;
while(que.size()){
P p = que.front();
que.pop();
if(p.first == gy && p.second == gx){
break;
}
for(i = 0;i < 4;i++){
ny = p.first + dy[i];
nx = p.second + dx[i];
if(0 <= ny && ny < N && 0 <= nx && nx < M && maze[ny][nx] != '#' && d[ny][nx] == INF){
que.push(P(ny,nx));
d[ny][nx] = d[p.first][p.second] + 1;
}
}
}
return d[gy][gx];
}
int main(void){
int ans;
ans = bfs();
printf("%d\n",ans);
for(int i = 0; i < 10; i++){
printf("%s\n",maze[i]);
}
return 0;
}
#include<stdio.h>
#include<queue>
typedef std::pair<int ,int> P;
int bfs();
const int INF = 500;
char maze[10][11] = {"#S######.#","......#..#",".#.##.##.#",".#........","##.##.####","....#....#",".#######.#","....#.....",
".####.###.","....#...G#"};
int N = 10,M = 10;int sx = 1,sy = 0;
int gx = 8,gy = 9;
int d[10][10];
int dy[4] = {1,0,-1,0} , dx[4] = { 0,1,0,-1,};
int bfs(){
int i,j;
int nx,ny;
std::queue<P> que;
for(i = 0;i < 10;i++){
for(j = 0;j < 10;j++){
d[i][j] = INF;
}
}
que.push(P(sy,sx));
d[sy][sx] = 0;
while(que.size()){
P p = que.front();
que.pop();
if(p.first == gy && p.second == gx){
break;
}
for(i = 0;i < 4;i++){
ny = p.first + dy[i];
nx = p.second + dx[i];
if(0 <= ny && ny < N && 0 <= nx && nx < M && maze[ny][nx] != '#' && d[ny][nx] == INF){
que.push(P(ny,nx));
d[ny][nx] = d[p.first][p.second] + 1;
}
}
}
return d[gy][gx];
}
int main(void){
int ans;
ans = bfs();
printf("%d\n",ans);
for(int i = 0; i < 10; i++){
printf("%s\n",maze[i]);
}
return 0;
}
2011年12月1日木曜日
できた件について
計算結果をメモする配列をlong long int型にしたら出来ました。
そりゃこれだけ大きい値が収まるわけないよね。
//入力
long long int dp[N][21];
int a[N];
//回答
void solve(){
int i,j;
dp[0][a[0]] = 1;
for (i = 0; i <= n-2; i++){
for(j = 0; j <= 20; j++){
if(j - a[i] >= 0){
dp[i][j] += dp[i - 1][j - a[i]];
}
if(j + a[i] <= 20){
dp[i][j] += dp[i - 1][j + a[i]];
}
}
}
printf("%llu\n",dp[n - 2][a[n - 1]]);
}
とりあえずメモ化再帰からループに。メモ化再帰の方でも多分問題なく解けると思うけど。
本番でこういう単純なことに気づかなかったら怖いな…
そりゃこれだけ大きい値が収まるわけないよね。
//入力
long long int dp[N][21];
int a[N];
//回答
void solve(){
int i,j;
dp[0][a[0]] = 1;
for (i = 0; i <= n-2; i++){
for(j = 0; j <= 20; j++){
if(j - a[i] >= 0){
dp[i][j] += dp[i - 1][j - a[i]];
}
if(j + a[i] <= 20){
dp[i][j] += dp[i - 1][j + a[i]];
}
}
}
printf("%llu\n",dp[n - 2][a[n - 1]]);
}
とりあえずメモ化再帰からループに。メモ化再帰の方でも多分問題なく解けると思うけど。
本番でこういう単純なことに気づかなかったら怖いな…
2011年11月30日水曜日
Emacsをインストールしたことを一応書いておく事に
Linuxのエディタとして有名らしいので、コーディングの練習にバリエーションを持たせる意味でインストールしてみました。
参考:http://www.randynetwork.com/blog/265 http://blog.mizoshiri.com/archives/988
yumのGUI使ってサッと検索してインストールすればいいはずだが、端末使いたい思いもあるので敢えてそっちで。
参考のサイトでyumだとバージョンが21とかになるらしいので(試して無いけど)、わざわざソースコードからインストール。
# wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.3b.tar.gz
# tar zxvf emacs-23.3b.tar.gz
# cd ./emacs-23.3
# ./configure --without-x
# make
# make install
とまでやって、起動してみると"
# yum install libncurses5-dev
の後に再度インストールしたら起動しました、と。
正直こんなこと書いて誰かの役に立つとは微塵も思わない。
参考:http://www.randynetwork.com/blog/265 http://blog.mizoshiri.com/archives/988
yumのGUI使ってサッと検索してインストールすればいいはずだが、端末使いたい思いもあるので敢えてそっちで。
参考のサイトでyumだとバージョンが21とかになるらしいので(試して無いけど)、わざわざソースコードからインストール。
# wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.3b.tar.gz
# tar zxvf emacs-23.3b.tar.gz
# cd ./emacs-23.3
# ./configure --without-x
# make
# make install
とまでやって、起動してみると"
Cannot open termcap database file"だの言われたので、そのままググってみると、
"libncurses5-dev"なんてのをインストールしないといけないらしいので、# yum install libncurses5-dev
の後に再度インストールしたら起動しました、と。
正直こんなこと書いて誰かの役に立つとは微塵も思わない。
2011年11月29日火曜日
JOI予選、去年の問題
なぜか入力3が出来るのに入力4,5が出来ない。あと例題2も出来ない。
int solve(int,int);
int a[512],amax;
long int memo[513][21];
long int ans = 0;
int main(void){
int i,j;
for(i = 0; i < 513; i++){
for(j = 0; j < 21; j++){
memo[i][j] = 0;
}
}
if(datascan()){
exit(EXIT_FAILURE);
}
solve(1,a[0]);
printf("%d\n",ans);
return 0;
}
int solve(int i,int sum){
long int ret = 0;
long int patn;
if(i == amax - 1){
if(a[amax - 1] == sum){
ans++;
return 1;
}else{
return 0;
}
}else if(memo[i][sum] != 0){
ans = ans + memo[i][sum];
return memo[i][sum];
}else{
if(sum + a[i] <= 20){
patn = solve(i + 1,sum + a[i]);
if(patn != 0){
memo[i][sum] += patn;
ret += patn;
}
}
if(sum - a[i] >= 0){
patn = solve(i + 1,sum - a[i]);
if(patn != 0){
memo[i][sum] += patn;
ret += patn;
}
}
}
return (ret);
}
bool datascan(void){
int i = 0;
char fbuf[513],*p;
FILE *fp;
if((fp = fopen("2011-yo-t4-in5.txt","r")) == NULL){
printf("file open error\n");
return true;
}
fgets(fbuf,100,fp);
sscanf(fbuf,"%d",&amax);
fgets(fbuf,512,fp);
printf("%s\n",fbuf);
p = fbuf;
do{
sscanf(p,"%d",&a[i]);
i++;
p++;
}while((p = strchr(p,' ')) != NULL);
for(i = 0; i < amax; i++){
printf("%d ",a[i]);
}
printf("\n");
fclose(fp);
return false;
}
一体何がダメなのか…
まぁ一応ここで12点取れてれば大丈夫な気はするけど。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
bool datascan();int solve(int,int);
int a[512],amax;
long int memo[513][21];
long int ans = 0;
int main(void){
int i,j;
for(i = 0; i < 513; i++){
for(j = 0; j < 21; j++){
memo[i][j] = 0;
}
}
if(datascan()){
exit(EXIT_FAILURE);
}
solve(1,a[0]);
printf("%d\n",ans);
return 0;
}
int solve(int i,int sum){
long int ret = 0;
long int patn;
if(i == amax - 1){
if(a[amax - 1] == sum){
ans++;
return 1;
}else{
return 0;
}
}else if(memo[i][sum] != 0){
ans = ans + memo[i][sum];
return memo[i][sum];
}else{
if(sum + a[i] <= 20){
patn = solve(i + 1,sum + a[i]);
if(patn != 0){
memo[i][sum] += patn;
ret += patn;
}
}
if(sum - a[i] >= 0){
patn = solve(i + 1,sum - a[i]);
if(patn != 0){
memo[i][sum] += patn;
ret += patn;
}
}
}
return (ret);
}
bool datascan(void){
int i = 0;
char fbuf[513],*p;
FILE *fp;
if((fp = fopen("2011-yo-t4-in5.txt","r")) == NULL){
printf("file open error\n");
return true;
}
fgets(fbuf,100,fp);
sscanf(fbuf,"%d",&amax);
fgets(fbuf,512,fp);
printf("%s\n",fbuf);
p = fbuf;
do{
sscanf(p,"%d",&a[i]);
i++;
p++;
}while((p = strchr(p,' ')) != NULL);
for(i = 0; i < amax; i++){
printf("%d ",a[i]);
}
printf("\n");
fclose(fp);
return false;
}
一体何がダメなのか…
まぁ一応ここで12点取れてれば大丈夫な気はするけど。
2011年11月27日日曜日
入力が出来るようになった
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){int a[512],i = 0,n;
char fbuf[256],*p;
FILE *fp;
if((fp = fopen("data","r")) == NULL){ //ファイルのオープン
printf("file open error\n");
exit(EXIT_FAILURE);
}
fgets(fbuf,100,fp); //ファイルから1行読み取ってfbufへ
printf("%s\n",fbuf); //fbufの内容を出力
p = fbuf; //ポインタpにfbufのアドレスを代入
//数字の読み込み
do{
sscanf(p,"%d",&a[i]); //ポインタpで指定された文字列から整数を取得
i++;
p++; //ポインタを1つ増やす
}while((p = strchr(p,' ')) != NULL); //ポインタpで指定された文字列からスペースを探し、見つかればループを継続
a[i] = -1; //配列の最後を-1に設定
i = 0;
//配列の出力
while(a[i] >= 0){ //a[i] >= 0ならa[i]を出力
printf("%d ",a[i]);
i++;
}
printf("\n");
fclose(fp); //ファイルのクローズ
return 0;
}
もう情報オリンピックまで1ヶ月切ったというのに今更ファイルの入力が出来るようになった…
コメント文をこんなに書くのは初めてだからどうすればいいやら。
もっといいやり方があると思うけどな!
2011年11月1日火曜日
登録:
投稿 (Atom)