Scrabbleforumet

Diskussionsforum om Scrabble
Aktuellt datum och tid: lör 18 nov, 2017 04:44

Alla tidsangivelser är UTC + 1 timme [ Sommartid ]




Ny tråd Svara på tråd  [ 115 inlägg ]  Gå till sida 1, 2, 3, 4, 5  Nästa
Författare Meddelande
 Inläggsrubrik: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 00:12 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
Jag håller på och knåpar ihop en Ordkolls-app, med några ytterligare funktioner.

Emottager gärna tips på nya funktioner, och förbättringar av de redan existerande.

I väntan på klara besked vad som gäller med SAOL-rättigheter får appen ligga kvar på min dator.

En genomgång av vad den kan göra i dag finns här.

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 08:01 
Offline
Ordlistekommittén

Blev medlem: ons 07 mar, 2007 21:14
Inlägg: 512
Snyggt. Hoppas du släpper den på Android/WP. Svenska Akademien är säkert medgörlig.

Anagramträning är förstås ett steg bort från ordkoll, men kunde det passa in? Med en shuffle-knapp och en vidare-knapp som visar lösningarna. "Vidare" därför att man inte orkar knäppa in LANTRAS på telefonen.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 13:17 
Offline
Styrelseledamot

Blev medlem: mån 03 nov, 2008 23:25
Inlägg: 468
Ort: Göteborg/Lund
Det finns en jättebra app som jag hittade för en dryg vecka sen som heter "wordfeud finder". Ordlistan är SAOL och strikt, men den inkluderar alla ord med - och /, tex super- och c/o, dessutom kan man bara ha en blank. Den fungerar ungefär som filips alfapetgrej (eller vad den hette), man skriver in sina brickor och den hittar alla läggbara ord, man kan också ställa in den på att bara hitta rullarna. Väldigt bra app för att kunna kolla sitt startställ och trevligt att äntligen ha en anagramletare på mobilen.

_________________
C'est le Scrabble.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 15:10 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
ANDERStG skrev:
Snyggt. Hoppas du släpper den på Android/WP. Svenska Akademien är säkert medgörlig.

Anagramträning är förstås ett steg bort från ordkoll, men kunde det passa in? Med en shuffle-knapp och en vidare-knapp som visar lösningarna. "Vidare" därför att man inte orkar knäppa in LANTRAS på telefonen.


Android kommer samtidigt som för iOS. Jobbar just nu på en anagramträning.

jonissen skrev:
Det finns en jättebra app som jag hittade för en dryg vecka sen som heter "wordfeud finder". Ordlistan är SAOL och strikt, men den inkluderar alla ord med - och /, tex super- och c/o, dessutom kan man bara ha en blank. Den fungerar ungefär som filips alfapetgrej (eller vad den hette), man skriver in sina brickor och den hittar alla läggbara ord, man kan också ställa in den på att bara hitta rullarna. Väldigt bra app för att kunna kolla sitt startställ och trevligt att äntligen ha en anagramletare på mobilen.


Jag har tänkt tanken, men kruxet är att det med två blanka blir segarbetat. Men det spelar kanske ingen roll om det tar lite längre tid. Jag lägger in en, så får vi se..!

EDIT: Jag behöver lite hjälp av de mer rutinerade programmerarna här, känner jag... I javascript, ponera att variabeln minaBrickor innehåller X antal brickor. Hur kan jag plocka ut alla tänkbara ord, i alla längder från 2 till X, och lägga dessa i en array, typ allaMinaOrd?

Ponera att om minaBrickor = 'STEARIN';, så vill jag att allaMinaOrd[0] = 'AN', allaMinaOrd[1] = 'AS'; osv. Vi kan också ponera att det finns en funktion som heter finnsISaol();:

Kod:
function finnsISaol(kollaOmDettaOrdFinnsISaol){
//kod
return true;
}

function hittaAllaMinaOrd(letaBlandDessaBrickor){

}

var minaBrickor = 'STEARIN';
var allaMinaOrd = [];
allaMinaOrd = hittaAllaMinaOrd(minaBrickor);


Så hur skulle då hittaAllaMinaOrd(); se ut? Och just nu skiter vi i de blanka, de kan jag lägga in själv sen.

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 16:13 
Offline

Blev medlem: fre 27 maj, 2005 20:11
Inlägg: 555
Ort: Stockholm
Du kan ju få titta på källkoden till min gamla anagramletare som jag skrev i Java ME före de smarta telefonernas tid :)

Den var åtminstone ganska snabb även när man hade fler blanka än en.

_________________
Måns Eriksson


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 16:24 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
Måns_E skrev:
Du kan ju få titta på källkoden till min gamla anagramletare som jag skrev i Java ME före de smarta telefonernas tid :)

Den var åtminstone ganska snabb även när man hade fler blanka än en.


Ja tack :)

EDIT: Anagramletare har jag iofs - det jag behöver är att hitta alla tvåor, treor, fyror, femmor, sexor och sjuor i en sjua.

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 16:43 
Offline

Blev medlem: tis 28 sep, 2004 08:35
Inlägg: 1821
Ort: Uppsala
Du menar något i stil med detta?

http://www.wordfreakz.se/scrabble2/indexsub7.html


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 16:52 
Offline

Blev medlem: tis 28 sep, 2004 08:35
Inlägg: 1821
Ort: Uppsala
En lite mer användbar sak jag knåpade ihop för många år sedan nu finns här:

http://www.wordfreakz.se/scrabble/

Jag har aldrig brytt mig om att slipa på den sedan dest, så det finns många små löjliga krav (som stora bokstäver). Där kan man mata in spelade brickor på brädet (stora bokstäver), sina egna brickor (stora bokstäver) och se alla möjliga drag (med eller utan blank och med en möjlig minimipoänggräns).


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 17:14 
Offline

Blev medlem: fre 27 maj, 2005 20:11
Inlägg: 555
Ort: Stockholm
ok, det gör ju inte mitt program, men det är väl bara att plocka bort en bricka åt gången och iterera om koden, och sedan plocka bort dubbletterna?

_________________
Måns Eriksson


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 17:45 
Offline

Blev medlem: fre 04 mar, 2005 02:15
Inlägg: 217
'Fasinerande' att se hur datanördar utgår från sitt inskränkta perspektiv. Ord genereras på olika sätt.

_________________
Veni vidi vici


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 22:19 
Offline
Ordlistekommittén

Blev medlem: ons 07 mar, 2007 21:14
Inlägg: 512
björn2 skrev:
EDIT: Jag behöver lite hjälp av de mer rutinerade programmerarna här, känner jag... I javascript, ponera att variabeln minaBrickor innehåller X antal brickor. Hur kan jag plocka ut alla tänkbara ord, i alla längder från 2 till X, och lägga dessa i en array, typ allaMinaOrd?

Ponera att om minaBrickor = 'STEARIN';, så vill jag att allaMinaOrd[0] = 'AN', allaMinaOrd[1] = 'AS'; osv. Vi kan också ponera att det finns en funktion som heter finnsISaol();:

Kod:
function finnsISaol(kollaOmDettaOrdFinnsISaol){
//kod
return true;
}

function hittaAllaMinaOrd(letaBlandDessaBrickor){

}

var minaBrickor = 'STEARIN';
var allaMinaOrd = [];
allaMinaOrd = hittaAllaMinaOrd(minaBrickor);

Så hur skulle då hittaAllaMinaOrd(); se ut? Och just nu skiter vi i de blanka, de kan jag lägga in själv sen.

Jag tror du vill testa ord i ordlistan (26052 st med 2-7 bokstäver) mot ditt brickställ och inte tvärtom. Går du igenom alla bokstavssträngar på brickstället blir två blanka svårregerligt (uppåt 10^9 strängar på vissa blankförgyllda brickställ). Ökad snabbhet med lämplig datastruktur för ordlista, det har du kanske.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: fre 05 okt, 2012 22:48 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
Anders skrev:
'Fasinerande' att se hur datanördar utgår från sitt inskränkta perspektiv. Ord genereras på olika sätt.


Que? Jag försöker och försöker, men förstår verkligen inte vad du vill säga? Ord genereras väl genom att en bokstav läggs till en annan? Eller kan du generera ord på något annat sätt?

ANDERStG skrev:
Jag tror du vill testa ord i ordlistan (26052 st med 2-7 bokstäver) mot ditt brickställ och inte tvärtom. Går du igenom alla bokstavssträngar på brickstället blir två blanka svårregerligt (uppåt 10^9 strängar på vissa blankförgyllda brickställ). Ökad snabbhet med lämplig datastruktur för ordlista, det har du kanske.

Jag har sorterat ut ordlistan och skapat 27 olika, en med alla tvåor, en med treor osv upp till REALISATIONSVINSTBESKATTNING som är ensam tjugoåtta i SAOL. Du har helt klart en poäng i att köra omvänt. Ska knåpa. Tack!

EDIT: Knåpat!

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 01:21 
Offline

Blev medlem: tis 28 sep, 2004 08:35
Inlägg: 1821
Ort: Uppsala
Hur (och var) lagrar du ordlistan?


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 07:18 
Offline
Ordlistekommittén

Blev medlem: tis 05 okt, 2004 21:01
Inlägg: 960
Ort: Solna
Om du representerar ordlistan som en DAWG så tar den lite plats och går snabbt att söka i. Jag vet inte hur lätt eller svårt det är att hantera såna datastrukturer i JavaScript.

_________________
Det är skönare lyss till en sträng, som brast, än att aldrig spänna en båge.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 10:56 
Offline
Regelkommittén

Blev medlem: mån 17 jan, 2005 16:37
Inlägg: 1051
Det finns en massa smarta saker man kan göra för att söka ord snabbt, men min erfarenhet är att en enkel ordsökning, med eller utan ett par blanka, går så snabbt på någorlunda moderna plattformar (därin räknar jag till och med javascript på en mobiltelefon) att det torde vara överflödigt. Att bara jämföra stället med varje ord i ordlistan blir antagligen tillräckligt snabbt.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 11:43 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
gubbi skrev:
Hur (och var) lagrar du ordlistan?

Lokalt, på telefonen. Listan är uppdelad så att alla tvåor ligger för sig, alla treor för sig osv. Så om någon vill hitta alla möjliga ord med RETA? byggs en ordlista med tvåor, treor, fyror och femmor, som sedan gås igenom.

Radagast skrev:
Om du representerar ordlistan som en DAWG så tar den lite plats och går snabbt att söka i. Jag vet inte hur lätt eller svårt det är att hantera såna datastrukturer i JavaScript.

Det är ett alternativ, men då får jag knåpa ihop en egen struktur, vilket i sig nog inte skulle innebära något problem. Men frågan är hur det underlättar vid anagramsökning?

Merko skrev:
Det finns en massa smarta saker man kan göra för att söka ord snabbt, men min erfarenhet är att en enkel ordsökning, med eller utan ett par blanka, går så snabbt på någorlunda moderna plattformar (därin räknar jag till och med javascript på en mobiltelefon) att det torde vara överflödigt. Att bara jämföra stället med varje ord i ordlistan blir antagligen tillräckligt snabbt.

Jag gör appen i javascript, sedan kompileras det om till Objective C (tror jag). Att hitta anagram eller lista alla ord med en blank går acceptabelt snabbt, men två blanka tar lång tid: 40 sekunder för att leta igenom STEARIN??. Då är den någorlunda optimerad, och letar aldrig med två blanka ÜÜ eller ÆÆ (eller AÜ, ÖÆ osv). Jag antar dock att jag kan göra den snabbare genom enkel kodoptimering, men har svårt att tro att jag kan halvera beräkningstiden.

För skojs skull la jag till möjligheten att söka efter alla ord med tre blanka. Sökningen RETA??? tog 451 sekunder :)

Om någon vill se koden är det bara att hojta. Javascript at its finest!

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 14:42 
Offline
Ordlistekommittén

Blev medlem: ons 07 mar, 2007 21:14
Inlägg: 512
björn2 skrev:
För skojs skull la jag till möjligheten att söka efter alla ord med tre blanka. Sökningen RETA??? tog 451 sekunder :)

Inte förvånande. 10^9 som jag angav igår var en grav felräkning men RETA??? ger gott och väl över 10^7 strängar att testa, de flesta nonsens. Jag tror gamla "obegränsade" Frank gjorde så också, tre frågetecken brukade ge den spatt. :)


Senast redigerad av ANDERStG sön 07 okt, 2012 10:49, redigerad totalt 1 gång.

Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 15:39 
Offline
Regelkommittén

Blev medlem: mån 17 jan, 2005 16:37
Inlägg: 1051
björn2 skrev:
Jag gör appen i javascript, sedan kompileras det om till Objective C (tror jag). Att hitta anagram eller lista alla ord med en blank går acceptabelt snabbt, men två blanka tar lång tid: 40 sekunder för att leta igenom STEARIN??. Då är den någorlunda optimerad, och letar aldrig med två blanka ÜÜ eller ÆÆ (eller AÜ, ÖÆ osv). Jag antar dock att jag kan göra den snabbare genom enkel kodoptimering, men har svårt att tro att jag kan halvera beräkningstiden.

Jag tar mig gärna en titt, och kan jag inte snabba upp koden med en faktor 10 så ska jag bjuda dig på en drink vid tillfälle!


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 16:11 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
Merko skrev:
björn2 skrev:
Jag gör appen i javascript, sedan kompileras det om till Objective C (tror jag). Att hitta anagram eller lista alla ord med en blank går acceptabelt snabbt, men två blanka tar lång tid: 40 sekunder för att leta igenom STEARIN??. Då är den någorlunda optimerad, och letar aldrig med två blanka ÜÜ eller ÆÆ (eller AÜ, ÖÆ osv). Jag antar dock att jag kan göra den snabbare genom enkel kodoptimering, men har svårt att tro att jag kan halvera beräkningstiden.

Jag tar mig gärna en titt, och kan jag inte snabba upp koden med en faktor 10 så ska jag bjuda dig på en drink vid tillfälle!


Deal! :)

Kod:
Ti.include('saolX.js'); //här ligger ett antal arrays, saol2 = [] innehåller alla tvåor, saol3[] alla treor osv
Ti.include('d.js'); //här ligger kombinationerna med två blanka i arrayen dw[]. Inga omöjliga, såsom ÜP osv

function buildA(sq, pq) //kollar om ordet SQ går att lägga med brickorna PQ
{
var s = sq;
var cb = true;
var q = pq;
for (iv = 0; iv != s.length; iv ++)
{
if (q.indexOf(s.charAt(iv)) == -1)
   {
      cb = false;
      break;
   }
else
   {
   q = q.substring(0, q.indexOf(s.charAt(iv))) + q.substring(q.indexOf(s.charAt(iv)) + 1, q.length);
   }
}

return cb;
}


var alfa = 'abcdefghijklmnoprstuvxyåäöz';
var pnts = '14811322172121241114387434';
function gp(o) //Returnerar hur många poäng ett ord ger
{
   var rp = 0;
   for (im = 0; im != o.length; im++)
      {
      var z = alfa.indexOf(o.charAt(im));
      if (z != -1 && z != alfa.length - 1){rp += parseInt(pnts.charAt(z));}
      if (z == alfa.length - 1){rp += 10;}
      }
   return rp;
}


function countWiS(whatToCount, whereToCount) //räknar ut hur många blanka det är i söksträngen
   {
   var hits = 0;
   var iq = 0;
   while (iq != whereToCount.length)
      {
      if (whereToCount.charAt(iq) == whatToCount)
         {
            hits++;
         }
      iq++;
      }
   return hits;
   }
function removeQ(ttr) //tar bort blanka ur söksträngen
   {
   var nt = '';
   var nix = 0;
   while (nix != ttr.length)
      {
      if (ttr.charAt(nix) != '?')
         {
         nt += ttr.charAt(nix);
         }
      nix++;
      }
   return nt;
   }

var qalfa = 'abcdefghijklmnopqrstuvwxyzåäöüæ'; //alla tecken som ska räknas med i en blank
searchButton.addEventListener('click',function(e) //körs när "sök"-knappen trycks
   {
   searchBox.blur();
   remSearch = searchBox.value; //de angivna brickorna
   var myWords = [];
   var strI = remSearch.toLowerCase();
   var noq = countWiS('?', strI);
   //bygg SAOL
   var saolLen = (1 + strI.length);
   if (saolLen > 28)
      {
      saolLen = 28;
      }
   for (ii = 2; ii != saolLen; ii ++) //sätter ihop exv saol2[] + saol3[] + saol4[] till enbart saol[]
      {
      for (ij = 0; ij != (eval("saol" + ii).length); ij++)
         {
         saol[saol.length] = eval("saol" + ii + "[" + ij + "]");
         }
      }
   if (noq == 3) //om tre blanka - dåligt optimerat eftersom den kör alla två-kombinationer + valfri bokstav - alltså tillåts typ ÜÜP som kombination (har inte orkat göra en vettigare variant)
      {
      var ST = new Date();
      for (ik = 0; ik != qalfa.length; ik ++)
         {
         Ti.API.info(ik / qalfa.length);   
         for (iu = 0; iu != dw.length; iu ++)
            {
            strI = removeQ(remSearch) + dw[iu] + qalfa[ik];
            
            for (ii = 0; ii != saol.length; ii ++)
               {
               if (buildA(saol[ii], strI))
                  {
                  myWords[myWords.length] = {p:gp(saol[ii]), o:saol[ii]};
                  }   
               }
            }
         }
      var ET = new Date();
      Ti.API.info(ET - ST);
      }
   if (noq == 2) //två blanka - går igenom de angivna brickorna + en post i dw åt gången (i exempel RETA?? -> först går den igenom RETA+AA, sen RETA+AB, sen RETA+AC osv...
      {
      for (iu = 0; iu != dw.length; iu ++)
         {
         strI = removeQ(remSearch) + dw[iu];
         Ti.API.info(iu / dw.length);
         for (ii = 0; ii != saol.length; ii ++)
            {
            if (buildA(saol[ii], strI))
               {
               myWords[myWords.length] = {p:gp(saol[ii]), o:saol[ii]};
               }   
            }
         }
      }
   if (noq == 1) //en blank
      {
      for (iu = 0; iu != qalfa.length; iu ++)
         {
         strI = removeQ(remSearch) + qalfa.charAt(iu);
         Ti.API.info(iu / qalfa.length); //används bara för att visa hur långt man har kommit, syns ej för användare
         for (ii = 0; ii != saol.length; ii ++)
            {
            if (buildA(saol[ii], strI))
               {
               myWords[myWords.length] = {p:gp(saol[ii]), o:saol[ii]};
               }   
            }
         }
      }
   if (noq == 0) //inga blanka
      {
      for (ii = 0; ii != saol.length; ii ++)
         {
         if (buildA(saol[ii], strI)) //om det går att bygga ordet saol[ii] med bokstäverna i stället strI, lägg till ordet i myWords[];
            {
            myWords[myWords.length] = {p:gp(saol[ii]), o:saol[ii]};
            }
         }
      }
//här följer några sorteringsfunktioner
   myWords.sort(function(a, b){ var nameA=a.o.toLowerCase(), nameB=b.o.toLowerCase(); var r = 0;if (nameA < nameB){r= -1} if (nameA > nameB){r= 1} return r;});
   myWords.sort(function(a,b) { return parseFloat(a.o.length) - parseFloat(b.o.length) } );
   myWords.sort(function(a,b) { return parseFloat(b.p) - parseFloat(a.p) } );
   var ret = '';
   var mem = '';
   var hits = 0;
   for (ii = 0; ii != myWords.length; ii ++) //en helt underbar funktion som tar bort dubbletter, och lägger resultaten i en variabel istf array :)
      {
      if (mem.indexOf('*' + myWords[ii].o + '*') == -1)
         {
         ret += myWords[ii].o.toUpperCase() + ' (' + myWords[ii].p + ')\n';
         mem += '*' + myWords[ii].o + '*';
         hits++;
         }
      }
   displayMessageBox(ret,'',14,parseInt(hits * 18)); //skickar till min visningsfunktion (ret = svaren)
   });

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 17:49 
Offline
Regelkommittén

Blev medlem: mån 17 jan, 2005 16:37
Inlägg: 1051
Här är en naiv variant. Jag har ingen möjlighet att få över den till mobilen just nu, så du får säga till om den inte är snabb nog.

Kod:
function possibleWords(tiles, dictionary) {
  var i, t, u, word, missing;
  var words = [];
  t = tiles.replace(/\?/g, '');
  var nblanks = tiles.length - t.length;
  tiles = t;
  for (i = 0; i<dictionary.length; i++) {
   t = tiles;
   word = dictionary[i];
   missing = 0;
   for (var j = 0; j < word.length; j++) {
    u = t.replace(word[j], '');
    missing += (u == t);
    if (missing > nblanks) break;
    t = u;
   }
   if (missing <= nblanks) words.push(word);
  }
  return words;
}


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 18:48 
Offline

Blev medlem: tis 28 sep, 2004 08:35
Inlägg: 1821
Ort: Uppsala
Kod:
function findSubWords (tiles)
{
   tiles = tiles.toUpperCase();
   for (var i=0; i<wordlist.length; i++)
   {
      //Använd inte ord som är längre än antalet brickor
      if (wordlist[i].length<=tiles.length)
      {
         if (canBeBuilt(wordlist[i],tiles))
         {
            matches.push(wordlist[i]);
         }
      }
   }
}

function canBeBuilt (word, tiles)
{
    var pos=-1;
    var wordletter="";
         var madeword="";
   
    letters = tiles.split('');
    for (var j=0; j<word.length; j++)
    {
      wordletter = word.charAt(j);
           pos = jQuery.inArray(wordletter,letters);
      if (pos >=0)
      {
         madeword+=wordletter;
         letters.splice(pos,1);
         continue;
      }
      //Eventuella blanka
      pos = jQuery.inArray('*',letters);
      if (pos >=0)
      {
         madeword+=wordletter;
         letters.splice(pos,1);
      }
      if (pos==-1)
      {
         break;
      }
      
    }
   
    return (madeword == word);    
}



Var tvungen att testa lite på egen hand. Koden ovan (som jag inte brytt mig om att optimera maximalt) plockar exempelvis fram alla underord till STEAR?? på 400-500 ms. Hittade ord lagras i arrayen matches. Hela ordlistan ligger i arrayen wordlist (båda är globalt definierade arrayer).


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 18:55 
Offline

Blev medlem: tis 28 sep, 2004 08:35
Inlägg: 1821
Ort: Uppsala
Testar jag STEARIN tar det ungefär 60 ms. Testade även RETA??? och då klockar funktionen findSubWords in på 700-850 ms. Tricket är att göra de blanka till en fördel i letandet och inte tvärtom!


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 19:09 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
Tackar, båda två!

Ska testa båda varianterna lite senare i kväll, förhoppningsvis behöver jag inte fixa till allt för mycket för att de ska gå att köra i kompilatorn.

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: lör 06 okt, 2012 19:32 
Offline

Blev medlem: tis 28 sep, 2004 08:35
Inlägg: 1821
Ort: Uppsala
Ändras raderna

Kod:
if (wordlist[i].length<=tiles.length)
      {
         if (canBeBuilt(wordlist[i],tiles))
         {
            matches.push(wordlist[i]);
         }
      }



till

Kod:
if (wordlist[i].length==tiles.length)
      {
         if (canBeBuilt(wordlist[i],tiles) && wordlist[i]!=tiles)
         {
            anagrams.push(wordlist[i]);
         }
      }


så tar ju samma kod fram anagram. Alternativet är ju att filtrera bort alla ord från matches som inte är lika långa som ordet självt och inte lika med ordet självt!


Upp
 Profil  
 
 Inläggsrubrik: Re: Ordkoll i mobilen
InläggPostat: sön 07 okt, 2012 00:46 
Offline

Blev medlem: fre 06 nov, 2009 00:03
Inlägg: 523
Ort: GBG
RETAS??? gick från 451 sekunder till 0.2. Det är ju okej.

Hehe. Jag bjussar på drinkar vid lämpligt tillfälle.

Jag använder Johans för att lista ord, och Daniels för att plocka fram anagram. Går mycket smärtfritt! Det enda jag fick ändra på var jQuery-kollarna i din funktion, Daniel. Titanium är inte kapabelt till sådana saker. Så jag fick göra en egen. Men det funkar bra det med!

Ska bara få ordpluggs-funktionen att funka också, sen lägger jag upp ett litet klipp igen.

_________________
Praeterea censeo *BLÄ in SAOL esse indendam.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Ny tråd Svara på tråd  [ 115 inlägg ]  Gå till sida 1, 2, 3, 4, 5  Nästa

Alla tidsangivelser är UTC + 1 timme [ Sommartid ]


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
cron
Powered by phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010