Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   Algoritme van een love-o-meter (https://forum.scholieren.com/showthread.php?t=669391)

Dr HenDre 22-11-2003 16:17

[alg]algo voor de liefdesmeter
 
Iedereen kent ze wel, de liefdesmeters die je overal op internet kan vinden, en zelfs als bij TMF nu. Maar nu zou ik graag willen weten hoe zoiets werkt, voorzover ik me het kan voorstellen vergelijkt het ASCII tekens met elkaar, maar wat verder.....
En is er 1 standaarprincipie of zijn de meeste dingen wel veschillend?

Fade of Light 22-11-2003 16:22

ken je ff een use case uitleggen? Ik snap de opzet namelijk totaal niet...

namen matchen ofzo?

Dr HenDre 22-11-2003 16:34

Citaat:

Fade of Light schreef op 22-11-2003 @ 17:22:
ken je ff een use case uitleggen? Ik snap de opzet namelijk totaal niet...

namen matchen ofzo?

jah precies, je vult bv Dr Hendre en Fade of Light in en je krijgt zoveel procent(en dat is geen random getal, want bij dezelfde namen krijg je altijd hetzelfde uitkomst). En het uitkomst is hoeveel procent de ene van de andere houdt (zogenaamd)

deathz0rz 22-11-2003 16:42

Citaat:

Dr HenDre schreef op 22-11-2003 @ 17:34:
(en dat is geen random getal, want bij dezelfde namen krijg je altijd hetzelfde uitkomst).
misschien seed ie de random functie met alle ascii codes opgeteld?

Screaming Slave 22-11-2003 16:42

tss Fade, kijk je nooit tmf ofzo? :rolleyes:













:p

Dr HenDre 22-11-2003 16:50

Citaat:

deathz0rz schreef op 22-11-2003 @ 17:42:
misschien seed ie de random functie met alle ascii codes opgeteld?
is idd mogelijk, maar krijg je dan ook werkelijk iets wat een beetje erop lijkt, dus dat je niet alleen maar te lage of te hoge waarde krijgt

Fade of Light 22-11-2003 17:50

Citaat:

Screaming Slave schreef op 22-11-2003 @ 17:42:
tss Fade, kijk je nooit tmf ofzo? :rolleyes:

nee, ik zit altijd urenlang opd ie chat daar :cool:


ontopic: geef elke letter een waarde, tel die op vermenigvuldig wat en hoppa klaar. Boeiuh, denk je dat dat algoritme van hun echt werkt? :P

Dr HenDre 22-11-2003 18:03

jah maar het moet een beetje echt lijken :D

Fade of Light 22-11-2003 18:32

Citaat:

Dr HenDre schreef op 22-11-2003 @ 19:03:
jah maar het moet een beetje echt lijken :D
zorg dat de waarde altijd boven de 30 zit....nooit boven de 90 en je zit goed...

verder maar wat aan klunzen en dan lijkt het 'echt' tssk wat is nou ech tlijken? :p

Dr HenDre 22-11-2003 18:59

nah boven de 30 is overdreven, moet min moet 4 à 5 zijn en max rond de 95 maar iig thnx, k kan weer verder (y)

dafelix 22-11-2003 22:32

Citaat:

Dr HenDre schreef op 22-11-2003 @ 17:17:
Iedereen kent ze wel, de liefdesmeters die je overal op internet kan vinden, en zelfs als bij TMF nu. Maar nu zou ik graag willen weten hoe zoiets werkt, voorzover ik me het kan voorstellen vergelijkt het ASCII tekens met elkaar, maar wat verder.....
En is er 1 standaarprincipie of zijn de meeste dingen wel veschillend?


ik kende er eentje die ongeveer keek hoeveel de 2 woorden op elkaar lijken, als je bv "blaatje" en "blaetje" invulde kreeg je een uitkomst van 99%


Wat je zou kunnen doen is kijken hoeveel letters overeenkomen, en hoeveel tekens verschil de woorden hebben.
Of je telt de waardes bij elkaar op, en maakt daar een percentage van ( naam1/naam2*100)

Manuzhai 22-11-2003 22:37

Het algorithme wat ik voor dit soort dingen ken werkt als volgt:

1. Kijk voor elke letter in "loves" hoe vaak die in de combinatie van namen voorkom. Zet die getallen achter elkaar.
2. Pak de som van getallen naast elkaar net zo lang tot je tussen 0 en 101 uitkomt.

Manuzhai / Morgan

0 1 0 0 0
1 1 0 0
2 1 0
3 1

Toevallig kom ik met Morgan dan op 31% uit. Ik zou zeggen dat dat wel zo'n beetje klopt. :P

deathz0rz 22-11-2003 22:56

Citaat:

Manuzhai schreef op 22-11-2003 @ 23:37:
Het algorithme wat ik voor dit soort dingen ken werkt als volgt:

1. Kijk voor elke letter in "loves" hoe vaak die in de combinatie van namen voorkom. Zet die getallen achter elkaar.
2. Pak de som van getallen naast elkaar net zo lang tot je tussen 0 en 101 uitkomt.

Manuzhai / Morgan

0 1 0 0 0
1 1 0 0
2 1 0
3 1

Toevallig kom ik met Morgan dan op 31% uit. Ik zou zeggen dat dat wel zo'n beetje klopt. :P

nee man, zo moet het:

je zet het aantal dezelfde letters achter elkaar, en dan tel je steeds het eerste en het laatste getal bij elkaar op.

Manuzhai loves Morgan

M a n u z h  i   l&n bsp;o v e s  r g
2 3  2 1 1 1 1 1 2 1  1 1 1 1

3 4 3 2 2 3 2

5 7 5 2

7 12

19


7 1 2

91

edit: oeps foutje!

Fade of Light 22-11-2003 23:02

nee het moet zo:

deathz0rz loves enlightenment

1 0 4 3 1 9 5 1 0 2 2 3 1
=
5 3 4 5 6 2 4 5 0
=
4 5 2 6 8 6
=
1 3 3 7
=
90


90% kans dat het goed gaat als het wat wordt tussen die twee :cool:

edit: dit prachtige algoritme werkt automatisch spelfouten eruit!

deathz0rz 22-11-2003 23:11

Citaat:

Fade of Light schreef op 23-11-2003 @ 00:02:
nee het moet zo:

deathz0rz loves enlightment

1 0 4 3 1 9 5 1 0 2 2 3 1
=
5 3 4 5 6 2 4 5 0
=
4 5 2 6 8 6
=
1 3 3 7
=
90


90% kans dat het goed gaat als het wat wordt tussen die twee :cool:

omg, daar zit echt geen regelmaat in he? en dan ff '1337' ertussen :D

edit: het eerste getal had de UNIX-time van je post moeten zijn ;)

Enlightenment 23-11-2003 01:39

En nu met Enlightenment en ik zie graag de uitslag. :p

// argh :(

deathz0rz 23-11-2003 01:51

Citaat:

Enlightenment schreef op 23-11-2003 @ 02:39:
En nu met Enlighenment en ik zie graag de uitslag. :p
:)

Screaming Slave 23-11-2003 02:00

t vergeten :p

Fade of Light 23-11-2003 09:00

Citaat:

Enlightenment schreef op 23-11-2003 @ 02:39:
En nu met Enlighenment en ik zie graag de uitslag. :p
aangepast en nee er zit geen regelmaat in :p

Dr HenDre 23-11-2003 10:19

Citaat:

deathz0rz schreef op 22-11-2003 @ 23:56:
nee man, zo moet het:

je zet het aantal dezelfde letters achter elkaar, en dan tel je steeds het eerste en het laatste getal bij elkaar op.

Manuzhai loves Morgan

M a n u z h  i   l&n bsp;o v e s  r g
2 3  2 1 1 1 1 1 2 1  1 1 1 1

3 4 3 2 2 3 2

5 7 5 2

7 12

19


7 1 2

91

edit: oeps foutje!

volgens mij is dit de goeie jah, hierop ga ik m bouwen (y)

PCRodent 23-11-2003 16:45

Citaat:

Dr HenDre schreef op 23-11-2003 @ 11:19:
volgens mij is dit de goeie jah, hierop ga ik m bouwen (y)
Varianten die ik ken:
- letters uit loves tellen
- letters op volgorde van voorkomen tellen
- letters op volgorde alfabet tellen

Vervolgmogelijkheden:
- buitenste getallen wegstrepen en optellen tot je tussen 1 en 100 zit
- getallen van links naar rechts bij hun buurman optellen
(53511 wordt dus 8862 (5+3=8, 3+5=8, 5+1=6, 1+1=2), maar hierbij kun je in een loop belanden

Bouw in je app dan alle zes de mogelijkheden in, te kiezen met radio buttons :cool: (Y)

PCRodent 23-11-2003 16:47

En zie ook http://www.lovecalculator.com/
:)

Dr HenDre 24-11-2003 19:58

ok, ik heb nu wat gedaan, maar ik zit vast. Het werkt op zich redelijk tot nu toe, op 1 punt na. Ik tel hoe vaak een letter voorkomt met een for loop, en ik sla het op in de array freq wat dynamisch wordt gemaakt, en dus afhankelijk is van de lengte van de 3 strings bij elkaar. Nu krijg ik het wel goed op 1 ding na.
Eerst effe code :)

Code:

#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

int main()
{
    string szNaam1;
    string szNaam2;
    string std = "loves";
   
    cin>>szNaam1;
    cin>>szNaam2;
   
    string totaal = szNaam1 + std + szNaam2;
    cout<<totaal<<endl;
   
    string :: size_type len, len1;
    len = totaal.length();
    int * freq;
    freq = new int [len];
    for (int x=0; x<len; x++)
    {
        freq[x]=1;
    }
    for(int j=0; j<totaal.length(); j++)
    {
        for( int i=j+1; i<totaal.length(); i++)
        {
                if(totaal.substr(j,1)== totaal.substr(i,1))
                {
                        freq[j]++;
                        freq[i] = NULL;
                        totaal.erase(i,1);
                }
        }
               
    }
    for (int x=0; x<len; x++)
    {
        if(freq[x]!= NULL)
        cout<<freq[x]<<"\t";
    }
    cout<<endl;
    system("pause");
   
}

Nu krijg ik als uitvoer als ik bla en bla invoer:

Code:

2      3      2      1      1      1      1      1
laatste 1 teveel zoals je ziet, ik kan het natuurlijk wel eruit forceren, maar dat is niet netjes. Ik vraag me af, waar mn fout zit
:confused:

Vaag mannetje 24-11-2003 20:50

Citaat:

Enlightenment schreef op 23-11-2003 @ 02:39:
En nu met Enlighenment en ik zie graag de uitslag. :p
Enlighenment of Enlightenment?

Dr HenDre 24-11-2003 21:34

never mind, tis al opgelost


Alle tijden zijn GMT +1. Het is nu 16:18.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.