22 Ağustos 2011 12:24 tarihinde Onur AKTAŞ <[email protected]> yazdı:
> Merhaba; > Elimde şöyle bir text var, > > *a > b > c* > a > d > e > g > h > j > *a > b > c* > *h > n* > j > r > t > b > *h > n* > > > h ve n satırlar alt atla iki kere gelmiş(hn-2) > a b c satırları alt alta 3 kere gelmiş(abc-3) > > Bu şekilde bir text içinde en çok tekrar eden satır kümelerini nasıl > bulabilirim ? > > > -- > Onur AKTAŞ > Kişisel, http://www.onuraktas.net > Blog, http://www.alonon.net > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > En güzel yöntem hash'dir. ### Açıklama En başta listenin(sizin text dosyasındaki harfleri liste yaptık sayıyoruz) içinde geziyoruz. Bu listemiz için ilk karakterden başlayarak 5 uzunlugunda olana kadar alıyoruz list[0:1] list[0:2] list[0:3] ... gibi sonrasında alınan her karakter kümesi için "uniq listemizde var mı ?" diye soruyoruz var ise 1 arttır(+1) yok ise 1 ile ilklendir. ### Kod #!/usr/bin/python #-*- coding:utf-8 -*- import string def uniq_find(request, min, max): uniqs = {} length = len(request) for i in range(length): for j in range(min, max): find = string.join(request[i:i + j], "") if length == i + j: return uniqs if find in uniqs.keys(): uniqs[find] += 1 else: uniqs[find] = 1 request = ['a', 'b', 'c', 'd', 'k', 'l', 'm', 'a', 'b', 'c', 'k', 'a', 'b', 'c', 'd', 'k'] print uniq_find(request, 2, 5) -- gdemir
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
