Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #34379 > unrolled thread

Fork algorithm

Started byJonas Thörnvall <jonas.thornvall@gmail.com>
First post2017-11-21 17:58 -0800
Last post2017-11-22 19:07 -0800
Articles 6 — 1 participant

Back to article view | Back to comp.lang.javascript


Contents

  Fork algorithm Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-21 17:58 -0800
    Re: Fork algorithm Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 07:50 -0800
      Re: Fork algorithm Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 18:06 -0800
        Re: Fork algorithm Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 18:47 -0800
          Re: Fork algorithm Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 18:56 -0800
            Re: Fork algorithm Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 19:07 -0800

#34379 — Fork algorithm

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2017-11-21 17:58 -0800
SubjectFork algorithm
Message-ID<c5be9738-d254-48c0-a0fe-705ef502baef@googlegroups.com>
Had some time to remove the paragraphs and replace with numbers tonight. 
I think it is ok. But it don't handle any special chars, it just fork plain words into a structure.

http://anybase.co.nf/insertTWO/chessbook.html 

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Cache-Control" content="no-store" /> 
    <meta http-Equiv="content-type" content="text/html; charset=UTF-8"> 
    <link REL="StyleSheet" TYPE="text/css" HREF="drop.css"> 
    <script type="text/javascript" src="loadsave.js"></script> 
    <script type="text/javascript" src="CSS.js"></script> 
</head> 
<script> 

function createStruct() { 
    newword=true; 
    beeninside=false; 
    inserted = false; 
    endstruct = "*"; 
    separator = " "; 
    subseparator = ""; 
    newString= ""; 
    stringPrevMem = ""; 
    stringMem = ""; 
    posStructString=""; 
    //Get values to read in 
    startval="a*1"; 
    endval="zzz*3"; 
    encodedString = document.getElementById("encodedText").value; 
    encodedString=startval+encodedString+endval; 
    mystr = document.getElementById("inputTextToSave").value; 
    //Split string into words to read in 
    strArr = mystr.split(separator); 
    //Search words 
    for (var x = 0; x < strArr.length; x++) { 
        newString=strArr[x]; 
        stringInserted=false; 
        searchItem(newString); 
     } 
     printArray(); 
} 

function searchItem(newString) { 
      stringPrevMem = "";stringMem = "";z=0; 
      while (z < encodedString.length && stringInserted==false) { 
         if (encodedString.charAt(z) == "*") { 
              //FOUND WHOLE WORD 
              newword=true; beeninside=false; 
            //  alert("WORD FOUND, STRINGMEM="+stringMem); 
        } else if (!isNaN(parseInt(encodedString.charAt(z)))) { 
       // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z); 
        stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
        } else { 
            stringMem += encodedString.charAt(z); 
            newSubString=newString.substring(0,stringMem.length); 
         //   alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString); 
            if (newSubString==stringMem) { 
           //      alert("Strings equal size"); 
                 oldStructLength=z; 
                 document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n"; 
            } 
            else if (newSubString>stringMem && newword==true && beeninside==false) { 
             //    alert("Newsubstring bigger");     
                 oldStructLength=z; 
                 newword=false;beeninside=true; 
                 stringPrevMem = stringMem; 
            } 
            else if (newSubString<stringMem) { 
             //    alert("Newsubstring smaller *INSERT*"); 
                 oldStructLength=z; 
                 checkWhatTOInsert(); 
            } 
       } 
     z++; 
    } 
} 

function checkWhatTOInsert(){ 
  putString=""; 
  insertString = newString.substring(newSubString.length-1, newString.length); 
  insertChar = insertString.split(''); 
  for (var m=0;m<insertChar.length;m++){ 
      putString+=insertChar[m]; 
  } 
  putString+="*"; 
  putString+=insertChar.length; 
  encodedString=insertSubstring(encodedString,oldStructLength,putString); 
  document.getElementById("encodedText").value=encodedString; 
  stringInserted=true; 
  //alert ("NEW ENCODEDSTRING "+encodedString); 
} 

function insertSubstring(str, index, value) { 
    return str.substr(0, index) + value + str.substr(index); 
} 

function printArray() { 
       document.getElementById("decodedText").value=""; 
       encodedString = document.getElementById("encodedText").value; 
       stringMem=""; 
       for (var z = 0; z < encodedString.length; z++) { 
        if (!isNaN(parseInt(encodedString.charAt(z)))) { 
            stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
        } else if (encodedString.charAt(z) == "*") { 
            document.getElementById("decodedText").value+=stringMem+"\n"; 
        } else { 
            stringMem += encodedString.charAt(z); 
        } 
   } 
} 

</script> 
<body onload="printArray();"> 
<div class="dropdown"> 
<button onClick="MA()" class="dropbtn"><B>___File___</button> 
<div id="MA" class="dropdown-content"> 
<button onclick="newFile()" class="button"><B>New File</B></button> 
<br> 
<label class="custom-file-upload"> 
<input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B> 
</label> 
<br> 
<button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input> 
</div> 
</div> 
<br> 
<Font size="4">DEBUG</Font><br> 
<textarea id="debug" cols="80" rows="3"></textarea><br> 
<br> 
<button onclick="createStruct()">INSERT BUTTON!</button> 
<br> 
<Font size="4">INSERT IN STRUCTURE</Font><br> 
<textarea id="inputTextToSave" cols="80" rows="12">stop come lose fine hope happy lovely me jumping tree basket ball banana bar bad bank</textarea><br> 
<br> 
<Font size="4">STRUCTURE</Font><br> 
<textarea id="encodedText" cols="80" rows="12">ball*2nana*4t*2un*1tt*4</textarea><br> 
<br> 
<Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br> 
<textarea id="decodedText" cols="80" rows="12"></textarea><br> 
</body> 
</html>

[toc] | [next] | [standalone]


#34385

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2017-11-22 07:50 -0800
Message-ID<b7e9f037-f25d-4edd-a9e5-83e71cf9e9aa@googlegroups.com>
In reply to#34379
Den onsdag 22 november 2017 kl. 02:58:12 UTC+1 skrev Jonas Thörnvall:
> Had some time to remove the paragraphs and replace with numbers tonight. 
> I think it is ok. But it don't handle any special chars, it just fork plain words into a structure.
> 
> http://anybase.co.nf/insertTWO/chessbook.html 
> 
> <!DOCTYPE html> 
> <html> 
> <head> 
>     <meta http-equiv="Cache-Control" content="no-store" /> 
>     <meta http-Equiv="content-type" content="text/html; charset=UTF-8"> 
>     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css"> 
>     <script type="text/javascript" src="loadsave.js"></script> 
>     <script type="text/javascript" src="CSS.js"></script> 
> </head> 
> <script> 
> 
> function createStruct() { 
>     newword=true; 
>     beeninside=false; 
>     inserted = false; 
>     endstruct = "*"; 
>     separator = " "; 
>     subseparator = ""; 
>     newString= ""; 
>     stringPrevMem = ""; 
>     stringMem = ""; 
>     posStructString=""; 
>     //Get values to read in 
>     startval="a*1"; 
>     endval="zzz*3"; 
>     encodedString = document.getElementById("encodedText").value; 
>     encodedString=startval+encodedString+endval; 
>     mystr = document.getElementById("inputTextToSave").value; 
>     //Split string into words to read in 
>     strArr = mystr.split(separator); 
>     //Search words 
>     for (var x = 0; x < strArr.length; x++) { 
>         newString=strArr[x]; 
>         stringInserted=false; 
>         searchItem(newString); 
>      } 
>      printArray(); 
> } 
> 
> function searchItem(newString) { 
>       stringPrevMem = "";stringMem = "";z=0; 
>       while (z < encodedString.length && stringInserted==false) { 
>          if (encodedString.charAt(z) == "*") { 
>               //FOUND WHOLE WORD 
>               newword=true; beeninside=false; 
>             //  alert("WORD FOUND, STRINGMEM="+stringMem); 
>         } else if (!isNaN(parseInt(encodedString.charAt(z)))) { 
>        // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z); 
>         stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
>         } else { 
>             stringMem += encodedString.charAt(z); 
>             newSubString=newString.substring(0,stringMem.length); 
>          //   alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString); 
>             if (newSubString==stringMem) { 
>            //      alert("Strings equal size"); 
>                  oldStructLength=z; 
>                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n"; 
>             } 
>             else if (newSubString>stringMem && newword==true && beeninside==false) { 
>              //    alert("Newsubstring bigger");     
>                  oldStructLength=z; 
>                  newword=false;beeninside=true; 
>                  stringPrevMem = stringMem; 
>             } 
>             else if (newSubString<stringMem) { 
>              //    alert("Newsubstring smaller *INSERT*"); 
>                  oldStructLength=z; 
>                  checkWhatTOInsert(); 
>             } 
>        } 
>      z++; 
>     } 
> } 
> 
> function checkWhatTOInsert(){ 
>   putString=""; 
>   insertString = newString.substring(newSubString.length-1, newString.length); 
>   insertChar = insertString.split(''); 
>   for (var m=0;m<insertChar.length;m++){ 
>       putString+=insertChar[m]; 
>   } 
>   putString+="*"; 
>   putString+=insertChar.length; 
>   encodedString=insertSubstring(encodedString,oldStructLength,putString); 
>   document.getElementById("encodedText").value=encodedString; 
>   stringInserted=true; 
>   //alert ("NEW ENCODEDSTRING "+encodedString); 
> } 
> 
> function insertSubstring(str, index, value) { 
>     return str.substr(0, index) + value + str.substr(index); 
> } 
> 
> function printArray() { 
>        document.getElementById("decodedText").value=""; 
>        encodedString = document.getElementById("encodedText").value; 
>        stringMem=""; 
>        for (var z = 0; z < encodedString.length; z++) { 
>         if (!isNaN(parseInt(encodedString.charAt(z)))) { 
>             stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
>         } else if (encodedString.charAt(z) == "*") { 
>             document.getElementById("decodedText").value+=stringMem+"\n"; 
>         } else { 
>             stringMem += encodedString.charAt(z); 
>         } 
>    } 
> } 
> 
> </script> 
> <body onload="printArray();"> 
> <div class="dropdown"> 
> <button onClick="MA()" class="dropbtn"><B>___File___</button> 
> <div id="MA" class="dropdown-content"> 
> <button onclick="newFile()" class="button"><B>New File</B></button> 
> <br> 
> <label class="custom-file-upload"> 
> <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B> 
> </label> 
> <br> 
> <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input> 
> </div> 
> </div> 
> <br> 
> <Font size="4">DEBUG</Font><br> 
> <textarea id="debug" cols="80" rows="3"></textarea><br> 
> <br> 
> <button onclick="createStruct()">INSERT BUTTON!</button> 
> <br> 
> <Font size="4">INSERT IN STRUCTURE</Font><br> 
> <textarea id="inputTextToSave" cols="80" rows="12">stop come lose fine hope happy lovely me jumping tree basket ball banana bar bad bank</textarea><br> 
> <br> 
> <Font size="4">STRUCTURE</Font><br> 
> <textarea id="encodedText" cols="80" rows="12">ball*2nana*4t*2un*1tt*4</textarea><br> 
> <br> 
> <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br> 
> <textarea id="decodedText" cols="80" rows="12"></textarea><br> 
> </body> 
> </html>
I just had a look at the paragraph version, it have same problem with the fork when inserting. 

If anyone can see what goes wrong i am interested, my biggest fear is that it is a cascading problem in structure. I don't think it could be, but i have not thought that deep about it because i figured it would not be to start with. 

Lets hope it just a case i missed... 
If you have time and spot it tell me, otherwise i have to think and that is a cumbersome process. 

Paragraph forking structure 
http://anybase.co.nf/insert/chessbook.html 

Number forking same structure "removed paragraphs" 
http://anybase.co.nf/insertTWO/chessbook.html 

[toc] | [prev] | [next] | [standalone]


#34387

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2017-11-22 18:06 -0800
Message-ID<48bf3317-1664-4f3b-ad94-104026636d5f@googlegroups.com>
In reply to#34385
Den onsdag 22 november 2017 kl. 16:50:30 UTC+1 skrev Jonas Thörnvall:
> Den onsdag 22 november 2017 kl. 02:58:12 UTC+1 skrev Jonas Thörnvall:
> > Had some time to remove the paragraphs and replace with numbers tonight. 
> > I think it is ok. But it don't handle any special chars, it just fork plain words into a structure.
> > 
> > http://anybase.co.nf/insertTWO/chessbook.html 
> > 
> > <!DOCTYPE html> 
> > <html> 
> > <head> 
> >     <meta http-equiv="Cache-Control" content="no-store" /> 
> >     <meta http-Equiv="content-type" content="text/html; charset=UTF-8"> 
> >     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css"> 
> >     <script type="text/javascript" src="loadsave.js"></script> 
> >     <script type="text/javascript" src="CSS.js"></script> 
> > </head> 
> > <script> 
> > 
> > function createStruct() { 
> >     newword=true; 
> >     beeninside=false; 
> >     inserted = false; 
> >     endstruct = "*"; 
> >     separator = " "; 
> >     subseparator = ""; 
> >     newString= ""; 
> >     stringPrevMem = ""; 
> >     stringMem = ""; 
> >     posStructString=""; 
> >     //Get values to read in 
> >     startval="a*1"; 
> >     endval="zzz*3"; 
> >     encodedString = document.getElementById("encodedText").value; 
> >     encodedString=startval+encodedString+endval; 
> >     mystr = document.getElementById("inputTextToSave").value; 
> >     //Split string into words to read in 
> >     strArr = mystr.split(separator); 
> >     //Search words 
> >     for (var x = 0; x < strArr.length; x++) { 
> >         newString=strArr[x]; 
> >         stringInserted=false; 
> >         searchItem(newString); 
> >      } 
> >      printArray(); 
> > } 
> > 
> > function searchItem(newString) { 
> >       stringPrevMem = "";stringMem = "";z=0; 
> >       while (z < encodedString.length && stringInserted==false) { 
> >          if (encodedString.charAt(z) == "*") { 
> >               //FOUND WHOLE WORD 
> >               newword=true; beeninside=false; 
> >             //  alert("WORD FOUND, STRINGMEM="+stringMem); 
> >         } else if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> >        // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z); 
> >         stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> >         } else { 
> >             stringMem += encodedString.charAt(z); 
> >             newSubString=newString.substring(0,stringMem.length); 
> >          //   alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString); 
> >             if (newSubString==stringMem) { 
> >            //      alert("Strings equal size"); 
> >                  oldStructLength=z; 
> >                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n"; 
> >             } 
> >             else if (newSubString>stringMem && newword==true && beeninside==false) { 
> >              //    alert("Newsubstring bigger");     
> >                  oldStructLength=z; 
> >                  newword=false;beeninside=true; 
> >                  stringPrevMem = stringMem; 
> >             } 
> >             else if (newSubString<stringMem) { 
> >              //    alert("Newsubstring smaller *INSERT*"); 
> >                  oldStructLength=z; 
> >                  checkWhatTOInsert(); 
> >             } 
> >        } 
> >      z++; 
> >     } 
> > } 
> > 
> > function checkWhatTOInsert(){ 
> >   putString=""; 
> >   insertString = newString.substring(newSubString.length-1, newString.length); 
> >   insertChar = insertString.split(''); 
> >   for (var m=0;m<insertChar.length;m++){ 
> >       putString+=insertChar[m]; 
> >   } 
> >   putString+="*"; 
> >   putString+=insertChar.length; 
> >   encodedString=insertSubstring(encodedString,oldStructLength,putString); 
> >   document.getElementById("encodedText").value=encodedString; 
> >   stringInserted=true; 
> >   //alert ("NEW ENCODEDSTRING "+encodedString); 
> > } 
> > 
> > function insertSubstring(str, index, value) { 
> >     return str.substr(0, index) + value + str.substr(index); 
> > } 
> > 
> > function printArray() { 
> >        document.getElementById("decodedText").value=""; 
> >        encodedString = document.getElementById("encodedText").value; 
> >        stringMem=""; 
> >        for (var z = 0; z < encodedString.length; z++) { 
> >         if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> >             stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> >         } else if (encodedString.charAt(z) == "*") { 
> >             document.getElementById("decodedText").value+=stringMem+"\n"; 
> >         } else { 
> >             stringMem += encodedString.charAt(z); 
> >         } 
> >    } 
> > } 
> > 
> > </script> 
> > <body onload="printArray();"> 
> > <div class="dropdown"> 
> > <button onClick="MA()" class="dropbtn"><B>___File___</button> 
> > <div id="MA" class="dropdown-content"> 
> > <button onclick="newFile()" class="button"><B>New File</B></button> 
> > <br> 
> > <label class="custom-file-upload"> 
> > <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B> 
> > </label> 
> > <br> 
> > <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input> 
> > </div> 
> > </div> 
> > <br> 
> > <Font size="4">DEBUG</Font><br> 
> > <textarea id="debug" cols="80" rows="3"></textarea><br> 
> > <br> 
> > <button onclick="createStruct()">INSERT BUTTON!</button> 
> > <br> 
> > <Font size="4">INSERT IN STRUCTURE</Font><br> 
> > <textarea id="inputTextToSave" cols="80" rows="12">stop come lose fine hope happy lovely me jumping tree basket ball banana bar bad bank</textarea><br> 
> > <br> 
> > <Font size="4">STRUCTURE</Font><br> 
> > <textarea id="encodedText" cols="80" rows="12">ball*2nana*4t*2un*1tt*4</textarea><br> 
> > <br> 
> > <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br> 
> > <textarea id="decodedText" cols="80" rows="12"></textarea><br> 
> > </body> 
> > </html>
> I just had a look at the paragraph version, it have same problem with the fork when inserting. 
> 
> If anyone can see what goes wrong i am interested, my biggest fear is that it is a cascading problem in structure. I don't think it could be, but i have not thought that deep about it because i figured it would not be to start with. 
> 
> Lets hope it just a case i missed... 
> If you have time and spot it tell me, otherwise i have to think and that is a cumbersome process. 
> 
> Paragraph forking structure 
> http://anybase.co.nf/insert/chessbook.html 
> 
> Number forking same structure "removed paragraphs" 
> http://anybase.co.nf/insertTWO/chessbook.html

Remove the stars but the fork to insert still does not work correct, anyone with good eyes?

http://anybase.co.nf/insertTHREE/chessbook.html

[toc] | [prev] | [next] | [standalone]


#34388

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2017-11-22 18:47 -0800
Message-ID<fed8c4d7-613f-47d3-b29d-713b509e9103@googlegroups.com>
In reply to#34387
Den torsdag 23 november 2017 kl. 03:06:54 UTC+1 skrev Jonas Thörnvall:
> Den onsdag 22 november 2017 kl. 16:50:30 UTC+1 skrev Jonas Thörnvall:
> > Den onsdag 22 november 2017 kl. 02:58:12 UTC+1 skrev Jonas Thörnvall:
> > > Had some time to remove the paragraphs and replace with numbers tonight. 
> > > I think it is ok. But it don't handle any special chars, it just fork plain words into a structure.
> > > 
> > > http://anybase.co.nf/insertTWO/chessbook.html 
> > > 
> > > <!DOCTYPE html> 
> > > <html> 
> > > <head> 
> > >     <meta http-equiv="Cache-Control" content="no-store" /> 
> > >     <meta http-Equiv="content-type" content="text/html; charset=UTF-8"> 
> > >     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css"> 
> > >     <script type="text/javascript" src="loadsave.js"></script> 
> > >     <script type="text/javascript" src="CSS.js"></script> 
> > > </head> 
> > > <script> 
> > > 
> > > function createStruct() { 
> > >     newword=true; 
> > >     beeninside=false; 
> > >     inserted = false; 
> > >     endstruct = "*"; 
> > >     separator = " "; 
> > >     subseparator = ""; 
> > >     newString= ""; 
> > >     stringPrevMem = ""; 
> > >     stringMem = ""; 
> > >     posStructString=""; 
> > >     //Get values to read in 
> > >     startval="a*1"; 
> > >     endval="zzz*3"; 
> > >     encodedString = document.getElementById("encodedText").value; 
> > >     encodedString=startval+encodedString+endval; 
> > >     mystr = document.getElementById("inputTextToSave").value; 
> > >     //Split string into words to read in 
> > >     strArr = mystr.split(separator); 
> > >     //Search words 
> > >     for (var x = 0; x < strArr.length; x++) { 
> > >         newString=strArr[x]; 
> > >         stringInserted=false; 
> > >         searchItem(newString); 
> > >      } 
> > >      printArray(); 
> > > } 
> > > 
> > > function searchItem(newString) { 
> > >       stringPrevMem = "";stringMem = "";z=0; 
> > >       while (z < encodedString.length && stringInserted==false) { 
> > >          if (encodedString.charAt(z) == "*") { 
> > >               //FOUND WHOLE WORD 
> > >               newword=true; beeninside=false; 
> > >             //  alert("WORD FOUND, STRINGMEM="+stringMem); 
> > >         } else if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> > >        // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z); 
> > >         stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> > >         } else { 
> > >             stringMem += encodedString.charAt(z); 
> > >             newSubString=newString.substring(0,stringMem.length); 
> > >          //   alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString); 
> > >             if (newSubString==stringMem) { 
> > >            //      alert("Strings equal size"); 
> > >                  oldStructLength=z; 
> > >                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n"; 
> > >             } 
> > >             else if (newSubString>stringMem && newword==true && beeninside==false) { 
> > >              //    alert("Newsubstring bigger");     
> > >                  oldStructLength=z; 
> > >                  newword=false;beeninside=true; 
> > >                  stringPrevMem = stringMem; 
> > >             } 
> > >             else if (newSubString<stringMem) { 
> > >              //    alert("Newsubstring smaller *INSERT*"); 
> > >                  oldStructLength=z; 
> > >                  checkWhatTOInsert(); 
> > >             } 
> > >        } 
> > >      z++; 
> > >     } 
> > > } 
> > > 
> > > function checkWhatTOInsert(){ 
> > >   putString=""; 
> > >   insertString = newString.substring(newSubString.length-1, newString.length); 
> > >   insertChar = insertString.split(''); 
> > >   for (var m=0;m<insertChar.length;m++){ 
> > >       putString+=insertChar[m]; 
> > >   } 
> > >   putString+="*"; 
> > >   putString+=insertChar.length; 
> > >   encodedString=insertSubstring(encodedString,oldStructLength,putString); 
> > >   document.getElementById("encodedText").value=encodedString; 
> > >   stringInserted=true; 
> > >   //alert ("NEW ENCODEDSTRING "+encodedString); 
> > > } 
> > > 
> > > function insertSubstring(str, index, value) { 
> > >     return str.substr(0, index) + value + str.substr(index); 
> > > } 
> > > 
> > > function printArray() { 
> > >        document.getElementById("decodedText").value=""; 
> > >        encodedString = document.getElementById("encodedText").value; 
> > >        stringMem=""; 
> > >        for (var z = 0; z < encodedString.length; z++) { 
> > >         if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> > >             stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> > >         } else if (encodedString.charAt(z) == "*") { 
> > >             document.getElementById("decodedText").value+=stringMem+"\n"; 
> > >         } else { 
> > >             stringMem += encodedString.charAt(z); 
> > >         } 
> > >    } 
> > > } 
> > > 
> > > </script> 
> > > <body onload="printArray();"> 
> > > <div class="dropdown"> 
> > > <button onClick="MA()" class="dropbtn"><B>___File___</button> 
> > > <div id="MA" class="dropdown-content"> 
> > > <button onclick="newFile()" class="button"><B>New File</B></button> 
> > > <br> 
> > > <label class="custom-file-upload"> 
> > > <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B> 
> > > </label> 
> > > <br> 
> > > <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input> 
> > > </div> 
> > > </div> 
> > > <br> 
> > > <Font size="4">DEBUG</Font><br> 
> > > <textarea id="debug" cols="80" rows="3"></textarea><br> 
> > > <br> 
> > > <button onclick="createStruct()">INSERT BUTTON!</button> 
> > > <br> 
> > > <Font size="4">INSERT IN STRUCTURE</Font><br> 
> > > <textarea id="inputTextToSave" cols="80" rows="12">stop come lose fine hope happy lovely me jumping tree basket ball banana bar bad bank</textarea><br> 
> > > <br> 
> > > <Font size="4">STRUCTURE</Font><br> 
> > > <textarea id="encodedText" cols="80" rows="12">ball*2nana*4t*2un*1tt*4</textarea><br> 
> > > <br> 
> > > <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br> 
> > > <textarea id="decodedText" cols="80" rows="12"></textarea><br> 
> > > </body> 
> > > </html>
> > I just had a look at the paragraph version, it have same problem with the fork when inserting. 
> > 
> > If anyone can see what goes wrong i am interested, my biggest fear is that it is a cascading problem in structure. I don't think it could be, but i have not thought that deep about it because i figured it would not be to start with. 
> > 
> > Lets hope it just a case i missed... 
> > If you have time and spot it tell me, otherwise i have to think and that is a cumbersome process. 
> > 
> > Paragraph forking structure 
> > http://anybase.co.nf/insert/chessbook.html 
> > 
> > Number forking same structure "removed paragraphs" 
> > http://anybase.co.nf/insertTWO/chessbook.html
> 
> Remove the stars but the fork to insert still does not work correct, anyone with good eyes?
> 
> http://anybase.co.nf/insertTHREE/chessbook.html

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Cache-Control" content="no-store" />
    <meta http-Equiv="content-type" content="text/html; charset=UTF-8">
    <link REL="StyleSheet" TYPE="text/css" HREF="drop.css">
    <script type="text/javascript" src="loadsave.js"></script>
    <script type="text/javascript" src="CSS.js"></script>
</head>
<script>

function createStruct() {
    newword=true;
    beeninside=false;
    inserted = false;
    endstruct = "*";
    separator = " ";
    subseparator = "";
    newString= "";
    stringPrevMem = "";
    stringMem = "";
    posStructString="";
    //Start end dummies for insert
    startval="a1";
    endval="zzz3";
    //Get values to read in
    encodedString = document.getElementById("encodedText").value;
    encodedString=startval+encodedString+endval;
    mystr = document.getElementById("inputTextToSave").value;
    //Split string into words to read in
    strArr = mystr.split(separator);
    //Search words
    for (var x = 0; x < strArr.length; x++) {
        newString=strArr[x];
        stringInserted=false;
        searchItem(newString);
     }
     printArray();
}

function searchItem(newString) {
      stringPrevMem = "";stringMem = "";z=0;
      while (z < encodedString.length && stringInserted==false) {
        if (!isNaN(parseInt(encodedString.charAt(z)))) {
        // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z);
        newword=true; beeninside=false;
        stringMem = stringMem.slice(0,-encodedString.charAt(z));
        } else {
            stringMem += encodedString.charAt(z);
            newSubString=newString.substring(0,stringMem.length);
              // alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString);
            if (newSubString==stringMem) {
                 oldStructLength=z;
             //  alert("Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");
                 document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
            }
            else if (newSubString>stringMem && newword==true && beeninside==false) {
                 oldStructLength=z;
                 newword=false;beeninside=true;
                 stringPrevMem = stringMem;
             //  alert("Old position="+oldStructLength+" BIGGER Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");  
                 document.getElementById("debug").value+="Old position="+oldStructLength+" BIGGER Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
            }
            else if (newSubString<stringMem) {
                 oldStructLength=z;
             //  alert("Old position="+oldStructLength+" SMALLER INSERT Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");
                 document.getElementById("debug").value+="Old position="+oldStructLength+" SMALLER INSERT Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
                 checkWhatTOInsert();
            }
       }
     z++;
    }
}

function checkWhatTOInsert(){
  putString="";
  putString = newString.substring(newSubString.length-1, newString.length);
  putString+=putString.length;
  encodedString=insertSubstring(encodedString,oldStructLength,putString);
  document.getElementById("encodedText").value=encodedString;
  stringInserted=true;
  alert ("NEW ENCODEDSTRING "+encodedString);
}

function insertSubstring(str, index, value) {
    return str.substr(0, index) + value + str.substr(index);
}

function printArray() {
       document.getElementById("decodedText").value="";
       encodedString = document.getElementById("encodedText").value;
       stringMem="";
       for (var z = 0; z < encodedString.length; z++) {
        if (!isNaN(parseInt(encodedString.charAt(z)))) {
           document.getElementById("decodedText").value+=stringMem+"\n";
           stringMem = stringMem.slice(0,-encodedString.charAt(z));
        } else {
            stringMem += encodedString.charAt(z);
        }
   }
}
</script>

<body onload="printArray();">
<div class="dropdown">
<button onClick="MA()" class="dropbtn"><B>___File___</button>
<div id="MA" class="dropdown-content">
<button onclick="newFile()" class="button"><B>New File</B></button>
<br>
<label class="custom-file-upload">
<input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B>
</label>
<br>
<button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input>
</div>
</div>
<br>
<Font size="4">DEBUG</Font><br>
<textarea id="debug" cols="80" rows="3"></textarea><br>
<br>
<button onclick="createStruct()">INSERT BUTTON!</button>
<br>
<Font size="4">INSERT IN STRUCTURE</Font><br>
<textarea id="inputTextToSave" cols="80" rows="12">basket banana bar bad bankball bat book branch buddy bed but bullet bright butt bell bishop joke tee task stop come lose hope fine ful flower cat cup crisp check choice charm fish happy lovely me jumping jack tree</textarea><br>
<br>
<Font size="4">FORK STRUCTURE</Font><br>
<textarea id="encodedText" cols="80" rows="12"></textarea><br>
<br>
<Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br>
<textarea id="decodedText" cols="80" rows="12"></textarea><br>
</body>

[toc] | [prev] | [next] | [standalone]


#34389

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2017-11-22 18:56 -0800
Message-ID<45f6e64d-9d8d-41e7-a0bd-ec790ebcabe8@googlegroups.com>
In reply to#34388
Den torsdag 23 november 2017 kl. 03:47:46 UTC+1 skrev Jonas Thörnvall:
> Den torsdag 23 november 2017 kl. 03:06:54 UTC+1 skrev Jonas Thörnvall:
> > Den onsdag 22 november 2017 kl. 16:50:30 UTC+1 skrev Jonas Thörnvall:
> > > Den onsdag 22 november 2017 kl. 02:58:12 UTC+1 skrev Jonas Thörnvall:
> > > > Had some time to remove the paragraphs and replace with numbers tonight. 
> > > > I think it is ok. But it don't handle any special chars, it just fork plain words into a structure.
> > > > 
> > > > http://anybase.co.nf/insertTWO/chessbook.html 
> > > > 
> > > > <!DOCTYPE html> 
> > > > <html> 
> > > > <head> 
> > > >     <meta http-equiv="Cache-Control" content="no-store" /> 
> > > >     <meta http-Equiv="content-type" content="text/html; charset=UTF-8"> 
> > > >     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css"> 
> > > >     <script type="text/javascript" src="loadsave.js"></script> 
> > > >     <script type="text/javascript" src="CSS.js"></script> 
> > > > </head> 
> > > > <script> 
> > > > 
> > > > function createStruct() { 
> > > >     newword=true; 
> > > >     beeninside=false; 
> > > >     inserted = false; 
> > > >     endstruct = "*"; 
> > > >     separator = " "; 
> > > >     subseparator = ""; 
> > > >     newString= ""; 
> > > >     stringPrevMem = ""; 
> > > >     stringMem = ""; 
> > > >     posStructString=""; 
> > > >     //Get values to read in 
> > > >     startval="a*1"; 
> > > >     endval="zzz*3"; 
> > > >     encodedString = document.getElementById("encodedText").value; 
> > > >     encodedString=startval+encodedString+endval; 
> > > >     mystr = document.getElementById("inputTextToSave").value; 
> > > >     //Split string into words to read in 
> > > >     strArr = mystr.split(separator); 
> > > >     //Search words 
> > > >     for (var x = 0; x < strArr.length; x++) { 
> > > >         newString=strArr[x]; 
> > > >         stringInserted=false; 
> > > >         searchItem(newString); 
> > > >      } 
> > > >      printArray(); 
> > > > } 
> > > > 
> > > > function searchItem(newString) { 
> > > >       stringPrevMem = "";stringMem = "";z=0; 
> > > >       while (z < encodedString.length && stringInserted==false) { 
> > > >          if (encodedString.charAt(z) == "*") { 
> > > >               //FOUND WHOLE WORD 
> > > >               newword=true; beeninside=false; 
> > > >             //  alert("WORD FOUND, STRINGMEM="+stringMem); 
> > > >         } else if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> > > >        // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z); 
> > > >         stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> > > >         } else { 
> > > >             stringMem += encodedString.charAt(z); 
> > > >             newSubString=newString.substring(0,stringMem.length); 
> > > >          //   alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString); 
> > > >             if (newSubString==stringMem) { 
> > > >            //      alert("Strings equal size"); 
> > > >                  oldStructLength=z; 
> > > >                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n"; 
> > > >             } 
> > > >             else if (newSubString>stringMem && newword==true && beeninside==false) { 
> > > >              //    alert("Newsubstring bigger");     
> > > >                  oldStructLength=z; 
> > > >                  newword=false;beeninside=true; 
> > > >                  stringPrevMem = stringMem; 
> > > >             } 
> > > >             else if (newSubString<stringMem) { 
> > > >              //    alert("Newsubstring smaller *INSERT*"); 
> > > >                  oldStructLength=z; 
> > > >                  checkWhatTOInsert(); 
> > > >             } 
> > > >        } 
> > > >      z++; 
> > > >     } 
> > > > } 
> > > > 
> > > > function checkWhatTOInsert(){ 
> > > >   putString=""; 
> > > >   insertString = newString.substring(newSubString.length-1, newString.length); 
> > > >   insertChar = insertString.split(''); 
> > > >   for (var m=0;m<insertChar.length;m++){ 
> > > >       putString+=insertChar[m]; 
> > > >   } 
> > > >   putString+="*"; 
> > > >   putString+=insertChar.length; 
> > > >   encodedString=insertSubstring(encodedString,oldStructLength,putString); 
> > > >   document.getElementById("encodedText").value=encodedString; 
> > > >   stringInserted=true; 
> > > >   //alert ("NEW ENCODEDSTRING "+encodedString); 
> > > > } 
> > > > 
> > > > function insertSubstring(str, index, value) { 
> > > >     return str.substr(0, index) + value + str.substr(index); 
> > > > } 
> > > > 
> > > > function printArray() { 
> > > >        document.getElementById("decodedText").value=""; 
> > > >        encodedString = document.getElementById("encodedText").value; 
> > > >        stringMem=""; 
> > > >        for (var z = 0; z < encodedString.length; z++) { 
> > > >         if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> > > >             stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> > > >         } else if (encodedString.charAt(z) == "*") { 
> > > >             document.getElementById("decodedText").value+=stringMem+"\n"; 
> > > >         } else { 
> > > >             stringMem += encodedString.charAt(z); 
> > > >         } 
> > > >    } 
> > > > } 
> > > > 
> > > > </script> 
> > > > <body onload="printArray();"> 
> > > > <div class="dropdown"> 
> > > > <button onClick="MA()" class="dropbtn"><B>___File___</button> 
> > > > <div id="MA" class="dropdown-content"> 
> > > > <button onclick="newFile()" class="button"><B>New File</B></button> 
> > > > <br> 
> > > > <label class="custom-file-upload"> 
> > > > <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B> 
> > > > </label> 
> > > > <br> 
> > > > <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input> 
> > > > </div> 
> > > > </div> 
> > > > <br> 
> > > > <Font size="4">DEBUG</Font><br> 
> > > > <textarea id="debug" cols="80" rows="3"></textarea><br> 
> > > > <br> 
> > > > <button onclick="createStruct()">INSERT BUTTON!</button> 
> > > > <br> 
> > > > <Font size="4">INSERT IN STRUCTURE</Font><br> 
> > > > <textarea id="inputTextToSave" cols="80" rows="12">stop come lose fine hope happy lovely me jumping tree basket ball banana bar bad bank</textarea><br> 
> > > > <br> 
> > > > <Font size="4">STRUCTURE</Font><br> 
> > > > <textarea id="encodedText" cols="80" rows="12">ball*2nana*4t*2un*1tt*4</textarea><br> 
> > > > <br> 
> > > > <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br> 
> > > > <textarea id="decodedText" cols="80" rows="12"></textarea><br> 
> > > > </body> 
> > > > </html>
> > > I just had a look at the paragraph version, it have same problem with the fork when inserting. 
> > > 
> > > If anyone can see what goes wrong i am interested, my biggest fear is that it is a cascading problem in structure. I don't think it could be, but i have not thought that deep about it because i figured it would not be to start with. 
> > > 
> > > Lets hope it just a case i missed... 
> > > If you have time and spot it tell me, otherwise i have to think and that is a cumbersome process. 
> > > 
> > > Paragraph forking structure 
> > > http://anybase.co.nf/insert/chessbook.html 
> > > 
> > > Number forking same structure "removed paragraphs" 
> > > http://anybase.co.nf/insertTWO/chessbook.html
> > 
> > Remove the stars but the fork to insert still does not work correct, anyone with good eyes?
> > 
> > http://anybase.co.nf/insertTHREE/chessbook.html
> 
> <!DOCTYPE html>
> <html>
> <head>
>     <meta http-equiv="Cache-Control" content="no-store" />
>     <meta http-Equiv="content-type" content="text/html; charset=UTF-8">
>     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css">
>     <script type="text/javascript" src="loadsave.js"></script>
>     <script type="text/javascript" src="CSS.js"></script>
> </head>
> <script>
> 
> function createStruct() {
>     newword=true;
>     beeninside=false;
>     inserted = false;
>     endstruct = "*";
>     separator = " ";
>     subseparator = "";
>     newString= "";
>     stringPrevMem = "";
>     stringMem = "";
>     posStructString="";
>     //Start end dummies for insert
>     startval="a1";
>     endval="zzz3";
>     //Get values to read in
>     encodedString = document.getElementById("encodedText").value;
>     encodedString=startval+encodedString+endval;
>     mystr = document.getElementById("inputTextToSave").value;
>     //Split string into words to read in
>     strArr = mystr.split(separator);
>     //Search words
>     for (var x = 0; x < strArr.length; x++) {
>         newString=strArr[x];
>         stringInserted=false;
>         searchItem(newString);
>      }
>      printArray();
> }
> 
> function searchItem(newString) {
>       stringPrevMem = "";stringMem = "";z=0;
>       while (z < encodedString.length && stringInserted==false) {
>         if (!isNaN(parseInt(encodedString.charAt(z)))) {
>         // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z);
>         newword=true; beeninside=false;
>         stringMem = stringMem.slice(0,-encodedString.charAt(z));
>         } else {
>             stringMem += encodedString.charAt(z);
>             newSubString=newString.substring(0,stringMem.length);
>               // alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString);
>             if (newSubString==stringMem) {
>                  oldStructLength=z;
>              //  alert("Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");
>                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
>             }
>             else if (newSubString>stringMem && newword==true && beeninside==false) {
>                  oldStructLength=z;
>                  newword=false;beeninside=true;
>                  stringPrevMem = stringMem;
>              //  alert("Old position="+oldStructLength+" BIGGER Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");  
>                  document.getElementById("debug").value+="Old position="+oldStructLength+" BIGGER Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
>             }
>             else if (newSubString<stringMem) {
>                  oldStructLength=z;
>              //  alert("Old position="+oldStructLength+" SMALLER INSERT Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");
>                  document.getElementById("debug").value+="Old position="+oldStructLength+" SMALLER INSERT Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
>                  checkWhatTOInsert();
>             }
>        }
>      z++;
>     }
> }
> 
> function checkWhatTOInsert(){
>   putString="";
>   putString = newString.substring(newSubString.length-1, newString.length);
>   putString+=putString.length;
>   encodedString=insertSubstring(encodedString,oldStructLength,putString);
>   document.getElementById("encodedText").value=encodedString;
>   stringInserted=true;
>   alert ("NEW ENCODEDSTRING "+encodedString);
> }
> 
> function insertSubstring(str, index, value) {
>     return str.substr(0, index) + value + str.substr(index);
> }
> 
> function printArray() {
>        document.getElementById("decodedText").value="";
>        encodedString = document.getElementById("encodedText").value;
>        stringMem="";
>        for (var z = 0; z < encodedString.length; z++) {
>         if (!isNaN(parseInt(encodedString.charAt(z)))) {
>            document.getElementById("decodedText").value+=stringMem+"\n";
>            stringMem = stringMem.slice(0,-encodedString.charAt(z));
>         } else {
>             stringMem += encodedString.charAt(z);
>         }
>    }
> }
> </script>
> 
> <body onload="printArray();">
> <div class="dropdown">
> <button onClick="MA()" class="dropbtn"><B>___File___</button>
> <div id="MA" class="dropdown-content">
> <button onclick="newFile()" class="button"><B>New File</B></button>
> <br>
> <label class="custom-file-upload">
> <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B>
> </label>
> <br>
> <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input>
> </div>
> </div>
> <br>
> <Font size="4">DEBUG</Font><br>
> <textarea id="debug" cols="80" rows="3"></textarea><br>
> <br>
> <button onclick="createStruct()">INSERT BUTTON!</button>
> <br>
> <Font size="4">INSERT IN STRUCTURE</Font><br>
> <textarea id="inputTextToSave" cols="80" rows="12">basket banana bar bad bankball bat book branch buddy bed but bullet bright butt bell bishop joke tee task stop come lose hope fine ful flower cat cup crisp check choice charm fish happy lovely me jumping jack tree</textarea><br>
> <br>
> <Font size="4">FORK STRUCTURE</Font><br>
> <textarea id="encodedText" cols="80" rows="12"></textarea><br>
> <br>
> <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br>
> <textarea id="decodedText" cols="80" rows="12"></textarea><br>
> </body>

A hint what goes wrong with the fork?

[toc] | [prev] | [next] | [standalone]


#34390

FromJonas Thörnvall <jonas.thornvall@gmail.com>
Date2017-11-22 19:07 -0800
Message-ID<a83deaaf-0b0e-4df1-8e7a-5119dafe1609@googlegroups.com>
In reply to#34389
Den torsdag 23 november 2017 kl. 03:57:01 UTC+1 skrev Jonas Thörnvall:
> Den torsdag 23 november 2017 kl. 03:47:46 UTC+1 skrev Jonas Thörnvall:
> > Den torsdag 23 november 2017 kl. 03:06:54 UTC+1 skrev Jonas Thörnvall:
> > > Den onsdag 22 november 2017 kl. 16:50:30 UTC+1 skrev Jonas Thörnvall:
> > > > Den onsdag 22 november 2017 kl. 02:58:12 UTC+1 skrev Jonas Thörnvall:
> > > > > Had some time to remove the paragraphs and replace with numbers tonight. 
> > > > > I think it is ok. But it don't handle any special chars, it just fork plain words into a structure.
> > > > > 
> > > > > http://anybase.co.nf/insertTWO/chessbook.html 
> > > > > 
> > > > > <!DOCTYPE html> 
> > > > > <html> 
> > > > > <head> 
> > > > >     <meta http-equiv="Cache-Control" content="no-store" /> 
> > > > >     <meta http-Equiv="content-type" content="text/html; charset=UTF-8"> 
> > > > >     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css"> 
> > > > >     <script type="text/javascript" src="loadsave.js"></script> 
> > > > >     <script type="text/javascript" src="CSS.js"></script> 
> > > > > </head> 
> > > > > <script> 
> > > > > 
> > > > > function createStruct() { 
> > > > >     newword=true; 
> > > > >     beeninside=false; 
> > > > >     inserted = false; 
> > > > >     endstruct = "*"; 
> > > > >     separator = " "; 
> > > > >     subseparator = ""; 
> > > > >     newString= ""; 
> > > > >     stringPrevMem = ""; 
> > > > >     stringMem = ""; 
> > > > >     posStructString=""; 
> > > > >     //Get values to read in 
> > > > >     startval="a*1"; 
> > > > >     endval="zzz*3"; 
> > > > >     encodedString = document.getElementById("encodedText").value; 
> > > > >     encodedString=startval+encodedString+endval; 
> > > > >     mystr = document.getElementById("inputTextToSave").value; 
> > > > >     //Split string into words to read in 
> > > > >     strArr = mystr.split(separator); 
> > > > >     //Search words 
> > > > >     for (var x = 0; x < strArr.length; x++) { 
> > > > >         newString=strArr[x]; 
> > > > >         stringInserted=false; 
> > > > >         searchItem(newString); 
> > > > >      } 
> > > > >      printArray(); 
> > > > > } 
> > > > > 
> > > > > function searchItem(newString) { 
> > > > >       stringPrevMem = "";stringMem = "";z=0; 
> > > > >       while (z < encodedString.length && stringInserted==false) { 
> > > > >          if (encodedString.charAt(z) == "*") { 
> > > > >               //FOUND WHOLE WORD 
> > > > >               newword=true; beeninside=false; 
> > > > >             //  alert("WORD FOUND, STRINGMEM="+stringMem); 
> > > > >         } else if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> > > > >        // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z); 
> > > > >         stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> > > > >         } else { 
> > > > >             stringMem += encodedString.charAt(z); 
> > > > >             newSubString=newString.substring(0,stringMem.length); 
> > > > >          //   alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString); 
> > > > >             if (newSubString==stringMem) { 
> > > > >            //      alert("Strings equal size"); 
> > > > >                  oldStructLength=z; 
> > > > >                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n"; 
> > > > >             } 
> > > > >             else if (newSubString>stringMem && newword==true && beeninside==false) { 
> > > > >              //    alert("Newsubstring bigger");     
> > > > >                  oldStructLength=z; 
> > > > >                  newword=false;beeninside=true; 
> > > > >                  stringPrevMem = stringMem; 
> > > > >             } 
> > > > >             else if (newSubString<stringMem) { 
> > > > >              //    alert("Newsubstring smaller *INSERT*"); 
> > > > >                  oldStructLength=z; 
> > > > >                  checkWhatTOInsert(); 
> > > > >             } 
> > > > >        } 
> > > > >      z++; 
> > > > >     } 
> > > > > } 
> > > > > 
> > > > > function checkWhatTOInsert(){ 
> > > > >   putString=""; 
> > > > >   insertString = newString.substring(newSubString.length-1, newString.length); 
> > > > >   insertChar = insertString.split(''); 
> > > > >   for (var m=0;m<insertChar.length;m++){ 
> > > > >       putString+=insertChar[m]; 
> > > > >   } 
> > > > >   putString+="*"; 
> > > > >   putString+=insertChar.length; 
> > > > >   encodedString=insertSubstring(encodedString,oldStructLength,putString); 
> > > > >   document.getElementById("encodedText").value=encodedString; 
> > > > >   stringInserted=true; 
> > > > >   //alert ("NEW ENCODEDSTRING "+encodedString); 
> > > > > } 
> > > > > 
> > > > > function insertSubstring(str, index, value) { 
> > > > >     return str.substr(0, index) + value + str.substr(index); 
> > > > > } 
> > > > > 
> > > > > function printArray() { 
> > > > >        document.getElementById("decodedText").value=""; 
> > > > >        encodedString = document.getElementById("encodedText").value; 
> > > > >        stringMem=""; 
> > > > >        for (var z = 0; z < encodedString.length; z++) { 
> > > > >         if (!isNaN(parseInt(encodedString.charAt(z)))) { 
> > > > >             stringMem = stringMem.slice(0,-encodedString.charAt(z)); 
> > > > >         } else if (encodedString.charAt(z) == "*") { 
> > > > >             document.getElementById("decodedText").value+=stringMem+"\n"; 
> > > > >         } else { 
> > > > >             stringMem += encodedString.charAt(z); 
> > > > >         } 
> > > > >    } 
> > > > > } 
> > > > > 
> > > > > </script> 
> > > > > <body onload="printArray();"> 
> > > > > <div class="dropdown"> 
> > > > > <button onClick="MA()" class="dropbtn"><B>___File___</button> 
> > > > > <div id="MA" class="dropdown-content"> 
> > > > > <button onclick="newFile()" class="button"><B>New File</B></button> 
> > > > > <br> 
> > > > > <label class="custom-file-upload"> 
> > > > > <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B> 
> > > > > </label> 
> > > > > <br> 
> > > > > <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input> 
> > > > > </div> 
> > > > > </div> 
> > > > > <br> 
> > > > > <Font size="4">DEBUG</Font><br> 
> > > > > <textarea id="debug" cols="80" rows="3"></textarea><br> 
> > > > > <br> 
> > > > > <button onclick="createStruct()">INSERT BUTTON!</button> 
> > > > > <br> 
> > > > > <Font size="4">INSERT IN STRUCTURE</Font><br> 
> > > > > <textarea id="inputTextToSave" cols="80" rows="12">stop come lose fine hope happy lovely me jumping tree basket ball banana bar bad bank</textarea><br> 
> > > > > <br> 
> > > > > <Font size="4">STRUCTURE</Font><br> 
> > > > > <textarea id="encodedText" cols="80" rows="12">ball*2nana*4t*2un*1tt*4</textarea><br> 
> > > > > <br> 
> > > > > <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br> 
> > > > > <textarea id="decodedText" cols="80" rows="12"></textarea><br> 
> > > > > </body> 
> > > > > </html>
> > > > I just had a look at the paragraph version, it have same problem with the fork when inserting. 
> > > > 
> > > > If anyone can see what goes wrong i am interested, my biggest fear is that it is a cascading problem in structure. I don't think it could be, but i have not thought that deep about it because i figured it would not be to start with. 
> > > > 
> > > > Lets hope it just a case i missed... 
> > > > If you have time and spot it tell me, otherwise i have to think and that is a cumbersome process. 
> > > > 
> > > > Paragraph forking structure 
> > > > http://anybase.co.nf/insert/chessbook.html 
> > > > 
> > > > Number forking same structure "removed paragraphs" 
> > > > http://anybase.co.nf/insertTWO/chessbook.html
> > > 
> > > Remove the stars but the fork to insert still does not work correct, anyone with good eyes?
> > > 
> > > http://anybase.co.nf/insertTHREE/chessbook.html
> > 
> > <!DOCTYPE html>
> > <html>
> > <head>
> >     <meta http-equiv="Cache-Control" content="no-store" />
> >     <meta http-Equiv="content-type" content="text/html; charset=UTF-8">
> >     <link REL="StyleSheet" TYPE="text/css" HREF="drop.css">
> >     <script type="text/javascript" src="loadsave.js"></script>
> >     <script type="text/javascript" src="CSS.js"></script>
> > </head>
> > <script>
> > 
> > function createStruct() {
> >     newword=true;
> >     beeninside=false;
> >     inserted = false;
> >     endstruct = "*";
> >     separator = " ";
> >     subseparator = "";
> >     newString= "";
> >     stringPrevMem = "";
> >     stringMem = "";
> >     posStructString="";
> >     //Start end dummies for insert
> >     startval="a1";
> >     endval="zzz3";
> >     //Get values to read in
> >     encodedString = document.getElementById("encodedText").value;
> >     encodedString=startval+encodedString+endval;
> >     mystr = document.getElementById("inputTextToSave").value;
> >     //Split string into words to read in
> >     strArr = mystr.split(separator);
> >     //Search words
> >     for (var x = 0; x < strArr.length; x++) {
> >         newString=strArr[x];
> >         stringInserted=false;
> >         searchItem(newString);
> >      }
> >      printArray();
> > }
> > 
> > function searchItem(newString) {
> >       stringPrevMem = "";stringMem = "";z=0;
> >       while (z < encodedString.length && stringInserted==false) {
> >         if (!isNaN(parseInt(encodedString.charAt(z)))) {
> >         // alert("FOUND FORK AT CHARACTER NUMBER -> "+encodedString.charAt(z)+" z="+z);
> >         newword=true; beeninside=false;
> >         stringMem = stringMem.slice(0,-encodedString.charAt(z));
> >         } else {
> >             stringMem += encodedString.charAt(z);
> >             newSubString=newString.substring(0,stringMem.length);
> >               // alert("Kodad sträng i minne "+stringMem+" Ny sträng i minne "+newSubString);
> >             if (newSubString==stringMem) {
> >                  oldStructLength=z;
> >              //  alert("Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");
> >                  document.getElementById("debug").value+="Old position="+oldStructLength+" EQUAL Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
> >             }
> >             else if (newSubString>stringMem && newword==true && beeninside==false) {
> >                  oldStructLength=z;
> >                  newword=false;beeninside=true;
> >                  stringPrevMem = stringMem;
> >              //  alert("Old position="+oldStructLength+" BIGGER Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");  
> >                  document.getElementById("debug").value+="Old position="+oldStructLength+" BIGGER Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
> >             }
> >             else if (newSubString<stringMem) {
> >                  oldStructLength=z;
> >              //  alert("Old position="+oldStructLength+" SMALLER INSERT Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n");
> >                  document.getElementById("debug").value+="Old position="+oldStructLength+" SMALLER INSERT Newstring="+newSubString+" Stringmem="+stringMem+" Prevstringmem="+stringPrevMem+"\n";
> >                  checkWhatTOInsert();
> >             }
> >        }
> >      z++;
> >     }
> > }
> > 
> > function checkWhatTOInsert(){
> >   putString="";
> >   putString = newString.substring(newSubString.length-1, newString.length);
> >   putString+=putString.length;
> >   encodedString=insertSubstring(encodedString,oldStructLength,putString);
> >   document.getElementById("encodedText").value=encodedString;
> >   stringInserted=true;
> >   alert ("NEW ENCODEDSTRING "+encodedString);
> > }
> > 
> > function insertSubstring(str, index, value) {
> >     return str.substr(0, index) + value + str.substr(index);
> > }
> > 
> > function printArray() {
> >        document.getElementById("decodedText").value="";
> >        encodedString = document.getElementById("encodedText").value;
> >        stringMem="";
> >        for (var z = 0; z < encodedString.length; z++) {
> >         if (!isNaN(parseInt(encodedString.charAt(z)))) {
> >            document.getElementById("decodedText").value+=stringMem+"\n";
> >            stringMem = stringMem.slice(0,-encodedString.charAt(z));
> >         } else {
> >             stringMem += encodedString.charAt(z);
> >         }
> >    }
> > }
> > </script>
> > 
> > <body onload="printArray();">
> > <div class="dropdown">
> > <button onClick="MA()" class="dropbtn"><B>___File___</button>
> > <div id="MA" class="dropdown-content">
> > <button onclick="newFile()" class="button"><B>New File</B></button>
> > <br>
> > <label class="custom-file-upload">
> > <input type="file"/ id="fileToLoad" onchange="loadFileAsText()"><B> Load File</B>
> > </label>
> > <br>
> > <button onclick="saveTextAsFile()" class="button"><B> Save File</B></button><input id="inputFileNameToSaveAs" value="newfile.txt"></input>
> > </div>
> > </div>
> > <br>
> > <Font size="4">DEBUG</Font><br>
> > <textarea id="debug" cols="80" rows="3"></textarea><br>
> > <br>
> > <button onclick="createStruct()">INSERT BUTTON!</button>
> > <br>
> > <Font size="4">INSERT IN STRUCTURE</Font><br>
> > <textarea id="inputTextToSave" cols="80" rows="12">basket banana bar bad bankball bat book branch buddy bed but bullet bright butt bell bishop joke tee task stop come lose hope fine ful flower cat cup crisp check choice charm fish happy lovely me jumping jack tree</textarea><br>
> > <br>
> > <Font size="4">FORK STRUCTURE</Font><br>
> > <textarea id="encodedText" cols="80" rows="12"></textarea><br>
> > <br>
> > <Font size="4">CONTENT READ OUT FROM STRUCTURE</Font><br>
> > <textarea id="decodedText" cols="80" rows="12"></textarea><br>
> > </body>
> 
> A hint what goes wrong with the fork?

It suddenly daunted upon me that i may work the wrong way, maybe i should have all the words in memory stored in an array "read out from printarray" and their substrings start position. And then compare the full strings? Before finding the substring offset. 

But it should end up be same amount of work as reading thru structure and do it charwise?

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.javascript


csiph-web