ケブンッリジ ジネェーレタ

May 12, 2009,
tags: java php ケブンッリジ ジネェーレタ


このエントリーをはてなブックマークに追加

新しいバイトが始まったポリドッグです。
今度のバイトはソースコード書けるし、かなりスキルアップになる予感がします。
あとは自分のがんばり次第だと思います。

そんな、僕ですが、今日授業中に暇なので、ケブンッリジ ジネェーレタをJavaで書いていました。
本家よりは劣りますが・・・。
本家のソースコードはほぼ読んでないに等しい状態です。

授業中に書ききれなかったので、バイトが終ってから家で書いたわけですが・・・w
ついでにPHPでも書いてみたりしました。
いちおこんな感じになりました。

何気に大変だったのは、Javaのsubstringだったりします。
PHPのmb_substrのほうが全然つかいやすいwww
PHP版のサンプルはこちら
Java

class Jen{

	public static void main(String[] args){
		Jen s = new Jen();
		String a = s.convert("きょうは なんだか とっても、 よいきぶん");
		System.out.println(a);
	}

	public String convert(String str){
		str = replace(str);
		String[] strArray = split(str);
		String ret = "";
		for(int i = 0; i < strArray.length; i++){
			ret += sort(strArray[i]) + " ";
		}
		return ret;
	}

	/*
	* 文字列の置き換え
	*/
	protected String replace(String name){
		name = name.replaceAll(" "," ");
		name = name.replaceAll("\r\n"," ");
		name = name.replaceAll("\n", " ");
		return name;
	}

	/*
	* 文字列の並べ替え
	*/
	protected String sort(String name){
		int length = name.length() - 1;
		boolean flag = false;
		if(name.length() < 4){
			return name;
		}

		if(name.endsWith("。") || name.endsWith("、")){
			length--;
			flag = true;
		}

		String[] tmp = new String[length + 1];
		for(int i = 0; i <= length; i++){
			if(i == 0){
				tmp[i ] = name.substring(0,1);
			}else if(i == length){
				tmp[i] = name.substring(length,length + 1);
			}else{
				tmp[i] = name.substring(length - i,length - i  + 1);
			}
		}

		if(flag){//句読点処理
			tmp[length] += name.substring(length+ 1,length + 2);
		}

		String str = "";
		for(int j = 0; j < tmp.length; j++){
			str += tmp[j];
		}
		return str;

	}

	/*
	* 文字列分解
	*/
	protected String[] split(String name){
		String[] tmp = name.split(" ",0);
		return tmp;
	}
}

PHP

<?php

    mb_language("Japanese");
    mb_internal_encoding("UTF-8");

class Jen
{

    function str_convert($name){
        $name = $this->replace($name);
        $str_array = $this->str_split($name);
        foreach($str_array as $key => $value){
            $ret_string .= $this->str_sort($value)." ";
        }
        return $ret_string;
    }

    /*
    * 文字列の置き換え
    */
    protected function replace($name){
        $pattern = array(" ","\r\n","\n");
        $st = str_replace ($pattern," ",$name);
        return $st;
    }

    /*
    * 文字列の並べ替え
    */
    protected function str_sort($name){
        $length = mb_strlen($name) - 1;
        $flag = false;
        if($length < 3){
            return $name;
        }
        if(mb_substr($name,$length,1) == "。" || mb_substr($name,$length,1) == "、"){
            $length--;
            $flag = true;
        }

        $tmp = array();
        for($i = 0; $i <= $length; $i++){

            if($i == 0){
                $tmp[$i] = mb_substr($name,0,1);
            }else if($i == $length){
                $tmp[$i] = mb_substr($name,$i,1);
            }else{
                $tmp[$i] = mb_substr($name,$length - $i,1);
            }
        }
        if($flag){
            $tmp[$length] .= mb_substr($name,$length + 1,1);
        }
        foreach($tmp as $key => $value){
            $ret .= $value;
        }

        return $ret;
    }

    /*
    * 文字列分解
    */
    protected function str_split($name){
        $r = mb_split(" ",$name);
        return $r;
    }

}
?>
comments powered by Disqus