Avatar billede lolman Nybegynder
25. december 2007 - 18:08 Der er 11 kommentarer og
1 løsning

match to næsten ens variabler.

Hej.

Nogle variabler der indeholder værdierne 0, 1 i blandet rækkefølge, ex:
results[0] = "0:0:0:1:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:1:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"; // Paraply
results[1] = "0:0:0:0:0:0:0:1:1:1:0:0:0:0:0:0:1:0:1:0:0:0:1:0:0:1:0:0:0:0:0:1:0:1:0:0:0:0:0:0:0:0:1:1:1:1:1:1:1:0:0:0:0:0:0:0"; // Dykker
results[2] = "0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:0:1:1:1:1:1:1:1:0:0:1:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"; // Skildpadde
results[3] = "0:1:0:0:0:1:0:0:1:0:0:1:1:1:0:1:1:1:1:0:0:0:1:1:1:1:0:0:0:1:0:1:0:1:0:0:1:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"; // Kat

Så har jeg også en variabel med skiftende indhold. Denne variabel indeholder værdierne 0,1 og 2. Denn variabel hedder "varSvar"

varSvar matcher med results[x] hvis der står nuller de samme steder som der står nummer i results[x] og at der står ettal eller total det samme sted der står ettal i results[x]. Og mindst et af to tallerne står står på et ettals plads.

Håber at der er nogle der kan hjælpe mig med dette.. og at der ikke er for kryptisk skrevet... Har en ide om at jeg skal splitte variablerne og så sammenligne resultaterne men kan ikke finde nogen logisk måde at gøre det på...
Avatar billede nielle Nybegynder
25. december 2007 - 19:53 #1
Noget i denne stil?

<script type="text/javascript">
function isMatch(result, varSvar) {
    // varSvar matcher med result hvis:

    // Regex #1:
    // 1) der står nuller de samme steder som der står nummer (nuller?) i result
    // 2) der står ettal eller total det samme sted der står ettal i result

    resultPattern1 = result.replace(/1/g, "[12]")
    resultPattern1 = "^" + resultPattern1 + "$"
    resultRegex1 = new RegExp(resultPattern1)

    // 3) mindst et af to tallerne står står på et ettals plads
    // hvilket vel er det samme som at sige:
    // 3) der er minsdt et 2-tal (... må jo være på et 1-tals plads iflg. 1) ovenfor)

    resultPattern2 = "(?=.*?2)"
    resultRegex2 = new RegExp(resultPattern2)

    return resultRegex1.test(varSvar) && resultRegex2.test(varSvar)
}

result  = "0:0:0:1:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:1:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"
varSvar = "0:0:0:1:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:2:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"

compare = isMatch(result, varSvar)
alert("Er en match? " + compare)
</script>
Avatar billede nielle Nybegynder
25. december 2007 - 19:55 #2
Der lader til at være en fejl i MSIE 7.0's regex-motor - ellers kunne løsningen samles i en regexp.
Avatar billede lolman Nybegynder
25. december 2007 - 20:13 #3
du har forstået hvad jeg mener :D

Men kan se at jeg har glemt en ting. et to tal kan også stå på et nuls plads... :S

Men tak. kigger på hvad du har lavet.
Avatar billede nielle Nybegynder
25. december 2007 - 20:21 #4
Altså følgende regler?

1) varSvar skal have '0' eller '2 de steder hvor der står '0' i result
2) varSvar skal have '1' eller '2 de steder hvor der står '1' i result
3) varSvar skal have '2' ved mindst et af de steder hvor der står '1' i result
Avatar billede nielle Nybegynder
25. december 2007 - 20:25 #5
Eller er det blot:

3) varSvar skal have '2' mindst et sted
Avatar billede lolman Nybegynder
25. december 2007 - 20:30 #6
har kigget lidt på koden og ændret lidt:
<script type="text/javascript">
function isMatch(result, varSvar) {
    resultPattern1 = result.replace(/0/g, "[02]")
    resultPattern1 = resultPattern1 .replace(/1/g, "[12]")
    resultPattern1 = "^" + resultPattern1 + "$"
    resultRegex1 = new RegExp(resultPattern1)
    return resultRegex1.test(varSvar)
}

result  = "0:0:0:1:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:1:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"
varSvar = "0:0:0:1:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:2:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"

compare = isMatch(result, varSvar)
alert("Er en match? " + compare)
</script>


Problemet nu er jo så bare at checke om et to tal står på et ettals plads..
Avatar billede lolman Nybegynder
25. december 2007 - 20:46 #7
25/12-2007 20:21:19 > Nielle præcis sådan der.. :D
Avatar billede lolman Nybegynder
25. december 2007 - 20:59 #8
du kan evt. se mit script / projekt i brug her:
http://ansbak.dk/gStuff/gGames/!maginate/
Avatar billede nielle Nybegynder
25. december 2007 - 21:28 #9
Mit bud:

<script type="text/javascript">
function isMatch(result, varSvar) {
    resultPattern = "^" + result + "$"

    // 1) varSvar skal have '0' eller '2 de steder hvor der står '0' i result
    resultPattern = resultPattern.replace(/0/g, "[02]")

    // 2) varSvar skal have '1' eller '2 de steder hvor der står '1' i result
    resultPattern = resultPattern.replace(/1/g, "[12]")

    resultRegex = new RegExp(resultPattern)

    if (!resultRegex.test(varSvar)) return false

    // 3) varSvar skal have '2' ved mindst et af de steder hvor der står '1' i result

    for (index=0; index<result.length; index+=2) {
        if (result.charAt(index) == '1' && varSvar.charAt(index) == '2') return true
    }

    return false
}

result  = "0:0:0:1:0:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:1:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"
varSvar = "0:0:0:2:2:0:0:0:0:1:1:1:0:0:0:1:1:1:1:1:0:0:1:1:1:1:1:0:0:0:0:1:0:0:0:0:0:0:1:0:0:0:0:0:0:1:1:0:0:0:0:0:0:0:0:0"

compare = isMatch(result, varSvar)
alert("Er en match? " + compare)
</script>
Avatar billede lolman Nybegynder
26. december 2007 - 14:36 #10
Helt sikkert nielle. Smid et svar. :D det virker perfekt. Det kan ses på:


http://ansbak.dk/gStuff/gGames/imaginate/
Avatar billede nielle Nybegynder
26. december 2007 - 19:37 #11
Interessant spil. Men burde der ikke være en clear-knal sådan at man hurtigt kan nulstille spillet imellem hver figur?

... og et svar :^)
Avatar billede lolman Nybegynder
26. december 2007 - 21:28 #12
Det glæder mig, at du synes om spillet.
Det bliver sådan, at du skal trykke på en knap, hvis du mener at du har lavet et "billede" færdigt, og så vil skærmen også blive clearet .


Jeg arbejder stadig på, at lave spillet færdigt...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester