August 06, 2013

Alıntı (acehreli:1375661027):

>

Alıntı (agora):

>

Bunda da hızda problemler olur mu hocam?

Anlamadım. :( Hız problemi değil, hız çözümü görüyorum.

Alıntı:

>

Bu ozellik scripting diller'e mi ait? Yani tavsiye bir islem midir? Pointer'lar gibi kullanimina dikkat edilmeli midir?

Hiç anlamadım. :(

Ali

İlk alıntı icin hocam:

Yani bu tip islemleri hep yorumlamali dillerde gordum acaba derlemeli dillerde bu bellek yonetiminde sorun yaratan islemler gibi dikkatli davranilmasi gereken islemler midir? Aslinda ikinci soruyu da sormus oldum

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 06, 2013

memoize'ın kullanımı çok yaygın değil. Herhalde insanlar alışmadıkları içindir. Hep aynı sonucu veren işlevi tekrar tekrar işletmeye gerek olmadığına göre bazı durumlarda işe yarar. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Tesekkur ederim hocam simdi bir sorum daha olacak ben bi yeri kacirdim sanirim

Elimde soyle bi dizi var

string[] letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
		"k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "v", "y", "z", "w", "x", "q" ];

Ben bu diziden rastgele eleman cekmek istiyorum

Mantığı yanlış kurmuş olabilirim

Random let;
	auto letn = uniform(0, 26, let);
	writeln(letn); // bu kısım test için burada çıktı => 21

	writeln(letters[cast(uint)letn]); // burada çıktı => y

üst kodda verdiğim 21 ve y değerleri hep aynı yerde kalıyor. yani bir değer girsem o değerin ne olduğu fark etmeyecek ve hala aynı sonucu gösterecek ben ise her girilen değerde farklı bir cevap vermesini istiyorum ama projeyi temizlesem de naparsam yapayım sürekli y sonucunu veriyor burada hafızayı mı temizlemem lazım?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Şu şekilde denersen daha kolay ve her zaman rasgele:

letters[uniform(0, $)].writeln();

Ben de bunu Ali hocamdan öğrenmiştim...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Bu cok iyi yapacagim tek birsey kaldi simdi bu uretilen rastgele degeri, bir degere sabitlemek

giris: ddili.org

cikti: 1471065822353524AAC2A3D50578B82C5936289CBE263775h

son kismi da yapmaya calisacagim ve bir kere girilen deger icin artik rastgele uretim soz konusu olmayacak

yani ikinci kez ddili.org girersem yine cikti

1471065822353524AAC2A3D50578B82C5936289CBE263775h

olacak. Daha once girilmemis degerler icin rastgele, daha once girilmisler icin ise belirlenen klasordeki dosyanin icindeki degeri alacagim. Bu benim ilk sifreleme denememdi. Belki yapabilirim :) Tesekkurler hocam simdi calisiyor sistem :)

Ayrica bu $ dolar isareti son elemani mi belirtir? Yani 0'dan $. elemana kadar $ ifadesi burada dizinin büyüklüğünü mü alıyor?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Alıntı (agora):

>

Ayrica bu $ dolar isareti son elemani mi belirtir? Yani 0'dan $. elemana kadar $ ifadesi burada dizinin büyüklüğünü mü alıyor?

Evet.

Ayrıca dizilerde hassas bir durum var. Malumunuz bilgisayar dünyasında veriler 0'dan başlar. O yüzden bu kısayolu (aslında arr.length demekle aynı) kullanırken eğer dizinin son elemanına erişeceksek bir eksiğini ( arr[$-1] ) çağırmamız gerekir. Yoksa "out of bounds" hatası alırız...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Aslinda birsey yapmistim letters.length yazdirmistim dizi buyuklugunu :) oradaki 0, 26 da ondan dolayi oyleydi :) 0'in a oldugunu biliyorum ama iste o hatayi merak ediyodum dusundum dusundum bise cikmadi fakat bu $ isareti cok sevimli geldi :) kullanmak daha guzel gibi isimi de kolaylastirir :) bu arada sizin verdiginiz ornekte de o zaman

letters[uniform(0, $-1)].writeln();

mi olacak?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Verdiğim şekilde kullanmak gerekiyor. Çünkü uniform()'da benzer bir davranış sergiliyor. Aslında döngülerden dizilere kadar bu hep başımıza gelen bir durum olduğu için aksi belirtilmedikçe her zaman aralığın son elamanı sınırı belirleyen değerdir, yani hariçtir...

Örneğin, 0 hariç ama 100 dahil rasgele sayılar üretmek istersek, üst değer 101 olması gerekiyor:

import std.stdio, std.random;

void main() {
 int[int] xSay;
 size_t n;

 while(xSay.length < 100) {
   xSay[uniform(1, 101)]++;
   n++;
 }
 assert( !(0 in xSay), "Dikkat: 0 var!");
 assert( !(101 in xSay), "Dikkat: 101 var!");

 xSay.writeln("\nToplam döngü:", n);
}

Koddaki döngü kıstasını 100 değilde "101'e kadar dön" şeklinde yapsaydık sonsuza kadar sürecekti. Çünkü diziye 101 sayısı hiç bir zaman eklenmeyecekti. Zaten assert()'lerin hata vermemesinden, bunu anlayabiliriz. Aslında döngü kısa (n < 1000) sürüyor. Hatta kendi bilgisayarımda pek 500 sayısını görmedim bile...:)

Bu örnekte, ayrıca rasgelelik algoritmasının basit bir analizini çıkarabilirsiniz. Yani üretilen sayıların dağılımını sayabiliyorsunuz. Elde ettiğimize veriye göre 1000'den küçük denemelerde tüm sayılardan örnek alınabildiğini görebiliyoruz.

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Gün geçmiyor ki yeni bir şey öğrenmiyoruz. Bir başka tartışmasız konu da D çok güzel bir dil ve bence gelecek vaat* ediyor. Bu durumda alıştığımız gibi geleneksel şekilde olan 3. satırdaki:

xSay[uniform!"[)"(1, 101)]++;

Üstelik bu çok da anlamlı. Yani keskin hatları olan işaret, kesin bir dille, adeta yazılanı istiyorum diyor...:)

Geri de kalıyor 3 olasılık ve bunların her iki parantez de köşeli olanı denediğimde assert()'lerin ikincisine yakalandığını gördüm. D'yi seviyorum... :-D

Yenisi: http://wiki.dlang.org/The_D_Programming_Language

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

Ali ve Salih hocam cok tesekkur ederim :)

uniform!"()"(0, 10);

bu kullanimda o zaman 1 ~ 9 da dahil olarak aliniyor diyebilir miyiz?

Sadece 0 ve 10 alinmiyor yani yani 0. deger ve 11. degeri almiyor ama 1 ve 10. degeri aliyor? :) soru garip oldu tabii ama mantigi bu sanirim :)

Ayrica Salih Hocam;

D dilini sevme sebebim bu ama tabii Java'dan bu dile gecis yapan birisi olarak kullanim zorlugu olayina yakalandim. Ben her dili tadan birisi degilim ya o dilin kurallari o yuzden zor geliyor ama alistikca daha cok seviyor insan. C# ya da Java'dan ornek verecek olursam burada bir if ifadesinde ilk yaptigim sey

ornek.Contains oldu acaba bu cumlede su iceriliyor mu gibisinden :) tabii olmadi calismadi cunku oyle bir durum yok :) canFind, find gibi metodlar gordum ornegin;

auto t = tuple("merhaba dunya", "benim adim", "agora");
	if([t[]].canFind("benim adim"))
	{
		writeln("anlasilan bu koca dizide adimi da soylemeye kalkmisim\n");
	}
	else
	{
		writeln("Hic bise bulunamadi");
	}

Burada arama islemleri farklilik gosterdi ama cogu seyi yeniden ogrenmek cok iyi bence :)

Cok cok tesekkur ederim. Ayrica findSplit() metodu da var

http://ddili.org/ders/d/cokuzlular.html

Ayrica ben metod diyorum ama çoğu işlev sanırım alışkanlık ama işin kuralına yatkın olmak gerekiyor bu konuda özür dilerim :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]