Anagram tekniğinde; belirtilen cümle veya kelime içerisinde kaç adet harf olduğu tespit edilir ve ardından boşluk karakterler dikkate alınmaksızın, bulunan sonuç alfabetik sıraya alınarak yazılır. Örneğin merhaba kelimesini ele alalım. Kelime içerisindeki harfleri, adetleri ile beraber vermiş olduğumuz kelime bazında sıralayacak olursak şu sonuçları elde ederiz (Tablo 1).
Yukarıda Anagram için bulunan harf ve adetlerde alfabetik sıralama yaptığından da bahsetmiştik. Tablo 1deki verileri alfabetik sıralamaya alacak olursak şöyle bir sonuç alacağız, 2a1b1e1h1m1r.
Peki bu sonuç yeterli mi? Cevap kesinlikle hayır! Çünkü Anagram tekniğinde kodlanacak olan kelime veya cümle içerisindeki harflerden sadece bir tane varsa, sayısal değeri yazılmaz. Haliyle sonucumuz 2abehmr şeklinde olmalıdır.
Not: Örnek olarak verilmiş bir cümlede ilk harf büyük olmasına rağmen o harf de küçük kabul edilmelidir.
Peki bu sonuç yeterli mi? Cevap kesinlikle hayır! Çünkü Anagram tekniğinde kodlanacak olan kelime veya cümle içerisindeki harflerden sadece bir tane varsa, sayısal değeri yazılmaz. Haliyle sonucumuz 2abehmr şeklinde olmalıdır.
Not: Örnek olarak verilmiş bir cümlede ilk harf büyük olmasına rağmen o harf de küçük kabul edilmelidir.
Kod:
[COLOR=#A71D5D]import[/COLOR] locale
locale.setlocale(locale.[COLOR=#0086B3]LC_ALL[/COLOR], [COLOR=#183691][COLOR=#183691]"[/COLOR]Turkish_Turkey.1254[COLOR=#183691]"[/COLOR][/COLOR])
[COLOR=#A71D5D]def[/COLOR] [COLOR=#795DA3]anagram[/COLOR]([COLOR=#333333]value[/COLOR]):
value [COLOR=#A71D5D]=[/COLOR] value.lower()
liste [COLOR=#A71D5D]=[/COLOR] []
[COLOR=#A71D5D]for[/COLOR] s [COLOR=#A71D5D]in[/COLOR] [COLOR=#0086B3]set[/COLOR](value):
[COLOR=#A71D5D]if[/COLOR] ([COLOR=#0086B3]str[/COLOR](s).isspace() [COLOR=#A71D5D]==[/COLOR] [COLOR=#0086B3]False[/COLOR]) [COLOR=#A71D5D]and[/COLOR] ([COLOR=#0086B3]str[/COLOR](s).isalpha() [COLOR=#A71D5D]==[/COLOR] [COLOR=#0086B3]True[/COLOR]):
liste.append(s)
liste.sort([COLOR=#ED6A43]key[/COLOR] [COLOR=#A71D5D]=[/COLOR] locale.strxfrm)
[COLOR=#A71D5D]if[/COLOR] (liste.[COLOR=#0086B3]__contains__[/COLOR]([COLOR=#183691][COLOR=#183691]"[/COLOR]ı[COLOR=#183691]"[/COLOR][/COLOR]) [COLOR=#A71D5D]==[/COLOR] [COLOR=#0086B3]True[/COLOR]) [COLOR=#A71D5D]and[/COLOR] (liste.[COLOR=#0086B3]__contains__[/COLOR]([COLOR=#183691][COLOR=#183691]"[/COLOR]i[COLOR=#183691]"[/COLOR][/COLOR]) [COLOR=#A71D5D]==[/COLOR] [COLOR=#0086B3]True[/COLOR]):
liste.remove([COLOR=#183691][COLOR=#183691]"[/COLOR]i[COLOR=#183691]"[/COLOR][/COLOR])
liste.insert(liste.index([COLOR=#183691][COLOR=#183691]"[/COLOR]ı[COLOR=#183691]"[/COLOR][/COLOR]) [COLOR=#A71D5D]+[/COLOR] [COLOR=#0086B3]1[/COLOR],[COLOR=#183691][COLOR=#183691]"[/COLOR]i[COLOR=#183691]"[/COLOR][/COLOR])
result [COLOR=#A71D5D]=[/COLOR] [COLOR=#183691][COLOR=#183691]"[/COLOR][COLOR=#183691]"[/COLOR][/COLOR]
[COLOR=#A71D5D]for[/COLOR] d [COLOR=#A71D5D]in[/COLOR] liste:
[COLOR=#A71D5D]if[/COLOR] value.count(d) [COLOR=#A71D5D]==[/COLOR] [COLOR=#0086B3]1[/COLOR]:
result [COLOR=#A71D5D]=[/COLOR] result [COLOR=#A71D5D]+[/COLOR] [COLOR=#183691][COLOR=#183691]"[/COLOR][COLOR=#0086B3]{0}[/COLOR][COLOR=#183691]"[/COLOR][/COLOR].format(d)
[COLOR=#A71D5D]else[/COLOR]:
result [COLOR=#A71D5D]=[/COLOR] result [COLOR=#A71D5D]+[/COLOR] [COLOR=#183691][COLOR=#183691]"[/COLOR][COLOR=#0086B3]{0}{1}[/COLOR][COLOR=#183691]"[/COLOR][/COLOR].format(value.count(d), d)
[COLOR=#A71D5D]return[/COLOR] result
[COLOR=#969896]# Three questions of Anagram for encoding.[/COLOR]
Questions [COLOR=#A71D5D]=[/COLOR] [[COLOR=#183691][COLOR=#183691]"[/COLOR]Su molekülünde üç atom vardır[COLOR=#183691]"[/COLOR][/COLOR], [COLOR=#183691][COLOR=#183691]"[/COLOR]Yanma oksijen gerektirir[COLOR=#183691]"[/COLOR][/COLOR], [COLOR=#183691][COLOR=#183691]"[/COLOR]Elmas karbondan oluşur[COLOR=#183691]"[/COLOR][/COLOR]]
[COLOR=#A71D5D]for[/COLOR] question [COLOR=#A71D5D]in[/COLOR] Questions:
[COLOR=#0086B3]print[/COLOR] anagram(question), question
[COLOR=#969896]# The results will be like that..[/COLOR]
[COLOR=#969896]# Su molekülünde üç atom vardır: 2aç2d2eık2l2mn2o2rstu3üv[/COLOR]
[COLOR=#969896]# Yanma oksijen gerektirir: 2a3eg3ij2km2no3rsty[/COLOR]
[COLOR=#969896]# Elmas karbondan oluşur: 3abdek2lm2n2o2rsş2u[/COLOR]
Alıntıdır
