Skip to content

Instantly share code, notes, and snippets.

@TalhaAkkas
Created May 5, 2011 14:31
Show Gist options
  • Save TalhaAkkas/957139 to your computer and use it in GitHub Desktop.
Save TalhaAkkas/957139 to your computer and use it in GitHub Desktop.
bulmaca sorusu
# -*- 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