Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
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
Kayıt: 15.08.2007 |
|
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
istanbul
Kayıt: 04.10.2007 |
|
cantur yazdi
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
:)
|
|
Yazar |
|
neurorebel
Kayıt: 15.08.2007 |
|
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
Kayıt: 08.03.2007 |
|
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.
Sizce sorun ne olabilir
|
|
Yazar |
|
marakana
Kayıt: 08.03.2007 |
|
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?
|
|
Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
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? |
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ç
|
|
Yazar |
|
cantur
Rize
admin
Kayıt: 16.01.2006 |
|
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
Kraliyet Ailesinden
Kayıt: 18.10.2007 |
|
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
TRABZON
Kayıt: 05.12.2006 |
|
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.
Sizce sorun ne olabilir |
yanlış anlamışım heralde
Nobody live like me!!!
|
|
Yazar |
|
marakana
Kayıt: 08.03.2007 |
|
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.
Sizce sorun ne olabilir |
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ıysamHocanı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ü... |
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ı.
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | |