spin on the RITZ -160ページ目

HTMLコンバータ

昨日ソース張る時につかったHTMLコンバータの簡易版


#include <stdio.h>

#define TAB_SPACE 4
#define CHAR ' '

void func(int word)
{
    switch (word) {
        case '\"':
            printf("&quot;");
            break;
        case '&':
            printf("&amp;");
            break;
        case '<':
            printf("&lt");
            break;
        case '>':
            printf("&gt;");
            break;
        default:
            putchar(word);
            break;
    }
}

int main(void)
{
    int word,gap;
    int word_count = 0;
    int i;

    printf("<pre>\n");
    while((word=getchar()) != EOF){
        switch(word){
        case '\n':
            putchar(word);
            word_count = 0;
            break;
        case '\t':
            gap = TAB_SPACE - (word_count % TAB_SPACE);
            for(i = 0;i < gap;i++){
                putchar(CHAR);
            word_count += gap;
            break;
        default:
            func(word);
            word_count++;
            break;
        }
    }
    printf("</pre>\n");

    return 0;
}



もともとあったタブ展開プログラムに変換機能突っ込んだらこんなのになっちゃったorz

ガウス

自分用メモ

http://home.f01.itscom.net/toge/programingreport/articlerecord.html

http://www9.plala.or.jp/sgwr-t/c_sub/ConvHTML.html


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct {
    int h;
    int w;
    double **m;
} Matrix;

void error_message(char *m)
{
    printf("エラー : %s\n", m);
    exit(1);
}

Matrix *create_matrix(int height, int width)
{
    Matrix *mat;
    int i;
    
    mat = (Matrix*)malloc(sizeof(mat));
    if (mat == NULL)
        error_message("Matrix メモリ確保失敗");
    mat->m = (double**)malloc(sizeof(double*)*height);
    if (mat->m == NULL)
        error_message("m メモリ確保失敗");
    for (i = 0;i < width;i++) {
        mat->m[i] = (double*)malloc(sizeof(double)*width);
        if (mat->m[i] == NULL)
            error_message("各行 メモリ確保失敗");
    }
    mat->h = height;
    mat->w = width;
    
    return mat;
}

void free_matrix(Matrix *mat)
{
    int i;
    
    for (i = 0;i < mat->h;i++)
        free(mat->m[i]);
    free(mat->m);
    free(mat);
}

int gauss(Matrix *temp)
{
    int i, j, k, d;
    double alpha;
    double copy;
    double max;
    int size;

    if(temp->h > temp->w)
        size = temp->w;
    else
        size = temp->h;
    
    for(i=0; i<size; i++){
        d = i;
        max = fabs(temp->m[i][i]);

        for(j=i+1; j<temp->h; j++){
            if(max < fabs(temp->m[j][i])){
                d = j;
                max = fabs(temp->m[j][i]);
            }
        }
        for(j=i; j<temp->w; j++){
            copy = temp->m[i][j];
            temp->m[i][j] = temp->m[d][j];
            temp->m[d][j] = copy;
        }

        for(j=i+1; j<temp->h; j++){
            if(!temp->m[i][i]) {
                return 1;
            }
            alpha = temp->m[j][i] / temp->m[i][i];

            for(k=i; k<temp->w; k++){
                temp->m[j][k] -= alpha*temp->m[i][k];
            }
        }
    }

    return 0;
}

double *backward(Matrix *matrix)
{
    int i, j;
    double b;
    double *temp;
    int width, height, size;

    width = matrix->w;
    size = height = matrix->h;

    temp = (double*)malloc(sizeof(double) * height);
    temp[size-1] = matrix->m[height-1][width-1] / matrix->m[height-1][width-2];

    for(i = size-2; i >= 0; i--){
        b = matrix->m[i][width-1];
        for(j=i+1; j<size; j++){
            b -= matrix->m[i][j]*temp[j];
        }
        if(!matrix->m[i][i]) {
            return NULL;
        }
        temp[i] = b/matrix->m[i][i];
    }

    return temp;
}

int main(void)
{
    Matrix *mat;
    int height, width;
    int i, k;
    double *d;

    scanf("%d %d", &height, &width);
    mat = create_matrix(height, width);
    srand(time(NULL));
    for (i = 0;i < height;i++) {
        for (k = 0;k < width;k++) {
            scanf("%lf", &mat->m[i][k]);
            printf("%6.2f ", mat->m[i][k]);
        }
        printf("\n");
    }
    gauss(mat);
    for (i = 0;i < height;i++) {
        for (k = 0;k < width;k++) {
            printf("%6.2f ", mat->m[i][k]);
        }
        printf("\n");
    }
    d = backward(mat);
    for (i = 0;i < mat->h;i++)
        printf("x%2d = %lf\n",i+1,d[i]);
    
    return 0;
}

好きな果物は?

好きな果物は? ブログネタ:好きな果物は? 参加中
本文はここから


好きな果物


ですかね

昨日も梨剥いて食べました。



巨峰も好きです

今日食べました


グレープフルーツも好きです

最近食べてませんが

成績出ました

最低だ


あー最低だ


これだから実験とかは嫌なんだよ


おかしいだろ、評価おかしいだろ


あの野郎、俺たちのグループに不利な条件ばっかり課しやがって




全Aは無理でした、狙ってたのに。

そりゃ狭い大学内での評価ですけど、実験は結構頑張ってたんですよ

昼過ぎから8~9時くらいまでやったことも何度もあったし


あの野郎、いつか絶対ぶっ飛ばしてやる




狭い大学内での評価

キニスルコトナイ!!!ヽ(゚∀。)ノアバババババー


言い聞かせよう、うん、しょうがないよ



あの野郎、いつか絶対ぶっ飛ばしてやる!

エントロピー

エンタルピーっていうのもあるよね。次元が違うやつ



エントロピーといえば「乱雑さ、でたらめさの尺度」であったり、「情報の多様さを表す尺度」だったり(ここら辺の表現も随分曖昧ですが)します。


エントロピー(情報寄り)についてちょっと調べていたんですが、




「モノが散乱している部屋はエントロピーが大きい」


とか


「ばらばらに並べられたカードは情報量が0で、整頓されたカードは情報量がある」


とか





え?そんなんだったっけ?


自分も理解してる訳じゃないので大それた事は言えませんが、少なくとも「モノが散乱している部屋はエントロピーが大きい」ってのはおかしいと思うんだけど・・・

そんなマクロの話だっけ?確かにエントロピーの変化はマクロの状態にも影響するんだけどさ。


うちの教授が正しければ、上の内容はおかしいはず(正しければだけど)

量子力学の時に言ってた気がする



情報量によって情報を定量化できる尺度が出来た訳ですが、情報のもつセマンティックスは情報量だけでは議論できないみたいです。


クロード・シャノンは凄いなぁ~