Examples Delphi

"
NeoTurk rumuzlu arkadaşım çok iddialı bakalım cevap verebilecekmi?
26 Kasım 2005 00:49
Sayın Neoturk öncelikle Kodbank'ı hemen hemen tartışma platformuna
çevirdiğiniz için sizi uyarmak gerektiğini belirtmeliyim.
Ardından "sudoko" diye adlandırılan bulmaca çözümünde kendinizi yere göğe
sığdıramamışsınız. Bu da bir zayıflık....
Kendinize çok güveniyorsanız...Alın size bir soru!.
Bulun bakalım bunun algoritmasını... O Zaman sizin ne kadar bilgili olduğunuzu
herkes anlasın! Ama sakın buna siz karar vermeyin...Çünkü insan başkasının
yumruğunu yemeden kendi yumruğunu balyoz zannedermiş...
Benden söylemesi....
İşte Soru:
Veritabanında tüm sözcükler kayıtlı. Kullanıcının rastgele belirlediği
AXB şeklindeki (maksimum 50X50) bir kare bulmacada yine kullanıcının
rastgele kareleri işaretleyerek mantıklı olarak (örneğin 50X50 lik bir
bulmacada tek satırı boş bıraktığında muhtemelen o 50 karakter uzunlukta
bir kelime bulunmayacaktır) oluşturduğu boş bir bulmaca şablonuna otomatik
olarak uygun sözcükleri yerleştirecek (kısaca bulmaca üreteci diyebiliriz)
algoritmayı yazın da göreyim sizi ve programcılığınızı...Ama soruma lütfen
kodla cevap verin...Aksini kabul etmiyorum...Bu arada veritabanını isterseniz
adresinize gönderebilirim...
Cisko
"
cevap:
hafta sonları pc başında olamadığım için,
hafta sonu polemik partisini kaçırdığım için son derece üzgünüm !
yazınıza ilişkin genişçe cevabımı kodbankta verdim,
şimdi devamını getirmek istiyorum, müsadenizle
10x10 luk bir matriste aşağıdaki kelimeleri yerleştiren programı yazdım.
aynı soruyu size iade ediyorum, bana bunu çözen programı yazınız:
veri tabanı kelimeleriniz:
accomplish
access
erase
select
as
load
use
enter
add
cal
setup
available
each
cable
manage
permission
among
oversee
need
edit
link
peer
personnel
request
same
space
entire
own
dueto
( kaynak: kursuna devam ettiğim dersanenin ingilizce kitabında çözülmüş bir puzzle )
[ kontrol ettim kelimelerde hata yok ]
kullanacağınız kelimeler bunlar..........
içlerinde cevapları içerenler de var, içermeyenler de var.
10x10 luk bir matris çizin kağıda,
karalayacağınız kareler şunlar:
1.satır: -
2.satır: 2,4,5,7,8,10
3.satır: 2,4,5
4.satır: 2,4,5,7,8,9,10
5.satır: 8,9,10
6.satır: 2,4,6
7.satır: 2,4,6,8,9
8.satır: 2,3,4,9
9.satır: 5,6,8,9
10.satır: 1,2,3,4,9
[ kontrol ettim, karalanan karelerde hata yok ]
uygun olan kelimeleri önce elle yerleştiriniz.
elle yerleştirdikten sonra, bana bu işi otomatik yapan programı yazınız.
programımın kaynak kodlarını yakın bir tarihte yayınlayabilirim.
dediğiniz gibi "dayak yemeyen yumruğunu balyoz sanırmış" haklısınız...
dinamik çözüm için de tasarlayacağımı söylemiştim. şu anda programım
NxN matrisini destekliyor. stringgrid üzerinde kareleri karalayabiliyorsunuz.
ilgili bir text dosyasından da deneyeceği cevap kelimelerini kullanıyor.
dediğim gibi 50x50 lik için de bunu çözecektir... ama ne zaman Allah bilir....
10x10 luk ve küçük bir kelime arşivinde problem yok...
kolay gelsin..........
not: ben kendimi biliyorum... seviyemi biliyorum...
kimsenin benim hakkımda ne düşüneceği veya düşündüğü inan umrumda bile değil.
traja ve reklama ihtiyacım yok. buraya hobi amaçlı takılıyorum. belki ukalalığım
tutuyodur zaman zaman, o kadar da olsun artık... yıllarıma sayıyorum.........
amacım "al sana cevap" değil...
bu sefer mütevazi olmayı tercih ediyorum...........
saygılarımla_
neoturk_
-----------------
cisko rumuzlu kardeş, neredesin gözüm yollarda seni arıyor uzaklardan
uzaklardan............ 1 Aralık 2005 10:49
neredesin cisko ?
söylediğin bulmaca puzzle hazırlama programını dinamik olarak yazdım.
NxN matrisli bir karede mouse ile istediğin yerleri karalıyorsun,
wordlist kelime db sinden uygun olan olan kelimeleri çakıştırarak
bulmacayı yerleştiriyor ( çözüm süresi değişkendir ! )
şimdi daha hızlı nasıl dağıtabilir ve yerleştirebilir mantığına kasıyorum
arkadaşım. ve inat ettim bunun örnek example demosunu da gazetelere
göndereceğim, ama önce sana gönderecem, sonra burada yayınlayacam.
haklısın, "dayak yemeyen yumruğunu balyoz zanneder"...
polemik için yanlış seçimdi.............
kutlarım !
görüşmek üzre,
neoturk_
-----------------
********************************************
Sevgili Neoturk,
Sizin cevabınızı verdiğimi sanıyordum...
Ama anlaşılan o ki; yazdığımı okumamışsınız.
Sayın Webmasterin veritabanını dolduracağım ama yazdığımı bir kez de
bu TDİ nin yorumuna kopyalayıp-yapıştırayım...
Bu arada soruma aynı soru ile cevap verişin doğrusu tuhafıma gitti.
Bende de çözüm var. Hız sorunu için database ve kod optimizasyonu
yaptıktan sonra ben de alternatifini demo sürümü olarak gaztelere,
dergilere dağıtmayı düşünüyorum... Ama ne zaman olur onu pek bilemiyorum.
Çünkü şu anda ne yazık ki kodla uğraşacak zaman pek bulamıyorum.
Bu yüzden Programın tamamlanması Morfy'nin
"bir işin bitim zamanı hesabı" kuralına dayanıyor:
İşin Bitirme Zamanı= İşin normal bitiş süresini ikiyle çarp
sonra bir sonraki zaman dilimi ile değiştir
(dakika ise saat, gün ise hafta ay ise yıl....
Yani 5 dakikalık iş 5*2=10 dk=>10 saat :)
Orijinal Cevap 28.11.2005 tarihli saat 21:12 deki Kodbank'daki
bana hitaplı cevabınızın yorum kısmında yer almaktadır.
Ordan buraya kopyalayıp yapıştırdım.
Sayın Neoturk arkadaşım;
Öncelikle hiç üşenmeden açıklamada bulunduğun cevap için teşekkür ederim.
Ayrıca; programcılık hobisinin arkasında yatan gerçeğin paradan çok takdir
edilme duygusunun olduğunu bir an unutmuş olacğım ki, eleştirinin dozunu
abartmışım. Hakkını helal et!. Ama; üzüldüğüm ve yanlış anlaşıldığım bir
noktayı belirtmekte fayda görüyorum. İnsanların emeğine çok saygı duyarım
ve hiç kimseyi yaptığı işler için "saçma" diyecek kadar küçültmem!.
Bunun yanında hiç kimseyi de karşımda ağırlığından daha fazlası için
havalandırmam.(Terazinin kefeleri misali). Yazımı yeniden okursanız
hiçbir yerinde "saçma" kelimesinin geçmediğini göreceksiniz.
Yine umarım "yeni yetme" ibaresini de benim için kullanmadınız.
Çünkü 1991 yılında işe girdim ve işyerindeki ilk bilgisayarım 8088
bir pc'ydi(hdd si olmayan,5 1/4" disket sürücülü bir pc sadece 640 kb memory)
ve gw-basic programlama ile program yazmaya başladım. Anlayacğın ben Delphi
den önce de vardım. Delphi nin ilk sürümünü edinip Win 3.1 e kurduğum o anı
hala hatırlarım.
Tahmin ettiğim gibi, beklediğim yanıtı verdin. Yani kod değil, düz yazı!
Maalesef cevap alamadım ve açıklamalarınız bana bir fıkrayı hatırlattı:
Bir gün sonra biyoloji dersinde yazılaya girecek sınıfa hoca son hatırlatmaları
yapmaktadır:
-"Çocuklar! Leylek ve karganın biyolojisine iyi çalışın. Soru 50 puan
değerindedir, haberiniz olsun!",der.
Öğrencilerden biri akşam iki kuşun biyolojisine çalışacak zamanının
kalmadığını anlar ve bu hoca muhtemelen leyleği soracaktır deyip başlar
leyleğin biyolojisini çalışmaya ve tabi su gibi yutar...Aksilik değilmi
hoca sınavda kargayı sorar. Çocuk ters köşeye yatmıştır. Ama yine de
çaresiz bişeyler kağıda yazar...
Kargada leyleğe benzer...ve başlar leyleğin özelliklerini anlatmaya...
*********************************************
merhaba cisko,
öncelikle gülümsüyorum.... dikkat, gülmek değil gülümsemek...
dün akşam 01.11.2005 saat 21.45 itibari ile kısa bir fırsat yakalayıp
önceki yazınızı okumuştum.
buranın forum sistemi sürekli aşağıya kayan bir yapıda olduğu
için ve sizden de ses seda
çıkmadığı için yeni bir mesajla cevap vermiştim, daha sonra eski başlığa
cevap verdiğinizi gördüm.
eğer o cevabınızı okusaydım yukarıdaki başlığı daha "tatlı" bir usluple
yazar ve işi de yokuşa sürmezdim doğrusu... bu yüzden, kaba tavrımı tatlıya
dönüştürmek istiyorum, ve aynı kuşağın (sanırım aynı dönemin geçmişine sahibiz,
bilirsin ben de amstrat ve sinclair spectrum+2 ve amiga500 lerle büyüdüm
sene 1988 lerde. voltran çizgifilmlerimiz vardı
bizim her pazar hevezle izlediğimiz, dimi ? )
gençleri olduğumuzu düşünüyorum.
bana bulmaca sorusunu sorduğunuz anda sizin maziniz hakkındaki
önsezgisel tahminlerimde yanılmadım ve ms-dos kuşağından yetişen
( commodor64 pc lerle yetişmiş ) bir yaşıtım olarak tahmin ettim.
herneyse, daha fazla depresyona girip de yaşlandığımı
kabullenmek istemiyorum artık
tekrar bizim şu "meşhur" polemiğimize geri dönmek istiyorum, nacizane
aynı düşünceye sahip olduğumuzu da en içten samimiyetimle belirtmek
istiyorum bu arada.
önce biraz daha geriye dönüyorum,
1) size sorduğum soruları programladınız mı? veya programlayabildiniz mi?
samimi olarak soruyorum. eğer programlayamama veya mantığını kuramama durumu olursa
( ki sorduğum sorular zor algoritmalardır )
kaynak kodları ile birlikte size gönderebilirim.
2) bulmaca programınız şu anda çalışır durumda mı? mümkünse
bir exe demosunu gönderebilir misiniz?
eğer hala kodlama ve tasarım aşamasında iseniz ikimiz de
aynı noktadayız demektir, aramızdaki tek fark benim
programım neredeyse bitti sayılır, teknik açıklamasına değineceğim.
şu anki yazdığım bulmaca programım:
- dinamik oldu. NxN matrisler için bir stringgrid ortamı sağlıyor
ve kareleri kullanıcı mouse ile karalıyor.
- kullanıcı wordliste müdahale ediyor ve yerleştir tuşuna
bastığında uygun tüm kelimelere yerleştirilip yerleştirilmeyeceğini
analiz etmeye başlıyor. ( %98 oranında programı bitti gözüyle bakıyorum artık )
2 gündür bahsettiğim "akıllı analiz nasıl yapılmalı" sorununu da
hallettim ve gerçekten beynimden şüphe etmeye başladım, çünkü, böyle
bir mantığı nasıl olup da koda dökebildiğimi hala anlamış değilim.
ki her gece genelde göl aleminde kafa çeken birisiyim.....
inan bana kendimden şüphe ediyorum,
bazen rüyadaymışım gibi geliyor bana... gündüzleri zombi moddayım...
ilk versiyonu yazdığımda, ( 5 gün önce - sizin soruyu sorduğunuzun
ertesi günü ! )
tüm denemelerimi 10x10 matrisinde yaklaşık 30-40 kelimelik bir wordlistten
çözümü bulmasını istedim.
( daha önce çözülmüş ve kareleri karalanmış bir bulmaca örneğini baz aldım.
size sorduğum soru )
"aptal denemelerle" yaklaşık olarak 24 Milyar ( yanlış yazmıyorum ) deneme
yapmasına kadar bekledim. yaklaşık 30 dakika süre aldı. ekrana her 100.000
işlemde bir refresh çektirdim ve bekledim. kullandığım pc P4 - 2GB Ram'a sahip.
bunun üzerine size söyledim ki "bunu nasıl hızlandırabilirim", akıllı
arama-tarama nasıl yaptırabilirim. ve 4 saat odama kapandım ve masa başında
enine boyuna çok derin hesaplar planlar yaptım. tek tek sözel cümleleri
kağıda yazdım ve bunları nasıl programlayabilirim diye düşünürken bir
taraftan da kafamdan programı yazmaya başladım. ve hemen akabinde sabahladım.
pc başında beyin ameliyatı yaparcasına ve full konsantre olarak sözel
bahsettiğim mantıklarımın hepsini koda döktüm. çok dikkatli kodlama yaptım.
çünkü oluşan mantıksal hataları yakalamam çok güç oldu. en sonunda da
gerçekten akıllı analiz yapan algoritmayı da başardım ve ekledim.
aynı matris için 30 dk süren işlemi ( 40 kelime için ) 5 sn de çözümü
yakalatmayı sağladım.
akıllı olan tüm alternatifleri çok hızlı deniyor ve gereksiz hiç bir
kelimenin alt varyasyonlarını taratmıyor. bu da milyarlarca gereksiz
kombinasyonu elemesine neden oluyor ki istediğim de buydu.
akşam olduğunda bunu arkadaşım "shadow"a gösterdim onun yanına gittim.
sizinle olan polemiğimizden bahsettim ve bu programı "cisko" için
yazdığımı söyledim. zaten formumun caption kısmında da
"word puzzle by neoturk for cisko!" yazdığını görünce o da
benim ne kadar hırslandığımı farketti.
detaylı olarak kareleri karalayarak akıllı analiz örneklerine baktık.
saçma karalama işlemlerinde hemen bana "bu puzzle çözülemez" uyarısını
verdiğini görünce "mantığımdan" çok memnun kaldım. ve gerçekten de elle
de uğraşılsa öyle bir puzzlenin çözülemeyeceğini çünkü yatay ve dikeyde
ilgili kelimeler olsa dahi hangi yerde tıkanacağını program gösteriyordu.
bunu şu anda tekrar bana kodla deseler inan yapamayabilirim yani !...
o anlık bir duygu ve sezgiydi sabahladığım gün...
daha sonra "shadow" arkadaşım bana yeni bir fikir verdi, hocam dedi,
programa ikinci bir alternatif eklet. wordlistlerden herhangi bir kelime
seçsin, ve bu kelimeye dayanarak örneğin 20 tane kelimeyi bulmacaya
yerleştirsin, kalan boş kareleri kendisi karalasın dedi. tamam dedim
uygundur. şimdi bunu yapacağım.
daha sonra bu işin ticareti yapılabileceğini farkettim. öncelikle
yerel gazetelere "hergün 1 bulmaca" promosyonu fikri ortaya çıktı.
belki de inşallah bu iş sayesinde ekmek parası da bulabileceğim.
malum hayat zor... parasız kalınca da insan her şeyi yapıyor...
ve akabinde göle içmeye gittim her zamanki olduğu gibi.. "shadow"
ile birlikte çok kulaklarını çınlattık, bilmiyorum çınladı mı ?
bana şu öneriyi de sundu, "hocam bu programı cisko ya da gönderelim
o da bunun satışını yapsın para kazanalım en azından" dedi,
ben de "olumlu" karşıladım...
yani sonuç olarak dostum ( dostum diyorum mahsuru yok ise ),
bu projeyi birleştirelim derim.....
ve tekrar söylüyorum,
bulmaca çözen programı yazmak gerçekten "zor".....
herkesin yazabileceği bir harç değil... 40 fırın deneyim ve tecrübe
mantığı gerekiyor. kodlarını tahmin edersin artık.
iç içe geçmiş bir sürü fonksiyon. dantel gibi işlenmiş.......
tv de online yarışma olsa katılırdım yani....
artık durumu polemik olarak görmüyorum, ve allah sizden de razı olsun,
belki de ekmek paramı çıkartmamı sağlamama vesile oldunuz,
belki de kader bizi buluşturdu...
programım bitince exe demosunu göndereceğim...
kendine iyi bak dostum,
görüşmek üzere...
neoturk_