Thread overview
Project Euler Soru 6
Jun 30, 2011
Kadir Can
Jun 30, 2011
Ali
Jun 30, 2011
Kadir Can
Jun 30, 2011
Ali
Jun 30, 2011
Kadir Can
Jun 30, 2011
Ali
Jun 30, 2011
Ali
June 30, 2011

Bu soru da oldukça kolaydı.Yalnız gözüme çarpan bir nokta var.
Kod:

import std.stdio;
void main()
{
   long[] sayılar;
   long karetop;
   long topkare;
   foreach( long arada ; 1..101 ){
       sayılar ~= arada;
   }
   foreach( long arada; sayılar ){
       karetop += arada * arada;
   }
   foreach( long arada; sayılar ){
       topkare += arada;
   }
   topkare *= topkare;
   writeln( topkare - karetop );
}

Gözüme çarpan nokta şu; long[] sayılar = 1..101 şeklinde atama yapamıyoruz.Neden böyle?

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

June 30, 2011

Aynı şekilde yapmışız aslında.Sadece ben sayıları bir değişkende tutmuşum, sen döngüde belirtmişsin.

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

June 30, 2011

Teşekkürler Ali Bey;
Bundan sonra çok işime yarayacak bir fonksiyonmuş std.array.array .

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

June 30, 2011

Bendeki 6.nin cozumu ise soyle gelisti

import std.stdio;

void main()
{
	int a = 0;
	int b = 0;
	for(int i = 0; i <= 100; i++) {
		a += i * i;
	}
	for(int i = 0; i <= 100; i++) {
		b += i;
	}
	b = b * b;
	writeln(b - a);
}

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

June 30, 2011

Sizin yaptiginizi daha iyi buluyorum hocam.

Sayilari degiskene alip, onun uzerinden goturmek (:

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

June 30, 2011

Her mesaj ayri bir ders (:

Cok sagolun hocam (:

Hocam aslinda biz problemleri cozsek (:

Sizin vaktiniz olursa kutuphanelerin kullanimiyla birlikte bu sekilde verseniz harika olur ama tabii zaman onemli

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

June 30, 2011

Bu

std.array cok mu hizli bana mi oyle geldi?

1 milyonluk bir diziyi yazdirdi su an

hemde hizli bir bicimde kasma yapmadan.

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

June 30, 2011

Sayı döngüsü olarak da olur, iota'yı foreach ile kullanarak da:

import std.stdio;
import std.range;

void main()
{
   foreach (i; iota(0, 11)) {
       writeln(i);
   }
}

(Bu arada, iota'nın üçüncü parametresi sayı adımını belirler. Örneğin ikişer ikişer: iota(0, 11, 2)).

Alıntı (Kadir Can):

>

long[] sayılar = 1..101 şeklinde atama yapamıyoruz

Önceki yöntemler hep tembeldirler (lazy evaluation). Hiç sayı dizisi oluşmaz. Eğer gerçekten de bir dizinin hevesli olarak (eager evaluation) olarak oluşturulması gerekiyorsa, o zaman "aralıktan dizi üreten" std.array.array kullanılabilir:

import std.stdio;
import std.range;
import std.array;

void main()
{
   writeln(array(iota(0, 11)));
}

Ali

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

June 30, 2011

Alıntı (CWSuskun):

>

Bu

std.array cok mu hizli bana mi oyle geldi?

1 milyonluk bir diziyi yazdirdi su an

hemde hizli bir bicimde kasma yapmadan.

Bilgisayarlar hızlı! :) Bende writeln(iota(0, 10_000_000)) 2.4 saniye kadar sürüyor; writeln(array(iota(0, 10_000_000))) da 2.5 saniye kadar.

Ali

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

July 02, 2011

Türkçe'si: "Karelerin toplamı ile toplamların kareleri arasındaki farkı hesaplayınız."

Ali

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