[Include] similar_text.inc
#1

Introduзгo

Essa include calcula a similaridade de duas strings e retorna a porcentagem delas (em float) ou seja, calcula quгo parecida elas sгo.

Й idкntica a funзгo similar_text do PHP. Sу que nesse caso, eu usei o algorнtimo de Levenshtein.




Cуdigo

pawn Код:
/*
 * similar_text
 *
 * © Copyright 2010-2013, Bruno da Silva
 * Funзгo para checar proximidade de textos
 */

 
#if defined _similart_included
  #endinput
#endif
#define _similart_included

#if !defined MAX_STRING
    #define MAX_STRING 0xff
#endif

stock function_r[MAX_STRING][MAX_STRING];
stock ff_calcule[MAX_STRING][MAX_STRING];
   
   
stock Float:similar_text(texto1[], texto2[]) {

    static len1, len2, x, y ;

    len1 = strlen(texto1);
    len2 = strlen(texto2);

    ff_calcule = function_r ;


    for (x = 1; x <= len2; x++) {
        ff_calcule[x][0] = ff_calcule[x-1][0] + 1;
    }

    for(y = 1; y <= len1; y++) {
        ff_calcule[0][y] = ff_calcule[0][y-1] + 1;
    }

    for (x = 1; x <= len2; x++) {
        for (y = 1; y <= len1; y++) {
            ff_calcule[x][y] = MIN3D(ff_calcule[x-1][y] + 1,ff_calcule[x][y-1] + 1,ff_calcule[x-1][y-1] + _: !(texto1[y-1] == texto2[x-1]));
        }
    }

    return (1.0 - (float(ff_calcule[len2][len1]) / float(max(len1,len2)))) * 100.0;
}

stock MIN3D(v0,v1,v2) {
    return v0 < v1 ? v0 < v2 ? v0 : v2 : v1 < v2 ? v1 : v2;
}

// atualizado 13/10
similar_text.inc




Exemplos

PHP код:
    printf("Bruno e Breno sгo nomes %f%% parecidos"similar_text("Bruno""Breno")); 
PHP код:
    printf("Carlos e Joгo sгo nomes %f%% parecidos"similar_text("Carlos""Joгo")); 

Pra que?
Й уtimo para checar se o usuбrio tentou falar palavrгo ou nгo, dб atй pra fazer um sistema de buscas com similaridade de texto ou comparar jogadores com nomes parecidos. Enfim, dб pra fazer muita coisa.

Inclusive os corretores da ****** uzam isto: Vocк quis dizer: Usam Sabe?


Bom uso!


Abraзos
Reply
#2

Vocк e seus cуdigos matemбticos.. Parabйns cara!
Reply
#3

Valeu SuYaNw
Reply
#4

Sinistro, parabйns cara...

Muito funcional mesmo, sу o cara usar a criatividade que dб pra encaixar em vбrios cantos isso.
Reply
#5

Vocк me deu uma ideia monstra agora Bruno :O
Уtima include, baixando
Reply
#6

Tive uma ideia com isso

Parabйns ;d
Reply
#7

Vocк nгo tinha feito isso alguns meses/anos atrбs ? Nгo me lembro se foi na FeK ou no comeзo da iPs, mas me lembro de vocк fazer um projeto assim...

Uma include que й de fбcil uso, e pode ser usada em diversas coisas.
Parabйns.
Reply
#8

Quando eu penso que nгo tem mais nada pra ser inventado no gкnero ... lб vem o Bruno '-'

Parabйns o ' Zyzz ' '-'
Reply
#9

Уtimo ideia. уtimo cуdigo, уtima inc.
Reply
#10

Interessante, da pra fazer muita coisa com isso...

Sу falta tu lanзa um algoritmo que acha uma data exata com um unix timestamp '-' (Sei lб nй, sу to dando uma ideia)
Reply
#11

bom trabalho, isso tambem da pra ver fake's nick u.u

gostei bom trabalho...
Reply
#12

Quote:
Originally Posted by arakuta
View Post
Interessante, da pra fazer muita coisa com isso...

Sу falta tu lanзa um algoritmo que acha uma data exata com um unix timestamp '-' (Sei lб nй, sу to dando uma ideia)
Se vocк usa MYSQL ou SQLite й possнvel fazer isso.

http://dev.mysql.com/doc/refman/5.5/..._from-unixtime
http://sqlite.org/lang_datefunc.html

Уtima INC.
Reply
#13

Quote:
Originally Posted by iCasTiel
View Post
Interessante, nгo sabia disto!
Reply
#14

Quote:
Originally Posted by arakuta
View Post
Interessante, da pra fazer muita coisa com isso...

Sу falta tu lanзa um algoritmo que acha uma data exata com um unix timestamp '-' (Sei lб nй, sу to dando uma ideia)
Vou fazer isto, й bem fбcil.
Reply
#15

Quote:
Originally Posted by arakuta
View Post
Interessante, da pra fazer muita coisa com isso...

Sу falta tu lanзa um algoritmo que acha uma data exata com um unix timestamp '-' (Sei lб nй, sу to dando uma ideia)
@Edit

Na verdade atй ja existe isso.
https://sampforum.blast.hk/showthread.php?tid=347605

PS: Nгo cheguei a testar.
Reply
#16

Quote:
Originally Posted by arakuta
View Post
Interessante, da pra fazer muita coisa com isso...

Sу falta tu lanзa um algoritmo que acha uma data exata com um unix timestamp '-' (Sei lб nй, sу to dando uma ideia)
http://pastebin.ca/2064736
Reply
#17

Gostei bastante bruno, vocк й mesmo o cara dos algorнtimos, porque nгo estuda IA?
Reply
#18

Bruno, onde voce aprendeu a fizer essas coisas meu deus! entender o codigo eu entendi, mas eu nao faria assim sei lб! onde voce aprendeu a fazer essas coisas?
Parabйns, otimo codigo!
Reply
#19

Quote:
Originally Posted by BlueX
View Post
Gostei bastante bruno, vocк й mesmo o cara dos algorнtimos, porque nгo estuda IA?
Nгo tem muita utilidade em SA:MP, mas jб estudei para PHP e fiz um sistema neural simples

Quote:
Originally Posted by zSuYaNw
View Post
Nгo й isto. Isto retorna apenas um tempo

Exemplo:

365 dias

ou

400 minutos


mas nгo retorna algo como

01/10/2013
Reply
#20

Peзo desculpas por quem tentou usar a include e percebeu alguns erros. Jб estб corrigido.

Quando postei ela na board inglesa, notei que havia deixado uma parte do cуdigo para trбs, que fazia retornar valores errados quando as strings eram diferentes.

https://sampforum.blast.hk/showthread.php?tid=468216

Agora estб arrumado
Reply


Forum Jump:


Users browsing this thread: 8 Guest(s)