サイトスワップ掲示板

Re: javascriptによるシンプルサイトスワップエディター改良版その3

No.112: 2018-10-08(月) 07:29:21
投稿者: セバスちゃん
ツリーに返信が上手くいかなかったのでルートに張り付け
これが3番目です。

function sutika(aa){ //サイトスワップを数値に変換し、配列に格納
var i;
var j;
var x;
var nagasa;
var breakPP=0;
var ssbefor;
var ssbefor2;
ssbefor = Form1.waza.value;
ssbefor2 = Form1.yobi.value;
if(aa==1){
nagasa = ssbefor2.length;
}else{
nagasa = ssbefor.length;
}
for(i=0;i<nagasa;i++){
if(aa==1){
x=ssbefor2.charAt(i);
}else{
x=ssbefor.charAt(i);
}
for(j=0;j<=35;j++){
if(x==ss[j]){
if(aa==1){
kazusi2[i]=j;
}else{
kazusi[i]=j;
}
breakPP=1;
break;
}
}
if(breakPP==0 && aa==0){
alert("サイトスワップが成立していませんよ");
break;
}
breakPP=0;
}
}
function hyouka(aa){ //ジャグリング可能なサイトスワップかどうかを判定
var i;
var j;
var k;
var owari = 0;
var su=0;
var nagasa;
var ssbefor;
ssbefor = Form1.waza.value;

nagasa = ssbefor.length;
for(i=0;i<nagasa;i++){
su=su+kazusi[i];
}
if(su%nagasa!=0){
owari = 1;
alert("サイトスワップが成立していません");
}
else{
for(j=0;j<nagasa;j++){
for(k=0;k<nagasa;k++){
if(k<=j) continue;
if(((kazusi[j]+j)%nagasa)==((kazusi[k]+k)%nagasa)){
owari=1;
alert("サイトスワップが成立していません");
break;
}
if(owari==1) break;

}
if(owari==1) break;
}
if(owari==0 && aa == 1){
alert(su/nagasa + "個のサイトスワップです");
}
}
}
function ikisakihenkan(){//サイトスワップのたどり着く先を求めて行き先の配列に格納
var nagasa;
var i;
var ssbefor;
ssbefor = Form1.waza.value;
nagasa = ssbefor.length;
for (i=0;i<nagasa;i++){
ikisaki[i] = (kazusi[i]+i+1) % nagasa;
if (ikisaki[i] == 0){
ikisaki[i] = nagasa;
}
}
}
function zouka(aa){//引数の数だけ一番後ろの英数字を増減させる
var nagasa;
var i;
var j;
var newsiteswap;
newsiteswap = "";
sutika(0);
hyouka();
nagasa= Form1.waza.value.length;
ikisakihenkan();
kazusi[nagasa-1] = kazusi[nagasa-1] + aa;
if(kazusi[nagasa-1]<36 && kazusi[nagasa-1]>(-1)){
ikisaki[nagasa-1] = ikisaki[nagasa-1] + aa;
while(ikisaki[nagasa-1] >= (nagasa+1)){
ikisaki[nagasa-1] = ikisaki[nagasa-1] - nagasa;
}
while(ikisaki[nagasa-1] <= 0){
ikisaki[nagasa-1] = ikisaki[nagasa-1] + nagasa;
}
for(i=0;i<nagasa-1;i++){
if(ikisaki[i]== ikisaki[nagasa-1]){
ikisaki[i] = ikisaki[i]-aa;
kazusi[i] = kazusi[i]-aa;
if(kazusi[i]>(-1) && kazusi[i]<36){
for(j=0;j<nagasa;j++){
newsiteswap= newsiteswap + ss[kazusi[j]];
}
Form1.waza.value = newsiteswap;
}
else{
alert("ずらして");
}
}
}

}
else{
alert("ずらして");
}


}
function kosuu(bb){//引数の数だけ道具の数を増減させる
var nagasa;
var i;
var newsiteswap;
newsiteswap = "";
sutika(0);
hyouka();
nagasa= Form1.waza.value.length;
kazusi[nagasa-1] = kazusi[nagasa-1] + (nagasa*bb);

if(kazusi[nagasa-1]<36 && kazusi[nagasa-1]>(-1)){
for(i=0;i<nagasa;i++){
newsiteswap = newsiteswap+ ss[kazusi[i]];
}
Form1.waza.value = newsiteswap;
}
else{
alert("たぶん範囲外");
}
}
function hantei(){//サイトスワップの判定
sutika(0);
hyouka(1);
}
function nantoka(){//英数字の羅列をサイトスワップに何とか変換する
var nagasa;
var i;
var j;
var x;
var y;
var ana;
var gosai;
var newsiteswap;
ana = 0;
gosai=0;
nagasa = Form1.waza.value.length;
newsiteswap = "";
sutika(0);
ikisakihenkan();
for(i=0;i<nagasa;i++){
for(j=0;j<nagasa;j++){
if(ikisaki[i]==ikisaki[j] && (i!=j)){
ana = 1;
for(x=1;x<=nagasa;x++){
ana = 1;
for(y=0;y<nagasa;y++){
if(x==ikisaki[y]){
ana = 0;
}
}
if(ana == 1){
kazusi[i] = kazusi[i] + (x - ikisaki[i]);
if(kazusi[i]>35){
kazusi[i]= kazusi[i]-nagasa;
if(kazusi[i]<0){
gosai=5;
}
}
if(kazusi[i]<0){
kazusi[i]= kazusi[i]+nagasa;
if(kazusi[i]>35){
gosai=5;
}
}
ikisaki[i]=x;
break;
}
}
}
}
}
if(gosai==5){
alert("よくわかんない(;_;)");
for(i=0;i<nagasa;i++){
newsiteswap=newsiteswap+ss[kazusi[1]];
}
Form1.waza.value = newsiteswap;
alert("これでいいよね(^-^)");
}
else{
for(i=0;i<nagasa;i++){
newsiteswap=newsiteswap+ss[kazusi[i]];

}
Form1.waza.value = newsiteswap;
}
}
function korenisuru(){//サイトスワップの一番後ろの数字を、テキストボックスに入力した数字に変更する
var nagasa;
var henkoumoto;
var henkousaki;
var aratanasa;
var i;
nagasa = Form1.waza.value.length;
sutika(0);
henkoumoto = kazusi[nagasa - 1];
for(i=0;i<36;i++){
if(Form1.kore.value == ss[i]){
henkousaki = i;
}
}
aratanasa = henkousaki - henkoumoto;
if(nagasa - aratanasa == 0){
alert("この場合、個数を増やすを実行するのと同じことになります。そちらで対処してください");
}
else if(nagasa + aratanasa == 0){
alert("この場合、個数を減らすを実行するのと同じことになります。そちらで対処してください");
}
else{

zouka(aratanasa);
}
}
function tasihikinori(aa){
var moto;
moto = parseInt(Form1.nori.value);
moto = moto + aa;
if(moto<10 && moto>=0){
Form1.nori.value = moto;
}
}
function tasihiki(aa){
var i;
var motonoatai;
if(Form1.kore.value.length != 1){
alert("1文字の英数字(小文字)でお願いします。");
}
else{
for(i=0;i<36;i++){
if(Form1.kore.value == ss[i]){
motonoatai = i;
}
}
motonoatai = motonoatai + aa;
if(motonoatai >= 0 && motonoatai < 36){
Form1.kore.value = ss[motonoatai];
}
else{
alert("範囲外です");
}
}
}
function gyakuni(){//逆再生のサイトスワップの生成
var nagasa;
var i;
var j;
var newss;
newss = "";
sutika(0);
ikisakihenkan();
nagasa = Form1.waza.value.length;
for(i=nagasa;i>0;i--){
for(j=0;j<nagasa;j++){
if(ikisaki[j]==i){
newss = newss + ss[kazusi[j]];
}
}
}
Form1.waza.value = newss;
}
//var canvas = document.getElementById('canvassample1');
//if ( ! canvas || ! canvas.getContext ) {
// return false;
//}
//var ctx = canvas.getContext('2d');
//ctx.strokeStyle = "rgba(0,0,0,1)";
// ctx.fillStyle = "rgba(210,210,210,1)";
// ctx.beginPath();
// ctx.arc(200,700,20,0,Math.PI*2,true);
// ctx.fill();
// ctx.stroke();
</script>
</body>

関連ツリー

【1】 javascriptによるシンプルサイトスワップエディター改良版 No.110 セバスちゃん 2018-10-08(月) 07:23:02
Re: javascriptによるシンプルサイトスワップエディター改良版 No.111 セバスちゃん 2018-10-08(月) 07:25:25
Re: javascriptによるシンプルサイトスワップエディター改良版その3 No.112 セバスちゃん 2018-10-08(月) 07:29:21
Re^2: javascriptによるシンプルサイトスワップエディター改良版その3 No.113 yuji 2018-10-08(月) 12:57:56

掲示板に戻る