Thread overview
Diziden eleman çıkartmak
May 17, 2011
Ali
May 17, 2011
Ali
May 17, 2011
Ali
May 18, 2011
Mengu
May 18, 2011
Ali
May 16, 2011

Diziden eleman çıkartmanın yeni ve çok daha etkin yollarını öğrendim. Bildiklerimle birlikte sıralıyorum:

  1. (Bunu biliyordum.) Eğer eleman en sondaysa, herhalde en kolayı uzunluğu bir azaltmaktır:
   auto dizi = [ 0, 1, 2, 3 ];
   --dizi.length;
   assert(dizi == [ 0, 1, 2 ]);
  1. (Bunu biliyordum.) Eğer ortadaysa, çıkartılacak elemandan önceki ve sonraki dilimleri birleştirmek:
   auto dizi = [ 0, 1, 2, 3 ];
   dizi = dizi[0..1] ~ dizi[2..$];
   assert(dizi == [ 0, 2, 3 ]);
  1. std.algorithm.remove'un ilginç özellikleri var:
  • birden fazla indeks alabiliyormuş

  • sonucu bir dönüş aralığı olarak üretiyormuş

   auto dizi = [ 0, 1, 2, 3, 4, 5 ];
   auto sonuç = remove(dizi, 0, 2);
   assert(sonuç == [ 1, 3, 4, 5 ]);
  • aldığı dizide yapısal değişiklik yapmıyormuş; elemanları kaydırarak (move) değiştiriyormuş. O yüzden asıl dizi şaşırtıcı bir durumda kalıyor:
   assert(dizi == [ 1, 3, 4, 5, 4, 5 ]);

Asıl dizinin değişmesi için aradaki sonuç'u boşverip doğrudan diziye atamak gerekiyor:

   auto dizi = [ 0, 1, 2, 3, 4, 5 ];
   dizi = remove(dizi, 0, 2);
   assert(dizi == [ 1, 3, 4, 5 ]);
  • belirli bir aralıktaki elemanları çıkartmak için parametre olarak 'std.typecons.tuple' alıyor. Örneğin 1'den 3'e kadarki indeksli elemanları çıkartmak için:
   auto dizi = [ 0, 1, 2, 3, 4, 5 ];
   dizi = remove(dizi, tuple(1, 3));   // 1 ve 2 çıkartılır, 3 çıkartılmaz
   assert(dizi == [ 0, 3, 4, 5 ]);
  1. Yukarıdaki yöntemler dizideki elemanların başlangıçtaki sıralarını koruyor. Bu tür algoritmalara "stable" denir. Diziden başlangıçtaki sıranın önemi olmadan (unstable) eleman çıkartıldığında işlemler daha hızlı gerçekleştirilebilir. Örneğin başka elemanların kaydırılmaları gerekmeden; sondaki eleman, çıkartılan elemanın yerine geçebilir. Bunun için remove'a SwapStrategy (değiş tokuş stratejisi) şablon parametresi de vermek gerekiyor:
   auto dizi = [ 0, 1, 2, 3, 4, 5 ];
   dizi = remove!(SwapStrategy.unstable)(dizi, 0);
   assert(dizi == [ 5, 1, 2, 3, 4 ]);

Galiba remove'un bu kullanımı hatalı. Sıfırıncı dışındaki elemanların çıkartılması doğru sonuç vermiyor. Belgesindeki şu örnek de beklendiği gibi çalışmıyor:

   int[] a = [ 0, 1, 2, 3 ];
   assert(remove!(SwapStrategy.unstable)(a, 1) == [ 0, 3, 2 ]);

Ali

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

May 17, 2011

Alıntı:

>

Galiba remove'un bu kullanımı hatalı. Sıfırıncı dışındaki elemanların çıkartılması doğru sonuç vermiyor. Belgesindeki şu örnek de beklendiği gibi çalışmıyor:

Benim anladığım ilk ve son elemanı çıkarırken doğru çalışıyor. Diğer indislerde çalışmıyorlar. İşin asıl ilginç yanı ise dizide olmayan indiside kullansak yinede hata vermiyor:

   int[] a = [ 0, 1, 2, 3 ];
   writeln(remove!(SwapStrategy.unstable)(a, 5));

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

May 17, 2011

Bu guzel bilgileri paylastigin icin tesekkur ederim abi.

Su bilgileri kendin yazim esnasinda mi? Yoksa bildigin guzel yabanci kaynaklarlada mi ogreniyorsun dicem abi (:

Kusura kalma senin gibi birisinede bu soruyu soruyorum ama (:

O kaynaklara bende bakicam (:

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

May 17, 2011

Andrei Alexandrescu'nun The D Programming Language kitabından, ingilizce d forumlarından(örn : http://www.digitalmars.com/webnews/newsgroups.php?search_txt=&group=digitalmars.D.learn ), birde d-programming-language.org'tan öğreniyor diye sanıyorum.

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

May 17, 2011

Ali abi adasim abi (:. Senden Turkce bir basili kitap beklesek az sey etmemis oluruz. Ama TR'de D dili onemli olmaliki ancak.

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

May 17, 2011

Kitap pdf halinde. Aslında yazıcı ile basılabilecek bir halde.

Alıntı:

>

Ama TR'de D dili onemli olmaliki ancak.

Bence artık D'nin bilinirliği yavaş yavaş artıyor. Artık forumlarda D'nin adını duyar oldum. Hem yeni dil olarakta önerilmeye başlanıyor. Ben pythonu da hatırlıyordum. Orda istihza takma adlı kişi Ali Bey gibi geniş döküman hazırlıyordu. O zamanda başta 1-2 insan bile yokken sonra yavaş yavaş dil üniversitelerde bile öğretilir hale geldi. Tabi bunda pardusunda çok önemi var. D'de bence aynı biçimde olcak.

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

May 17, 2011

Alıntı (canalpay):

>

Kitap pdf halinde. Aslında yazıcı ile basılabilecek bir halde.

Bence artık D'nin bilinirliği yavaş yavaş artıyor. Artık forumlarda D'nin adını duyar oldum. Hem yeni dil olarakta önerilmeye başlanıyor. Ben pythonu da hatırlıyordum. Orda istihza takma adlı kişi Ali Bey gibi geniş döküman hazırlıyordu. O zamanda başta 1-2 insan bile yokken sonra yavaş yavaş dil üniversitelerde bile öğretilir hale geldi. Tabi bunda pardusunda çok önemi var. D'de bence aynı biçimde olcak.

PDF halini okuyorum su an.

Kastim Firat Ozgul'un oldugu gibiydi.

Gerci oyle ya da boyle bu dil yayginlasacak...

Buyuyecek.. Hak ettigi yere gelecek.

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

May 17, 2011

Can'ın dediği gibi... Bu konuyu digitalmars.D.learn'de sorulan bir sorudan öğrendim.

Aslında bütün modülleri baştan sona bir kaç kere okumak da gerek. Bir sürü yararlı işlev var. :)

Ali

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

May 18, 2011

Alıntı (CWSuskun):

>

Alıntı (canalpay):

>

Kitap pdf halinde. Aslında yazıcı ile basılabilecek bir halde.

Bence artık D'nin bilinirliği yavaş yavaş artıyor. Artık forumlarda D'nin adını duyar oldum. Hem yeni dil olarakta önerilmeye başlanıyor. Ben pythonu da hatırlıyordum. Orda istihza takma adlı kişi Ali Bey gibi geniş döküman hazırlıyordu. O zamanda başta 1-2 insan bile yokken sonra yavaş yavaş dil üniversitelerde bile öğretilir hale geldi. Tabi bunda pardusunda çok önemi var. D'de bence aynı biçimde olcak.

PDF halini okuyorum su an.

Kastim Firat Ozgul'un oldugu gibiydi.

Gerci oyle ya da boyle bu dil yayginlasacak...

Buyuyecek.. Hak ettigi yere gelecek.

ustad kitabi turkce bastirsa hicbir menfaat saglayamaz, emegine en ufak karsilik gelmez. ancak bu kitabi ingilizce bastirirsa turkce'den en az 100 kat daha fazla satar.

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

May 18, 2011

Bizde ingilizce aliriz. Neyse simdilik guzel olani bu.

Yakinda D dili iyice populer olunca

ceviz, donanimhaber, gorselsetler vs. envai cesit sitede D dili egitimi istenecek (:

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