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


Groups > comp.lang.javascript > #34379

Fork algorithm

Newsgroups comp.lang.javascript
Date 2017-11-21 17:58 -0800
Message-ID <c5be9738-d254-48c0-a0fe-705ef502baef@googlegroups.com> (permalink)
Subject Fork algorithm
From Jonas Thörnvall <jonas.thornvall@gmail.com>

Show all headers | View raw


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>

Back to comp.lang.javascript | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

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

csiph-web