Created
May 5, 2011 14:31
-
-
Save TalhaAkkas/957139 to your computer and use it in GitHub Desktop.
bulmaca sorusu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: cp1254 -*- | |
my_matris = [ ["A","B","C","H","A","R","D","C","O","R","A","L","S","E"], | |
["D","B","F","Z","Y","J","M","T","A","G","D","C","E","G"], | |
["H","L","I","L","I","F","A","T","O","L","L","S","J","R"], | |
["H","E","C","O","S","Y","S","T","E","M","S","K","S","K"], | |
["M","A","T","J","T","I","A","X","P","S","A","K","M","S"], | |
["G","C","I","D","S","K","R","D","F","P","Z","Y","M","U"], | |
["M","H","G","Y","H","O","M","E","J","O","V","J","Q","L"], | |
["M","I","A","E","F","L","E","H","P","U","D","N","N","L"], | |
["H","N","W","P","F","R","T","T","L","Y","F","F","G","O"], | |
["I","G","H","P","L","Y","H","U","L","R","L","G","U","M"], | |
["K","I","U","A","N","E","M","O","N","E","U","O","D","T"], | |
["K","L","R","E","R","B","N","N","R","C","J","H","P","H"], | |
["I","O","I","L","Y","O","C","M","J","X","T","J","U","D"], | |
["C","L","A","S","O","F","T","C","O","R","A","L","S","O"]] | |
my_aranacak_kelimeler = ["Hard Corals","Coral Reefs","Bleaching","Home","Atolls", | |
"Ecosystems","Anemone","Polyp","Soft Corals","Mollusk"] | |
def check_matris_mi(matris): | |
return True | |
def dikey_ara(matris, aranacak_kelimeler, ters_mi = False): | |
yon = "dikey" | |
if ters_mi:# | |
yon = "ters dikey" | |
aranacak_kelimeler_ters = [] | |
for i in aranacak_kelimeler: | |
aranacak_kelimeler_ters.append(ters(i)) | |
aranacak_kelimeler = aranacak_kelimeler_ters[:] | |
bulunanlar = [] | |
for sutun in range(len(matris[0])): # sutun nosunu seçiyoruz | |
sutun_string = "" | |
for satir in range(len (matris)) :# satır nosunu seçiyoruz | |
sutun_string += matris[satir][sutun] # dongu sonunda sectigimiz sutun bir string olacak | |
for kelime in aranacak_kelimeler: | |
if (sutun_string.find(kelime) +1): # find komutu bulamazsa -1 dondurur | |
bulunanlar.append([sutun, sutun_string.find(kelime), yon, kelime]) | |
return bulunanlar | |
def yatay_ara(matris, aranacak_kelimeler, ters_mi = False): | |
yon = "yatay" | |
if ters_mi:# | |
yon = "ters yatay" | |
aranacak_kelimeler_ters = [] | |
for i in aranacak_kelimeler: | |
aranacak_kelimeler_ters.append(ters(i)) | |
aranacak_kelimeler = aranacak_kelimeler_ters[:] | |
bulunanlar = [] | |
for satir in range(len(matris)): # satir nosunu seçiyoruz | |
satir_string = reel_join(matris[satir]) | |
for kelime in aranacak_kelimeler: | |
if (satir_string.find(kelime) +1): # find komutu bulamazsa -1 dondurur | |
bulunanlar.append([satir_string.find(kelime), satir, yon, kelime]) | |
return bulunanlar | |
def bulmaca(matris, aranacak_kelimeler): # soyutlama yapmak önemli | |
if not check_matris_mi(matris): | |
return # matris değilse programı çalıştırma | |
for i in range(len(aranacak_kelimeler)): | |
aranacak_kelimeler[i] = aranacak_kelimeler[i].upper() | |
# butun kelimeleri uppercase yapıyoruz | |
for i in range(len(matris)): | |
for j in range(len(matris[0])): | |
matris[i][j] = matris[i][j].upper() | |
# butun matris elemanlarını upper case yapıyoruz | |
bulunanlar_listesi = [] # bunun üyeleri ["sutun_no", "satırno", "yön", "kelime"] şeklinde listeler olacak | |
# önce dikey arama | |
bulunanlar_listesi.extend(dikey_ara(matris, aranacak_kelimeler)) | |
bulunanlar_listesi.extend(yatay_ara(matris, aranacak_kelimeler)) | |
# dikey ve yatay aramaları yaptık fakat ters yönde arama da yapmalıyız | |
bulunanlar_listesi.extend(dikey_ara(matris, aranacak_kelimeler, True)) | |
bulunanlar_listesi.extend(yatay_ara(matris, aranacak_kelimeler, True)) | |
return bulunanlar_listesi | |
def reel_join (liste): | |
string = "" | |
for i in liste: | |
string += i | |
return string | |
def ters(string): | |
s = "" | |
for i in range(len(string)): | |
s += string[len(string)-(i+1)] | |
return s | |
bulmaca(my_matris, my_aranacak_kelimeler) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment