Google'ın tamamen ücretsiz AI modeli olan Gemini Experimental ile ufak bir deneme yaptım.
Yıllar önce kendi yazdığım BASIC makrosunu bu sefer Google Gemini'ye yazdırdım.
Toplamda 5-6 defa hatalı kod üretti ancak çeşitli yönlendirmelerle sonunda doğru kodu yazabildi.
Merak edenler için kod'u aşağıda paylaşıyorum.
Kod: Tümünü seç
Function ParaOku(Sayi As Double) As String
Dim Birler(9) As String
Dim Onlar(9) As String
Dim Yuzler(9) As String
Dim Binler(13) As String
Birler(0) = ""
Birler(1) = "Bir"
Birler(2) = "İki"
Birler(3) = "Üç"
Birler(4) = "Dört"
Birler(5) = "Beş"
Birler(6) = "Altı"
Birler(7) = "Yedi"
Birler(8) = "Sekiz"
Birler(9) = "Dokuz"
Onlar(0) = ""
Onlar(1) = "On"
Onlar(2) = "Yirmi"
Onlar(3) = "Otuz"
Onlar(4) = "Kırk"
Onlar(5) = "Elli"
Onlar(6) = "Altmış"
Onlar(7) = "Yetmiş"
Onlar(8) = "Seksen"
Onlar(9) = "Doksan"
Yuzler(0) = ""
Yuzler(1) = "Yüz"
Yuzler(2) = "İki Yüz"
Yuzler(3) = "Üç Yüz"
Yuzler(4) = "Dört Yüz"
Yuzler(5) = "Beş Yüz"
Yuzler(6) = "Altı Yüz"
Yuzler(7) = "Yedi Yüz"
Yuzler(8) = "Sekiz Yüz"
Yuzler(9) = "Dokuz Yüz"
Binler(0) = ""
Binler(1) = "Bin"
Binler(2) = "Milyon"
Binler(3) = "Milyar"
Binler(4) = "Trilyon"
Binler(5) = "Katrilyon"
Binler(6) = "Kentilyon"
Binler(7) = "Seksilyon"
Binler(8) = "Septilyon"
Binler(9) = "Oktilyon"
Binler(10) = "Nonilyon"
Binler(11) = "Desilyon"
Binler(12) = "Andesilyon"
Dim ParaBirimi As String
Dim KurusBirimi As String
ParaBirimi = "Türk Lirası"
KurusBirimi = "Kuruş"
Dim Yazi As String
Dim TamSayi As Long
Dim Kurus As Byte
Dim Grup As Byte
Dim UcBasamak As Integer
Dim Bir As Byte, Iki As Byte, Uc As Byte
Dim BinlikYazi As String
' Negatif sayı kontrolü
If Sayi < 0 Then
Yazi = "Eksi "
Sayi = -Sayi
Else
Yazi = ""
End If
' Noktadan sonraki ondalık basamakları ayır ve kuruş olarak sakla
TamSayi = Int(Sayi)
Kurus = (Sayi - TamSayi) * 100
' Sayı 0 ise
If TamSayi = 0 Then
Yazi = "Sıfır " & ParaBirimi
Else
Grup = 0
Do While TamSayi > 0
UcBasamak = TamSayi Mod 1000
If UcBasamak <> 0 Then
Uc = UcBasamak Mod 10
Iki = (UcBasamak \ 10) Mod 10
Bir = UcBasamak \ 100
BinlikYazi = ""
' Yüzler basamağı
If Bir > 0 Then
BinlikYazi = Yuzler(Bir) & " "
End If
' Onlar basamağı
If Iki > 0 Then
BinlikYazi = BinlikYazi & Onlar(Iki) & " "
End If
' Birler basamağı
If Uc > 0 Then
' Sadece birler basamağı 1 ise ve diğer basamaklar 0 ise (Grup = 0 koşulu ile 1, 1TL için "Bir" yazılır)
If (Uc = 1) And (Iki = 0) And (Bir = 0) And (Grup = 0) Then
BinlikYazi = BinlikYazi & Birler(Uc) & " "
ElseIf Uc > 0 Then
BinlikYazi = BinlikYazi & Birler(Uc) & " "
End If
End If
' Binler grubunu ekle ("Bin" kelimesinin tekrarlanmaması için kontrol)
If Grup > 0 Then
If (UcBasamak = 1) And (Grup = 1) Then
' 1000 için "Bir Bin" yazma, sadece "Bin" yaz
BinlikYazi = Binler(Grup) & " "
ElseIf UcBasamak > 0 Then
' Eğer binlik grupta sayı varsa (1'den büyükse), binlik yazıyı Binler() ile birleştir
BinlikYazi = BinlikYazi & Binler(Grup) & " "
End If
End If
' Oluşturulan binlik yazıyı ana yazıya ekle
Yazi = BinlikYazi & Yazi
End If
TamSayi = TamSayi \ 1000
Grup = Grup + 1
Loop
Yazi = Yazi & ParaBirimi
End If
' Kuruş 0'dan büyükse ekle
If Kurus > 0 Then
Yazi = Yazi & " " & Kurus & " " & KurusBirimi
End If
ParaOku = Yazi
End Function