SA-MP Forums Archive
[Include] similar_text.inc - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Include] similar_text.inc (/showthread.php?tid=466506)



similar_text.inc - ipsBruno - 28.09.2013

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


Re: similar_text.inc - zSuYaNw - 28.09.2013

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


Re: similar_text.inc - ipsBruno - 28.09.2013

Valeu SuYaNw


Re: similar_text.inc - WLSF - 28.09.2013

Sinistro, parabйns cara...

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


Re: similar_text.inc - Juniiro3 - 28.09.2013

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


Re: similar_text.inc - smiiir - 28.09.2013

Tive uma ideia com isso

Parabйns ;d


Re: similar_text.inc - Falcon. - 28.09.2013

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.


Re: similar_text.inc - Maklister - 28.09.2013

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

Parabйns o ' Zyzz ' '-'


Re: similar_text.inc - Schocc - 28.09.2013

Уtimo ideia. уtimo cуdigo, уtima inc.


Re: similar_text.inc - arakuta - 28.09.2013

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)


Re: similar_text.inc - PT - 28.09.2013

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

gostei bom trabalho...


Re: similar_text.inc - Gii - 28.09.2013

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.


Re: similar_text.inc - arakuta - 28.09.2013

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


Re: similar_text.inc - ipsBruno - 29.09.2013

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.


Re: similar_text.inc - Kmatsu - 29.09.2013

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.


Re: similar_text.inc - zSuYaNw - 30.09.2013

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


Re: similar_text.inc - RebeloX - 30.09.2013

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


Respuesta: similar_text.inc - DartakousLien - 01.10.2013

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!


Re: similar_text.inc - ipsBruno - 01.10.2013

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


Re : similar_text.inc - ipsBruno - 13.10.2013

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