This commit is contained in:
ledyba 2010-04-25 05:23:00 +00:00
commit aec3b4320d
8 changed files with 860 additions and 0 deletions

336
c_cgi/Buffalin.c Normal file
View file

@ -0,0 +1,336 @@
#include <stdio.h>
#include <stdlib.h>
#ifndef NULL
#define NULL 0
#endif
const char *Kinds[] = {"下心", "微妙さ", "優雅さ", "華麗さ", "かわいさ", "やさしさ", "やましさ",
"やらしさ", "むなしさ", "ツンデレ", "厳しさ", "世の無常さ", "ハッタリ", "ビタミン",
"努力", "気合", "根性", "砂糖", "食塩", "", "電波", "毒電波", "元気玉",
"怨念", "大阪のおいしい水", "明太子", "勇気", "", "電力", "小麦粉",
"汗と涙(化合物)", "覚悟", "大人の都合", "見栄", "欲望", "", "真空", "呪詛",
"信念", "", "記憶", "鉄の意志", "カルシウム", "魔法", "希望", "不思議",
"勢い", "度胸", "乙女心", "", "花崗岩", "宇宙の意思", "犠牲", "毒物", "",
"海水", "蛇の抜け殻", "波動", "純金", "情報", "知識", "知恵", "魂の炎", "媚び",
"保存料", "着色料", "税金", "", "苦労", "柳の樹皮", "睡眠薬", "スライム",
"アルコール", "時間", "果物", "玉露", "利益", "赤い何か", "白い何か", "鍛錬",
"月の光", "回路", "野望", "陰謀", "雪の結晶", "", "黒インク", "白インク",
"カテキン", "祝福", "気の迷い", "マイナスイオン", "濃硫酸", "ミスリル", "お菓子",
"言葉", "心の壁", "成功の鍵", "理論", "", };
const char* ThingName;
char* EscapedThingName;
unsigned int RndSeed = 0;
int EltCount = 0;
struct Element{
unsigned int kind;
unsigned int per;
} Elt[100];
char* escapeStr(const char* str,int length);
int main(){
int result = 0;
int length = 0;
/*とりあえずは.*/
writeContentType();
//名前を得る
getThingName();
//デコードする
length = (int)strlen(ThingName);
decode(ThingName,length);
//エスケープもする
EscapedThingName = escapeStr(ThingName,length);
result = doAnalyze(ThingName);
writeHeader(EscapedThingName);//ヘッダを書く
writeTitle();//タイトル
writeForm(EscapedThingName);//フォーム
puts("<p>");
if(result){
writeResult(EscapedThingName);
}else{
writeError();
}
puts("</p>");
writeAd();
writeCounter();
writeFooter();//フッタ
free(EscapedThingName);//Free
return 0;
}
char* escapeStr(const char* str,int length){
int i;
char* ret = malloc(length);
int ret_i;
int ret_length = length;
for(i=0,ret_i=0;i<length;i++){
char ch = str[i];
switch(ch){
case '<':
ret_length+=4;
ret = realloc(ret,ret_length);
ret[ret_i+0]='&';
ret[ret_i+1]='l';
ret[ret_i+2]='t';
ret[ret_i+3]=';';
ret_i+=4;
break;
case '>':
ret_length+=4;
ret = realloc(ret,ret_length);
ret[ret_i+0]='&';
ret[ret_i+1]='g';
ret[ret_i+2]='t';
ret[ret_i+3]=';';
ret_i+=4;
break;
case '&':
ret_length+=5;
ret = realloc(ret,ret_length);
ret[ret_i+0]='&';
ret[ret_i+1]='a';
ret[ret_i+2]='m';
ret[ret_i+3]='p';
ret[ret_i+4]=';';
ret_i+=5;
break;
case '\"':
ret_length+=6;
ret = realloc(ret,ret_length);
ret[ret_i+0]='&';
ret[ret_i+1]='q';
ret[ret_i+2]='u';
ret[ret_i+3]='o';
ret[ret_i+4]='t';
ret[ret_i+5]=';';
ret_i+=6;
break;
case ' ':
ret_length+=6;
ret = realloc(ret,ret_length);
ret[ret_i+0]='&';
ret[ret_i+1]='n';
ret[ret_i+2]='b';
ret[ret_i+3]='s';
ret[ret_i+4]='p';
ret[ret_i+5]=';';
ret_i+=6;
break;
default:
ret[ret_i]=ch;
ret_i++;
}
}
return ret;
}
#define INDEX "Thing="
int getThingName(){
char *input = getenv("QUERY_STRING");
if(input == NULL || input[0] == '\0'){
ThingName = "";
}else{
input = (char*)strstr(input,INDEX);
if(input == NULL || input[0] == '\0'){
ThingName = "";
}else{
ThingName = input + strlen(INDEX);
}
}
return 1;
}
int writeContentType(){
puts("Content-type: text/html\n");
return 0;
}
int writeHeader(char* thing){
puts("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">");
puts("<html lang=\"ja\"><head>");
puts("<link rev=\"made\" href=\"http://ledyba.ddo.jp/\">");
puts("<meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\">");
puts("<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">");
puts("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
puts("<title>「成分解析」 for CGI written in C");
if(thing != NULL && thing[0] != '\0'){
printf("%sの解析結果",thing);
}
puts("</title></head><body>");
return 0;
}
int writeFooter(){
puts("<hr>");
puts("<p>");
puts("Analyzed and written by <a href=\"http://ledyba.ddo.jp/\">ψ(プサイ)</a><br>");
puts("Original program was written by <a href=\"http://www.tekipaki.jp/~clock/\">Clock</a><br>");
puts("(2007/10/19)XSSに使えそうな脆弱性を修正。悪用されなくって良かった。<br>");
puts("ついでにHTML 4.01 Strictに完全準拠。やったね");
puts("</p>");
puts("</body></html>");
return 0;
}
int writeTitle(){
puts("<h1>「成分解析」 for CGI written in C</h1>");
puts("<hr>");
puts("<p>流行だった成分解析を,<a href=\"http://ledyba.ddo.jp/2006/03/28034103.php\">解析して</a>CのCGIに移植しました</p>");
puts("<p> <a href=\"http://www.tekipaki.jp/~clock/\">本家</a>や<a href=\"http://ledyba.ddo.jp/2006/04/04015951.php\">Java版</a>と同じ結果が返ります.</p>");
puts("<hr>");
return 0;
}
int writeForm(char* thing){
if(thing == NULL) thing = "";
printf("<form method=\"GET\" action=\"%s\">\n",getenv("SCRIPT_NAME"));
puts("<p>");
printf("<input type=\"text\" name=\"Thing\" value=\"%s\" tabindex=\"1\" accesskey=\"1\">\n",thing);
puts("<input type=\"submit\" value=\"解析する\" tabindex=\"2\" accesskey=\"2\">");
puts("<input type=\"reset\" value=\"取消\" tabindex=\"3\" accesskey=\"3\">");
puts("</p>");
puts("</form>");
puts("<hr>");
return 0;
}
int doAnalyze(char* thing){
unsigned int left = 100;
unsigned int kind = 0;
unsigned int per = 0;
int i;
int same;
if(thing == NULL || thing[0] == '\0') return 0;
RndSeed = getCode(thing);
while(left > 0){
kind = myRand() % 100;
same = 0;
for(i=0;i<EltCount;i++){
if(Elt[i].kind == kind)same |= 1;
}
if(same) continue;
per = (myRand() % left) + 1;
Elt[EltCount].kind = kind;
Elt[EltCount].per = per;
left -= per;
EltCount++;
}
sort();
return 1;
}
int getCode(char* str){
int i=0;
unsigned int code = 0;
for(;i<strlen(str);i++){
code += (((int)str[i]) & 0xff) << ((i & 0x3)<<0x3);
// printf("%x ",str[i]);
}
return code;
}
int myRand(){
unsigned int result = 0;
RndSeed *= 214013;
RndSeed += 2531011; // ->次に呼び出されたときのseedに使う
result = RndSeed;
result = result >> 0x10;
result &= 0x7fff;
return (unsigned int)result;
}
int sort(){
int i,j;
int prev;
struct Element temp;
for (i = EltCount - 1; i > 0; i--) {
prev = 0;
for (j = 1; j <= i; j++) {
if (!(Elt[prev].per <= Elt[j].per)) {
prev = j;
}
}
//swap(elt, i, prev);
/*スワップ*/
temp = Elt[i];
Elt[i] = Elt[prev];
Elt[prev]=temp;
}
}
int writeCounter(){
puts("<script type=\"text/javascript\">");
puts("var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : \"http://www.\");");
puts("document.write(unescape(\"%3Cscript src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));");
puts("</script>");
puts("<script type=\"text/javascript\">");
puts("var pageTracker = _gat._getTracker(\"UA-4766333-1\");");
puts("pageTracker._initData();");
puts("pageTracker._trackPageview();");
puts("</script>");
}
int writeResult(char* thing){
int i;
int before = 0;
printf("%sの成分解析結果 : <br>\n<br>\n",thing);
for(i = 0;i<EltCount;i++){
switch(Elt[i].per){
case 50:
if(!before){
printf("%sの半分は%sで出来ています。<br>\n",thing,Kinds[Elt[i].kind]);
before |= 1;
}else{
printf("%sのもう半分は%sで出来ています。<br>\n",thing,Kinds[Elt[i].kind]);
}
break;
case 100:
printf("%sはすべて%sで出来ています。<br>\n",thing,Kinds[Elt[i].kind]);
break;
default:
printf("%sの%d\%は%sで出来ています。<br>\n",thing,Elt[i].per,Kinds[Elt[i].kind]);
}
}
return 0;
}
int writeError(){
puts("物質名称を入力してください。");
return 0;
}
int decode(char* s,int len){
int i,j;
char buf,*s1;
if(len==0)return(-1);
s1=(char*)malloc(len);
for(i=0,j=0;i<len;i++,j++)
{
if(s[i]=='+'){s1[j]=' ';continue;}
if(s[i]!='%') {s1[j]=s[i];continue;}
buf=((s[++i]>='A') ? s[i]-'A'+10 : s[i]-'0');
buf*=16;
buf+=((s[++i]>='A') ? s[i]-'A'+10 : s[i]-'0');
s1[j]=buf;
}
for(i=0;i<j;i++) s[i]=s1[i];
s[i]='\0';
free(s1);
return(0);
}
int writeAd(){
puts("<script type=\"text/javascript\"><!--");
puts("google_ad_client = \"pub-3121031347596821\";");
puts("google_ad_slot = \"5134098739\";");
puts("google_ad_width = 234;");
puts("google_ad_height = 60;");
puts("//--></script>");
puts("<script type=\"text/javascript\" src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\"></script>");
return 0;
}

93
c_cgi/Makefile Normal file
View file

@ -0,0 +1,93 @@
# Makefile ( n source file 1 execute file version )
# 2002/12/ 4
# 日本語のコメント部分に従って修正して下さい。
# $(HOGEHOGE) というのはマクロ(一種の変数)で、
# HOGEHOGE=... で定義された内容に展開して解釈されます。
# 行頭のタブには意味がありますので、スペースに変換しないで下さい。
# できれば、最終的に日本語コメントは削除して下さい。
# ↓パッケージ名かつ実行ファイル名に書き換える
PACKAGE = Buffalin
# ↓ソースファイルを書き並べる
SRCS = Buffalin.c
# ↓ヘッダファイルを書き並べる
HEADS =
OBJS = $(SRCS:.c=.o)
# ↓パッケージに含めるファイル名を書き並べる
FILES = Makefile $(HEADS) $(SRCS)
VER = `date +%Y%m%d`
### command and flags ###
# uncomment when debugging
#DEBUG = -ggdb -pg # -lefence
RELEASE = -s
# common (*.o)
LD = gcc
LDFLAGS = -g $(DEBUG) $(RELEASE)
LDLIBS = -lm
# C (*.c)
CC = gcc
CFLAGS = -g -O3 -Wall $(DEBUG) $(RELEASE)
CPPFLAGS= -I.
# etc
SHELL = /bin/sh
RM = rm -f
PROF = gprof
### rules ###
.SUFFIXES:
.SUFFIXES: .o .c .cc .f .p
all: $(PACKAGE).cgi
$(PACKAGE).cgi: $(OBJS)
$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)
$(OBJS): $(HEADS) Makefile
.c.o:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
.cc.o:
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
.f.o:
$(FC) $(FFLAGS) -c $< -o $@
.p.o:
$(PC) $(PFLAGS) $(CPPFLAGS) -c $< -o $@
$(PACKAGE)_res.o: $(PACKAGE).rc
windres -i $(PACKAGE).rc -o $(PACKAGE)_res.o
### useful commands ###
clean:
$(RM) $(PACKAGE) $(OBJS)
$(RM) core gmon.out *~ #*#
tar:
@echo $(PACKAGE)-$(VER) > .package
@$(RM) -r `cat .package`
@mkdir `cat .package`
@ln $(FILES) `cat .package`
tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz
@$(RM) -r `cat .package` .package
zip:
zip -9 $(PACKAGE)-$(VER).zip $(FILES)
prof: run
$(PROF) $(PACKAGE) | less
run: all
# ↓サンプルデータで実行するように書き直す
# $(PACKAGE) は実行ファイル名に展開される
# 行頭はタブ(スペースではない)
./$(PACKAGE) < sample-data | less

1
c_cgi/install.sh Normal file
View file

@ -0,0 +1 @@
cp Buffalin.cgi /mnt/www/ledyba/cgi/

View file

@ -0,0 +1,22 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>
成分解析
</title>
</head>
<body>
analyzer.Analyzer は Java が使用できるブラウザで下に表示されます<br>
<applet
archive = "BuffalinForJava.jar"
code = "analyzer.Analyzer.class"
name = "バファリン"
width = "450"
height = "300"
hspace = "0"
vspace = "0"
align = "middle"
>
</applet>
</body>
</html>

Binary file not shown.

View file

@ -0,0 +1,173 @@
package analyzer;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.*;
/**
* <p>タイトル: 成分解析</p>
*
* <p>説明: 成分を解析します</p>
*
* <p>著作権: Copyright (c) 2006 PSI</p>
*
* <p>会社名: ψプサイの興味関心空間</p>
*
* @author 未入力
* @version 1.0
*/
public class Analyzer extends Applet {
boolean isStandalone = false;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
GridBagLayout gridBagLayout1 = new GridBagLayout();
JScrollPane jScrollPane1 = new JScrollPane();
JTextArea ResultField = new JTextArea();
JButton AnalyzeButton = new JButton();
JTextField ThingField = new JTextField();
JLabel jLabel1 = new JLabel();
JPanel CopyRightPanel = new JPanel();
JLabel CopyRightField = new JLabel();
GridBagLayout gridBagLayout2 = new GridBagLayout();
JLabel CopeRight2 = new JLabel();
JTextField CopyRight3 = new JTextField();
JLabel CopyRight4 = new JLabel();
JLabel CopyRight5 = new JLabel();
JTextField CopyRight6 = new JTextField();
JLabel CopyRight1 = new JLabel();
//パラメータ値の取得
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
//アプレットの構築
public Analyzer() {
}
//アプレットの初期化
public void init() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
//コンポーネントの初期化
private void jbInit() throws Exception {
this.setLayout(borderLayout2);
jPanel1.setLayout(gridBagLayout1);
ResultField.setEditable(false);
ResultField.setText("");
AnalyzeButton.setText("成分を解析する");
AnalyzeButton.addActionListener(new
Analyzer_AnalyzeButton_actionAdapter(this));
jLabel1.setText("jLabel1");
CopyRightField.setBorder(BorderFactory.createEtchedBorder());
CopyRightField.setText(
"「成分解析」for Java v1.03(2006/04/12)");
CopyRightPanel.setLayout(gridBagLayout2);
CopeRight2.setText("ψ(プサイ)の興味関心空間:");
CopyRight3.setEditable(false);
CopyRight3.setText("http://ledyba.ddo.jp/");
CopyRight4.setText("Original Program was written by Clock");
CopyRight5.setToolTipText("");
CopyRight5.setText("★カドルコア世代☆:");
CopyRight6.setEditable(false);
CopyRight6.setText("http://tekipaki.jp/~clock/");
CopyRight1.setText("Analyzed & Written by ψ(プサイ)");
this.add(jPanel1, java.awt.BorderLayout.CENTER);
jScrollPane1.getViewport().add(ResultField);
jPanel1.add(jScrollPane1, new GridBagConstraints(0, 2, 3, 1, 1.0, 1.0
, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(5, 5, 5, 5), 0, 0));
jPanel1.add(AnalyzeButton, new GridBagConstraints(2, 0, 1, 2, 0.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.NONE,
new Insets(5, 0, 0, 5), 0, 0));
this.add(CopyRightPanel, java.awt.BorderLayout.SOUTH);
jPanel1.add(ThingField, new GridBagConstraints(0, 1, 2, 1, 1.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(5, 5, 0, 5), 0, 0));
CopyRightPanel.add(CopyRight4,
new GridBagConstraints(0, 3, 3, 1, 1.0, 0.0
, GridBagConstraints.WEST,
GridBagConstraints.BOTH,
new Insets(0, 5, 0, 0), 0, 0));
CopyRightPanel.add(CopyRight3,
new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0
, GridBagConstraints.CENTER,
GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 5), 0, 0));
CopyRightPanel.add(CopyRight6,
new GridBagConstraints(1, 4, 1, 1, 1.0, 0.0
, GridBagConstraints.CENTER,
GridBagConstraints.BOTH,
new Insets(0, 0, 5, 5), 0, 0));
CopyRightPanel.add(CopeRight2,
new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(0, 5, 0, 0), 0, 0));
CopyRightPanel.add(CopyRight5,
new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0
, GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(0, 5, 5, 0), 0, 0));
CopyRightPanel.add(CopyRight1, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 5, 0, 5), 0, 0)); /*マウス*/
CopyRightPanel.add(CopyRightField,
new GridBagConstraints(0, 0, 2, 1, 1.0, 0.0
, GridBagConstraints.WEST,
GridBagConstraints.BOTH,
new Insets(0, 0, 0, 5), 0, 0));
ResultField.addMouseListener(new psi.lib.Swing.PopupRightClick(ResultField));
ThingField.addMouseListener(new psi.lib.Swing.PopupRightClick(ThingField));
CopyRight3.addMouseListener(new psi.lib.Swing.PopupRightClick(CopyRight3));
CopyRight6.addMouseListener(new psi.lib.Swing.PopupRightClick(CopyRight6));
}
//アプレット情報の取得
public String getAppletInfo() {
return "アプレット情報";
}
//パラメータ情報の取得
public String[][] getParameterInfo() {
return null;
}
public void AnalyzeButton_actionPerformed(ActionEvent e) {
String str = this.ThingField.getText();
if(str == null || str.equals("")){
this.ResultField.setText("物質名称を入力してください。");
return;
}
AnalyzerCore ana = new AnalyzerCore(str);
this.ResultField.setText(ana.doAnalyze());
}
}
class Analyzer_AnalyzeButton_actionAdapter implements ActionListener {
private Analyzer adaptee;
Analyzer_AnalyzeButton_actionAdapter(Analyzer adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.AnalyzeButton_actionPerformed(e);
}
}

View file

@ -0,0 +1,175 @@
package analyzer;
import java.util.LinkedList;
import java.util.Iterator;
/**
* <p>タイトル: 成分解析</p>
*
* <p>説明: 成分を解析します</p>
*
* <p>著作権: Copyright (c) 2006 PSI</p>
*
* <p>会社名: ψプサイの興味関心空間</p>
*
* @author 未入力
* @version 1.0
*/
public class AnalyzerCore {
String Str;
long seed = 0;
public AnalyzerCore(String str) {
super();
this.Str = str;
}
public String doAnalyze() {
byte[] ch = Str.getBytes();
this.seed = this.getCode(ch);
LinkedList list = new LinkedList();
int left = 100;
do {
int Kind = (int) rnd() % 100;
Iterator it = list.listIterator();
boolean same = false;
while (it.hasNext()) {
/*同じのがあればもう一回試す*/
if (((Element) it.next()).getKind() == Kind) {
same |= true;
}
}
if (same) {
continue;
}
Element elt = new Element(Str, Kind,
(int) (rnd() % left) + 1);
left -= elt.getParcentage();
list.add(elt);
} while (left > 0);
Object obj[] = list.toArray();
Element[] comp = new Element[obj.length];
for (int i = 0; i < comp.length; i++) {
comp[i] = (Element) obj[i];
}
selectionSort(comp, 0, comp.length);
return getString(comp);
}
public String getString(Element[] list) {
String ret = "";
boolean before = false;
ret += this.Str + "の成分解析結果 : \n\n";
for (int i = 0; i < list.length; i++) {
ret += list[i].toString(before);
if (list[i].getParcentage() == 50) {
before = true;
}
}
return ret;
}
public void selectionSort(Element[] elt, int start, int end) {
for (int i = end - 1; i > start; i--) {
int prev = 0;
for (int j = start + 1; j <= i; j++) {
if (!(elt[prev].getParcentage() <= elt[j].getParcentage())) {
prev = j;
}
}
swap(elt, i, prev);
}
}
public void qsort(Element[] elt, int start, int length) {
int end = start+length-1;
do {
if (!(length > 8)) {
selectionSort(elt, start, length);
} else {
/*個数を2で割って入れ替え*/
swap(elt, start, start + (length >> 1));
int a;
int b = start + length - 1;
while (true) {
b++;//なぜか足す
//最初の要素からサーチ
a = start;
do {
a++;
}while(!(compare(elt[a], elt[start]) <= 0) && !(a > end));
//最後の要素からサーチ
do {
b--;
}while(!(compare(elt[b], elt[start]) >= 0) && !(b < start));
if(b < a){
break;
}else{
swap(elt,a,b);
continue;
}
}
swap(elt,start,b);
if(!((b-start-1) < (end - a))){
}else{
if(!(b > start + 1)){
b--;
if(!(a > end)){
break;
}else{
start = a;
continue;
}
}else{
}
}
}
} while (true);
}
public int compare(Element a, Element b) {
if (a.getParcentage() < b.getParcentage()) {
return -1;
} else if (a.getParcentage() < b.getParcentage()) {
return 1;
} else {
return 0;
}
}
public void swap(Element elt[], int target1, int target2) {
Element tmp;
tmp = elt[target2];
elt[target2] = elt[target1];
elt[target1] = tmp;
}
public long getCode(byte[] ch) {
long code = 0;
for (int i = 0; i < ch.length; i++) {
int add = psi.lib.CalTools.PokeTools.ByteToInt(ch[i]);
code += add << ((i & 0x80000003) << 3);
}
code <<= 32;
code >>= 32;
// code &= 0xffffffff;
return code;
}
public long rnd() {
this.seed *= 0x343FD;
this.seed += 0x269EC3;
this.seed = this.seed << 32;
this.seed = this.seed >> 32;
long seed = this.seed;
seed = seed >> 0x10;
seed &= 0x7fff;
//System.out.println(Long.toHexString(seed));
return seed;
}
}

View file

@ -0,0 +1,60 @@
package analyzer;
/**
* <p>タイトル: 成分解析</p>
*
* <p>説明: 成分を解析します</p>
*
* <p>著作権: Copyright (c) 2006 PSI</p>
*
* <p>会社名: ψプサイの興味関心空間</p>
*
* @author 未入力
* @version 1.0
*/
public class Element {
private int Kind;
private int Parcentage;
String[] Kinds = {"下心", "微妙さ", "優雅さ", "華麗さ", "かわいさ", "やさしさ", "やましさ",
"やらしさ", "むなしさ", "ツンデレ", "厳しさ", "世の無常さ", "ハッタリ", "ビタミン",
"努力", "気合", "根性", "砂糖", "食塩", "", "電波", "毒電波", "元気玉",
"怨念", "大阪のおいしい水", "明太子", "勇気", "", "電力", "小麦粉",
"汗と涙(化合物)", "覚悟", "大人の都合", "見栄", "欲望", "", "真空", "呪詛",
"信念", "", "記憶", "鉄の意志", "カルシウム", "魔法", "希望", "不思議",
"勢い", "度胸", "乙女心", "", "花崗岩", "宇宙の意思", "犠牲", "毒物", "",
"海水", "蛇の抜け殻", "波動", "純金", "情報", "知識", "知恵", "魂の炎", "媚び",
"保存料", "着色料", "税金", "", "苦労", "柳の樹皮", "睡眠薬", "スライム",
"アルコール", "時間", "果物", "玉露", "利益", "赤い何か", "白い何か", "鍛錬",
"月の光", "回路", "野望", "陰謀", "雪の結晶", "", "黒インク", "白インク",
"カテキン", "祝福", "気の迷い", "マイナスイオン", "濃硫酸", "ミスリル", "お菓子",
"言葉", "心の壁", "成功の鍵", "理論", "", };
private String Thing;
public Element(String thing,int Kind,int Parcentage) {
super();
this.Thing = thing;
this.Kind = Kind;
this.Parcentage = Parcentage;
}
public int getKind() {
return Kind;
}
public int getParcentage() {
return Parcentage;
}
public String toString(boolean before){
switch(Parcentage){
case 50:
if(before){
return Thing+"もう半分は"+this.Kinds[Kind]+"で出来ています。\n";
}else{
return Thing+"の半分は"+this.Kinds[Kind]+"で出来ています。\n";
}
case 100:
return Thing+"はすべて"+this.Kinds[Kind]+"で出来ています。\n";
default:
return Thing+""+Parcentage+"%は"+this.Kinds[Kind]+"で出来ています。\n";
}
}
}