Merhaba,
Az önce basit bir implemantasyon yaptım. Bu D'nin dilimleme yeteneği sayesinde gerçekten de çok basit. Aslında temel olarak şu:
auto summary(size_t Size)(string str)
=> str[0..Size] ~ str[$ - Size..$];
Yani kısaca "string başı ve sonunu, derleme zamanında önceden belirlediğim bir değere göre kırp ve bana özet çıkar" demek istiyorum. Aslında gördüğünüz gibi bunun için ne bir işlev ne de yapı kurmaya gerek vardır. Hemen oracıkta, istediğiniz yerde (örn. writeln içinde) kullanabilirsiniz. İşte D'nin gücü :)
Gelelim 2025 Şubat ayında AI'ın gücüne. Çünkü son yazdığımdan beri derin düşünme ile DeepSeek piyasayı salladı. Ben de bu kadar basit şeyi AI herhalde havada karada yapar demiştim; yanılmışım! İşte sizin de deneyebileceğiniz prompt:
/*
StringSummary adında ve D dilinde yazılmış bir yapı olsun. Yapı, şablon parametresi olarak Size (tipi size_t) ve kurucusunda str (tipi string) parametresini alan özellikte olsun. String'in ilk 'size' karakterini alır, kalan kısımdan da son 'size' karakterini (veya kalan tümünü) alarak toplam 2*size uzunluğunda bir statik dizi (türü char[]) oluşturur. İlk kısım başta, son kısım sonda olmalı, arada gerekirse boşluklar kalabilir. Bir örnek ve açıklamalarla göster ve en kısa şekilde implement et. İpucu:
*/
struct StringSummary(size_t Size)
{ // No UTF support!
char[Size * 2] buf = ' ';
alias buf this;
this(string str)
{
//...
}
}
enum len = 8UL;
enum str = "For Example 123";
void main()
{
auto s1 = StringSummary!len(str);
import std.stdio;
s1.writefln!"[%s]"; // [For Exam ple 123]
}
Yani düşünün; olay o kadar basit ki döngü falan kurmaya gerek yok ve birkaç if'le çok büyük bir metnin başından ve sonundan kırpabilmeliydi. Ama istediğim sonuç hala ve hala (üstelik Python'la bile saçmaladı) yapamadı.
Kabul, belki ben prompt'u doğru üretemedim. Hatta "arada gerekirse boşluklar kalabilir." ifadesini "kalmalı!" diye değiştirmeliydim. Ancak yok kardeşim, Claude.ai dahil birçoğu (bu arada Grok 3 geliyor) sınıfta kaldı. M$'ın Copilot'unu veya Google Gemini'yi denemedim bile. Çünkü onlar şu an çağın gerisindeler...