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


Groups > comp.lang.javascript > #34380

Re: Insert algorithms

Newsgroups comp.lang.javascript
Date 2017-11-21 18:13 -0800
References <237f2e57-6614-4261-933f-d2fa22998343@googlegroups.com> <e08f58ff-19ca-4b8b-be72-dada6e4e7f62@googlegroups.com> <84ce0b45-9253-4b1d-878b-3ba8ce4b0e08@googlegroups.com> <40a76c60-78c0-4fbc-88ba-a9de176db342@googlegroups.com>
Message-ID <bf5be503-519d-4554-83ea-0b8a2e698635@googlegroups.com> (permalink)
Subject Re: Insert algorithms
From Jonas Thörnvall <jonas.thornvall@gmail.com>

Show all headers | View raw


Den onsdag 22 november 2017 kl. 02:37:45 UTC+1 skrev Jonas Thörnvall:
> Den fredag 17 november 2017 kl. 10:27:27 UTC+1 skrev Jonas Thörnvall:
> > Den torsdag 16 november 2017 kl. 00:05:52 UTC+1 skrev Jonas Thörnvall:
> > > Den onsdag 15 november 2017 kl. 22:51:46 UTC+1 skrev Jonas Thörnvall:
> > > > Is it like wrong having default values start and stop predefined in an insert algorithm, i mean first item and last isn't inserting so it create specialcases if you not hardcode the interval?
> > > > 
> > > > 
> > > > It seem like a nobrainer to set the  insert interval borders hardcoded, but i am not sure it is correct.
> > > 
> > > The structure seem ok now, just need to get rid of the paragraphs and maybe try to make a little compression, and set index on occurences.
> > > http://anybase.co.nf/insert/chessbook.html
> > 
> > At some point i will try to get away from the sequential search, doing something smarter. In fact one can question if the string should not be a searchable node tree to begin with.
> > 
> > But a node tree that is aware of its hierarchy levels.
> 
> Had some time to remove the paragraphs and replace with numbers tonight.
> I think it is ok.
> 
> 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>

There is a bug it does not fork correct...

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


Thread

Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-15 13:51 -0800
  Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-15 15:05 -0800
    Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-17 01:27 -0800
      Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-21 17:37 -0800
        Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-21 18:13 -0800
          Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 04:41 -0800
            Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 04:58 -0800
              Re: Insert algorithms Jonas Thörnvall <jonas.thornvall@gmail.com> - 2017-11-22 05:04 -0800

csiph-web