Sanırım 1 hafta oldu, en iyisi örnek kodları ekleyim ve evet doğru cevap sitedeki...:)
'HEX [1_847D8608_0C971EE2_3A33BEC9_83398019_7E4AE1A0]'
Yani 2217887688014775253706633418653155893774469751200 kutu var olacaktı. Çünkü olay Ali Çehreli'nin zarif sunumu gibi. Görsel şekilde ifade edersek:
http://img851.imageshack.us/img851/4996/kirkkutu.gif
/*
KIRKKUTU.d (12.02.2012)
(c) Copyright 2009 - Ali Eskici
===============================
40 adet kutunun her birinin içinde 39 kutu,
Bu 39 kutunun her birinin içinde 38 kutu,
Bu 38 kutunun her birinin içinde 37 kutu,
..
Bu 3 kutunun her birinin içinde 2 kutu,
Bu 2 kutunun her birinin içinde 1 kutu bulunmaktadır.
Buna göre toplam kutu sayısı nedir?
Soru metni: Ali Eskici
Denklem ve
Programlama: Salih Dinçer
*/
import std.algorithm, std.bigint, std.range, std.stdio;
struct KırkKutu {
ulong a;
short b;
enum empty = false;
@property ulong front() const {
return a;
}
void popFront() {
a = (a * b) + b;
b++;
}
}
void main() {
BigInt a;
auto aralık = take(KırkKutu(), 20 + 2); // 20. kutu
foreach (i, eleman; zip(sequence!"n"(), aralık)) {
if (i>1) writeln(i-1, ". kutu: ", eleman);
}
// Bu aralık, ulong türünden dolayı 20. kutudan sonrasını yanlış listelemektedir!
writeln ("\n12. kutu: ",
reduce!"(a * b) + b"(0,
iota (1, 12 + 1) )
);
// Yukarıdaki çözüm, varsayılan türden dolayı en fazla 12. kutuyu gösterebilmektedir.
for (short b = 0; b <=40; b++) a = (a * b) + b; // @HEX[4D9BE120]
// BIGINT kütüphanesiyle istediğimiz değere çıkabiliyoruz...:)
writefln ("\n40. adım (kırk adet kutu içinde): %s kutu var! @HEX[%s]", a,toHex(a));
}
'41. kutu: 1
2. kutu: 4
3. kutu: 15
4. kutu: 64
5. kutu: 325
6. kutu: 1956
7. kutu: 13699
8. kutu: 109600
9. kutu: 986409
10. kutu: 9864100
11. kutu: 108505111
12. kutu: 1302061344
13. kutu: 16926797485
14. kutu: 236975164804
15. kutu: 3554627472075
16. kutu: 56874039553216
17. kutu: 966858672404689
18. kutu: 17403456103284420
19. kutu: 330665665962403999
20. kutu: 6613313319248080000
-
kutu: 1302061344
-
adım (kırk adet kutu içinde): 2217887688014775253706633418653155893774469751200 kutu var! @HEX[1_847D8608_0C971EE2_3A33BEC9_83398019_7E4AE1A0]'
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]