İyi pazarlar,
Uyuyan forumu arada uyandırmalı 😀
Yine bir pazar şurada, çokuzlular üzerine bir deneme yapmıştım ve sanırım 2 sene geçmiş aradan. Sonlara doğru Ali hocam std.range : indexed
'i önermiş, örneklendirmiş ve ben bilmediğimi itiraf etmişim...
Neticede yine kullanmam gerektiğinde unuttuğumu farkettim. Böylece verilerinizi, örneğin sayısal bir tarihi, alfasayısal dönüşüme kolaylıkla çevirebilirsiniz:
import std.range : indexed;
import std.stdio : writefln;
enum s = [ "SIFIR", "BİR", "İKİ", "ÜÇ", "DÖRT", "BEŞ",
"ALTI", "YEDİ", "SEKİZ", "DOKUZ", "ON",
"YİRMİ", "", "", "", "", "", "", "", "YÜZ",
"BİN", //...
];
void main()
{ // https://dlang.org/library/std/range/indexed.html
// Bugün: 26 MART 2023
ubyte[] indicies = [
11, 6, 0,3, 2,20,11,3
];
// Yazıyla: BUGÜN YİRMİ ALTI SIFIR ÜÇ İKİ BİN YİRMİ ÜÇ
auto t = s.indexed(indicies);
t.writefln!"BUGÜN %-(%s %)";
}
Çok basit değil mi, üstelik az yer kaplıyor! Yani bugünün tarihi sayısal olarak ulong
veri tipine (çünkü t dizisi disk üzerinde sadece 8 bayt yani 219291005730424331 sayısı ile ifade edilir*) alfasayısal karşılığının temsili olarak herhangi bir ortamına örneğin bir JSON şeklinde kayıt edebilirsiniz.
Başka bir gün de şurada sayıları (veya para birimlerini, potansiyeli büyük!) yazıya çeviren bir kod yazmıştık.
(*) Yukarda ürettiğim sayı aslında Unix Time Stamp'e göre dezavantajı var. Çok eskilerden gelen saniye bazına kayıt eden bu yöntem (örneğin bu mesajı göndermemden hemen önceki zaman damgası: 1679829344) daha iyi olabilir.
Hayırlı Ramazanlar....