// 多項式の整理
//テキストファイルに貼り付けたGeoGebraの式を見やすくしたい時に、余分な*の括弧をはずす
//それなりに使えるレベルでよいので、深さも10まで
function ChangeStr(S) {
S = S.replace(/[{}]+/g,"");
S = S.replace(/[ ]+/g,"");
for(i=0; i<5;i++){
S = S.replace("?^","exp");
}
S = S.replace(/([a-zA-Z/\^])(\()/g,"$1#$2");
S = S.replace(/\(-([0-9a-zA-Z])/g,"(~$1");
S = S.split("");
for (i = 0; i < S.length-2;i++ ){
n=0;
if(S[i]=="#"){
for (j = i+1; j<S.length;j++ ){
if(S[j]=="("){n=n+1;}
if(S[j]==")"){n=n-1;}
if(n==0){S[i+1]="{";S[j]="}";break;}
}
}
}
S = S.join("");
for(i=0;i<10;i++){
S = S.replace(/\(([0-9a-zA-Z_*/{}#\~]+)\)/g, "$1");
}
S = S.replace(/[#]/g, "");
S = S.replace(/[~]/g, "-");
S = S.replace(/[{]/g, "(");
S = S.replace(/[}]/g, ")");
S = S.replace(/\^\(([0-9]+)\)/g, "^$1");
return S;
}
//メイン
var S;
ClipBoard.Clear(); //クリア
Editor.Copy(); //コピー
S = ClipBoard.Text;
if (S != "" ){
S = ChangeStr(S);
ClipBoard.Text = S;
Editor.Past();
}
ClipBoard.Undo(); //戻す