cmp_tr'nin çıkmasından sonra uzun bir zaman geçti. Ben Ali Bey'e icmp_tr'yi kendim yapacağımı söyledim ama kodlara şuan baktığımda nasıl icmp_tr'ye çevireceğimi anlayamadım. Ama aklıma bir kaç kat daha yavaş çalışacağını tahmin ettiğim ve bir o kadar da basit bir kod ile icmp_tr'yi halledebileceğimizi anladım. Kodlar :
int icmp_tr(T)(in T birinci, in T ikinci)
{
tolowerInPlace_tr(birinci);
tolowerInPlace_tr(ikinci);
return cmp_tr(birinci,ikinci);
}
unittest
{
assert(icmp_tr("aa", "aaa") < 0);
assert(icmp_tr("aa"w, "aaa"w) < 0);
assert(icmp_tr("aaa", "aa") > 0);
assert(icmp_tr("deneme", "debeme") > 0);
assert(icmp_tr("çalışkan"d, "çalişkan"d) < 0);
assert(icmp_tr("çalışkan"d.dup, "çalişkan"d.dup) < 0);
assert(icmp_tr("çalışkan"w, "çalişkan"w) < 0);
assert(icmp_tr("çalışkan"w.dup, "çalişkan"w.dup) < 0);
assert(icmp_tr("TürkçeyeUygun"d.dup, "TürkçeyeUygun"d.dup) == 0);
assert(icmp_tr("ıa"d, "ia"d) < 0);
assert(icmp_tr("ib"w, "ıb"w) > 0);
assert(icmp_tr("ğş"d, "ğş"d) == 0);
assert(icmp_tr("Türk çeyeUygun"d.dup, "TürkçeyeUygun"d.dup) < 0);
assert(icmp_tr("çç"d.dup,"çççç"d.dup) < 0);
assert(icmp_tr("çççç"d.dup, "çç"d.dup) > 0);
assert(icmp_tr("Çç"d.dup,"çç"d.dup) = 0);
assert(icmp_tr("çç"d.dup, "Çç"d.dup) = 0);
}
Sizce projeye eklemeye uygun mu ? Yoksa cmp_tr gibi en baştan kodlanmalı; zaten bu şekildeki çözümü trileri kütüphanesini kullanan kişilerde yapabilir mi diyorsunuz ?
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]