Merhaba,
Bugün yaptığımız Zoom toplantısında, işlev parametrelerinden in/out işlendi. Bunlar ref'in güvensiz olduğu durumlarda hayat kurtarıcı olabiliyor! Lütfen kod içindeki ref yerine out yazıp derleyin ve farkı görün...
Aşağıdaki örneğimiz bir GBS*, yani çöp! Çöp olmayan tek şeyi ise İstiklâl Marşımız; o da 11 mısra halinde kod içinde bitişik yazılı. Güftesi, Mehmet Akif Ersoy tarafından her ne kadar Osmanlıca yazılmış olsa da bu 11 mısra 400 harften oluşuyor ve kodlamada hata yoksa eğer alfabemizin J hariç 28 harfi de tam olarak 11. mısranın "çiĞner" sözcüğü içinde yazılmış oluyor. Bu son harf: Ğ.
Bu kadar gereksiz bilgi yeter. Gerekli olan ise marşımızı oluşturan bu 10 kıtayı ezberlemek ve algoritma yazma gibi ilim ile uğraşmak; maneviyatımızı kaybetmeden!
/* in/out ile
İstiklâl Marşımız */
import std.algorithm;
import std.range, std.stdio;
auto toplaVeSırala ( in string data,/*
ref'i out'la değişin */ref ulong[dchar] map) {
foreach(c; stride(data, 1))
{
auto n = map.get(c, 0);
map[c] = ++n;
}
dchar[] keys = map.keys.dup;
return keys.sort;
}
void main() {
ulong[dchar] map;
string[] mısralar = [
"korkmasönmezbuşafaklardayüzenalsancak",
"sönmedenyurdumunüstündetütenensonocak",
"obenimmilletiminyıldızıdırparlayacak",
"obenimdirobenimmilletimindirancak",
"çatmakurbanolayımçehrenieynazlıhilâl",
"kahramanırkımabirgülnebuşiddetbucelâl",
"sanaolmazdökülenkanlarımızsonrahelâl",
"hakkıdırhakkatapanmilletiministiklâl",
"benezeldenberidirhüryaşadımhüryaşarım",
"hangiçılgınbanazincirvuracakmışşaşarım",
"kükremişselgibiyimbendimiçiğneraşarım"
];
foreach(m; mısralar)
{
m.toplaVeSırala(map).writeln(": ", map.length);
sum(map.values).writeln(" adet harf eklendi!");
}
writefln!"Toplam %d mısra işlendi..."
(mısralar.length);
} /* ÇIKTISI:
abcdefklmnorsuyzöüş: 19
37 adet harf eklendi!
abcdefklmnorstuyzöüş: 20
74 adet harf eklendi!
abcdefiklmnoprstuyzöüış: 23
110 adet harf eklendi!
abcdefiklmnoprstuyzöüış: 23
143 adet harf eklendi!
abcdefhiklmnoprstuyzâçöüış: 26
179 adet harf eklendi!
abcdefghiklmnoprstuyzâçöüış: 27
216 adet harf eklendi!
abcdefghiklmnoprstuyzâçöüış: 27
252 adet harf eklendi!
abcdefghiklmnoprstuyzâçöüış: 27
288 adet harf eklendi!
abcdefghiklmnoprstuyzâçöüış: 27
325 adet harf eklendi!
abcdefghiklmnoprstuvyzâçöüış: 28
363 adet harf eklendi!
abcdefghiklmnoprstuvyzâçöüğış: 29
400 adet harf eklendi!
Toplam 11 mısra işlendi...
*/
GBS: Gereksiz Bilgiler Serisi
Çok zengin bir metin olan İstiklâl Marşı'nın 11 mısrası 400 harften oluşur ve 11. mısradaki "çiğner" sözcüğü ile Türk Alfabesi'nin 28+1* harfi kullanılmış olur.(*aksanlı a: â)