Konuyu görüntüle
IUCODERS FORUM > Duyurular > Okul ile ilgili > Programming Languages Proje
Yazar
neurorebel


avatar

Kayıt: 15.08.2007
30.12.2007-18:23 #33450
Benim yanlış anladığım şekliyle yapmak zaten tam bir karın ağrısıydı :D Hocam bu arada word_list'i hızlı sorgulamak için yazdığım kodlar 800 satıra yakın :) Çok umutluyum 5sn altından bir de şu yanlış anlamalar olmasa hypnotized Sınırlamalara tam olarak uyacak birşeyler icat edemedim. Spiral gittiğimizde sınırlamaları hesaba katınca çok fazla backtracing olacak :( Daha iyi bir yöntem bulmaya çalışıyorum. Galiba yanında bir adet PDF hediye etmek durumunda kalacağız :)





Do weird and difficult things.

Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
30.12.2007-18:45 #33451
neurorebel yazdi
 
word_list'i hızlı sorgulamak için yazdığım kodlar 800 satıra yakın :)

Aklıma reklamlardaki sloganlar geldi biggrin 800 satır ile hızlandırılmış(!) word_list() laughing Daha fazla performans için word_list 800 ü tercih edin biggrin word_list 800 tüm benzin istasyonlarında...

Bi de word_list zaten 10-20 ms de sorgulanabiliyor. Sen napıyon abi böyle :) daha fazla nasıl hızlanıorsun merak ettim. helal olsun yani peace

neurorebel yazdi
 
yok öyle hızlı sorgulanmıyor :) biraz uğraşmak lazım:)

edit: bu arada 400 satırmış

400 =~ 800 biggrin peace





Yazar
neurorebel


avatar

Kayıt: 15.08.2007
30.12.2007-18:51 #33452
yok öyle hızlı sorgulanmıyor :) biraz uğraşmak lazım:)

edit: bu arada 400 satırmış





Do weird and difficult things.

Yazar
neurorebel


avatar

Kayıt: 15.08.2007
30.12.2007-21:26 #33459
burakkanmaz yazdi

 
Aklıma reklamlardaki sloganlar geldi biggrin 800 satır ile hızlandırılmış(!) word_list() laughing


daha öğreneceğin çok şey var...





Do weird and difficult things.

Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
30.12.2007-22:04 #33461
Geyik , geyik geyik .

word_list'te tarama işlemini hızlandırmak için yöntemler geliştirilebilir tabi ki. Misal en basitinden değişik uzunluktaki kelimelerin başlama indisleri tutularak istenilen uzunluktaki kelimenin bulunma adımları hızlandırılabilir gibi.

HINT : Bir for döngünüzü yarı yarıya bile olsa azaltacak bir koşulu koda eklemeniz. işlemleri hızlandırabilir.
Recursif fonksiyonlar bazı aşamada size kutarıcı gibi görünebilir ama kaçınılmaz olmadığı sürece kullanım miktarını minimum tutun.
Bir döngüde 100 kere dönerek işleminizi hallettiğinizi düşünün ve işlem t süre de gerçekleşsin. Eğer işlem sürenizi 2t ye çıkartacak bir koşulla döngü müktarını azaltıyorsanız döngünüzün %50 den fazla iyileştirilmesi gerektiğini aklınızda bulundurun. Aksi taktirde işlemciye daha fazla yük bindireceğinizi aklınızda bulundurun.
v.s.





Yazar
neurorebel


avatar

Kayıt: 15.08.2007
30.12.2007-23:19 #33463
burakkanmaz yazdı:
 
Bi de word_list zaten 10-20 ms de sorgulanabiliyor.


ödev zaten yeterince eğlenceli... böyle şakalara gerek yokmuş demek ki di mi ?

edit: yarın ki derste wordlist partitioning ve pattern matching anlatılabilir (zaten 10dk da anlatılacak basit şeyler) bu fikirleri uygulamış arkadaşlar anlatabilirlerse çok yararlı olur... onun dışında mesela "derinine arama" algoritması ve tabii ki "yığın veri yapısı" da çok faydalı olur...





Do weird and difficult things.

Yazar
benkimim


avatar
istanbul
Kayıt: 04.10.2007
31.12.2007-00:06 #33468
cantur yazdi
 
Geyik , geyik geyik


ya hocam sizin bu ilk değeri sallama algoritması hiç 2 ve 3 karakterli bulmuyo :) benim mi şansım bilemiyorum onun yerine ben şöyle birşey yaptım. 2 karakterden 16 karaktere kadar
olan kelimelerin word_list sıralarını (başlangıç ->indexchar[s][0] ve bitiş ->indexchar[s][1] ) bir diziye alıyorum. Önce kelimenin boyutuyla ilgili bir rand
uyguluyorum yani 2 ile 16 arasında bi değer üretiyor. Sonra gidiyor o karakterli kelime aralığında
bir değer üretiyor. Biraz olasılıkları değiştirsede küçük kelime gelme ihtimali daha fazlalaşıyor.
uygun mudur ?

Örnek : 15 adet böyle değer üretince daha güzel bir dağılım gözleniyor...

 
srand((unsigned)time(0));

for(da=1;da<=15;da++)
{
s=2+rand()%16;
salla=indexchar[s][0]+rand()%(indexchar[s][1]-indexchar[s][0]);
printf("%d karakterli sallanan sayı = %ld",s,salla);
}


Programda üretilen değerler
 
2 karakterli sallanan say² = 68
5 karakterli sallanan say² = 8040
12 karakterli sallanan say² = 129693
12 karakterli sallanan say² = 125432
2 karakterli sallanan say² = 17
6 karakterli sallanan say² = 13517
8 karakterli sallanan say² = 56830
14 karakterli sallanan say² = 141493
6 karakterli sallanan say² = 16846
3 karakterli sallanan say² = 830
9 karakterli sallanan say² = 65353
14 karakterli sallanan say² = 141414
8 karakterli sallanan say² = 61518
3 karakterli sallanan say² = 670
9 karakterli sallanan say² = 65752




Kelimelerin bulunduğu aralıklar
 
2 Karakterli ilk=0, son=247 -- Fark = 247
3 Karakterli ilk=248, son=1001 -- Fark = 753
4 Karakterli ilk=1002, son=4673 -- Fark = 3671
5 Karakterli ilk=4674, son=12103 -- Fark = 7429
6 Karakterli ilk=12104, son=24669 -- Fark = 12565
7 Karakterli ilk=24670, son=42983 -- Fark = 18313
8 Karakterli ilk=42984, son=64414 -- Fark = 21430
9 Karakterli ilk=64415, son=85714 -- Fark = 21299
10 Karakterli ilk=85715, son=104751 -- Fark = 19036
11 Karakterli ilk=104752, son=120090 -- Fark = 15338
12 Karakterli ilk=120091, son=131429 -- Fark = 11338
13 Karakterli ilk=131430, son=139304 -- Fark = 7874
14 Karakterli ilk=139305, son=144221 -- Fark = 4916
15 Karakterli ilk=144222, son=147170 -- Fark = 2948
16 Karakterli ilk=147171, son=148783 -- Fark = 1612

Fark değerleride tam rand için ayarlı gibi biggrin





:)
Yazar
neurorebel


avatar

Kayıt: 15.08.2007
31.12.2007-00:36 #33470
random sayı üretirken asla ama asla

rand() % X

şeklinde kodlar yazmayın :)

rand() ile üretilen sayının pek az bitini kullandığınız için kaliteli random sayılar üretemezsiniz.

güzel olan budur:

r = ((double) rand() / (double)RAND_MAX * max + min)

min ile max arasında bir random sayı üretir.

bu şekilde min ile max arasındaki sayıların hepsinin gelme ihtimalleri eşit olur.





Do weird and difficult things.

Yazar
marakana


avatar

Kayıt: 08.03.2007
01.01.2008-02:59 #33498
Hocam ben kodları çalıştırdğımda hata vermiyor ama karşıma boş ekran cıkıyor.Çalıştırdığım döngülerin doğru olduğunada eminim aslında.Ama boş kareler dahi cıkmıyor..Hiç yazmazasam daha iyi en azından boş kareleri görürdünüz.d oh
Sizce sorun ne olabilirpraying







Yazar
marakana


avatar

Kayıt: 08.03.2007
01.01.2008-13:37 #33499
Hocam yazdığım kodu arkadaşıma yolluyorum o derlediğinde istediğim şey cıkıyor ama bende boş ekran.Arkadaş dev kullanıyor, ben 6.0 bi alakası olabilirmi?Ne yapmalıyım?worriedd ohcrying







Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
01.01.2008-14:17 #33500
marakana yazdi
 
Hocam yazdığım kodu arkadaşıma yolluyorum o derlediğinde istediğim şey cıkıyor ama bende boş ekran.Arkadaş dev kullanıyor, ben 6.0 bi alakası olabilirmi?Ne yapmalıyım?worriedd ohcrying


Kullandığın ide ile alakalı olabilir ama bir ide de çalışan diğerinde de çalışır. Tahmin edebildiğim hatalar.
1. Proje klasörü salt okunur kaldığından bazı dosyaları ide oluşturamadığından hata oluyor olabilir.
Bunun için proje içindeki klasörlerin tek tek salt okunurluğunu kaldır.

2. Projenin bulunduğu yer sistemin koruduğu klasörlerden biri olabilir veya klasördeki kullanıcı izinlerin bozulmuş veya karışmış olabilir.
Bunun için eğer projen masaüstündeyse veya document settings klasöründe , windows veya programfiles içinde bulunuyorsa. projeyi bunların dışındaki bir klasöre taşımayı dene.
Proje klasörüne sağ tıklayıp everyone için tüm izinleri ver ve altt klasörler için uygula.

3. Ide ayarlarında bir problem olabilir. Verdiği hatayı google da ara ve yapman gereken düzeltmeler var mı diye kontrol et.

4. V.S.6 nın servis paketini kurdun mu ?

5. Forumda daha önce bahsedilen dosyaların uygun klasörlerde bulunma durumunu kontrol edebilirsin.

6. Bilmem bazen olur böyle şeyler vs 2008'e geç laughing






Yazar
cantur


avatar
Rize
admin
Kayıt: 16.01.2006
01.01.2008-14:27 #33501
Sorunu biraz yanlış da anlamışım sende boş ekran geliyor ise aynı kod ile , ideye bağımlı bir kod yazmış olabilirsin (veya arkadaşın yazmış olabilir.)





Yazar
naranja


avatar
Kraliyet Ailesinden
Kayıt: 18.10.2007
01.01.2008-14:33 #33502
Bence yazdığın kod sonsuz döngüye giriyor, bu nedenle hiçbirşey gelmiyor.





Kaybolur hayatIn tarifsiz ahengi;
Zaman bir tablodur düser duvarlardan.






Yazar
sinan61


avatar
TRABZON
Kayıt: 05.12.2006
01.01.2008-22:00 #33526
marakana yazdi
 
Hocam ben kodları çalıştırdğımda hata vermiyor ama karşıma boş ekran cıkıyor.Çalıştırdığım döngülerin doğru olduğunada eminim aslında.Ama boş kareler dahi cıkmıyor..Hiç yazmazasam daha iyi en azından boş kareleri görürdünüz.d oh
Sizce sorun ne olabilirpraying

yanlış anlamışım heraldebeat upbeat upbiggrin








Nobody live like me!!!




Yazar
marakana


avatar

Kayıt: 08.03.2007
01.01.2008-22:36 #33527
sinan61 yazdi
 
marakana yazdi
 
Hocam ben kodları çalıştırdğımda hata vermiyor ama karşıma boş ekran cıkıyor.Çalıştırdığım döngülerin doğru olduğunada eminim aslında.Ama boş kareler dahi cıkmıyor..Hiç yazmazasam daha iyi en azından boş kareleri görürdünüz.d oh
Sizce sorun ne olabilirpraying


Hocanın yazdığı main fonksiyonuna göre puzzle ın sadece sonucu ekrana yazdırılıyo yazdğın algoritma sonuçlanmadan ekrana bişey gelmez! Doğru anladıysamthinkingHocanın exe lernde bir önizleme var algoritma sonuçlandımı puzzle ın son halini bir daha ekrana yazdryo...Hocam sizde bir açıklama yaparsanız daha ii olur emin diilim çünkü...laughing



Hocanın yazdığı kodlara hiç dokunmadan boş kareler çiziliyor zaten.Ama benim sorunum o değilmiş, kodda hata varmış.Onu düzeltince problem ortadan kalktı.peace







Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb