Çözüldü Permütasyon Hesabı

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
16
En iyi yanıt
0
Puanları
3
Yaş
38
Konum
İzmir
Merhaba,

İngilizce alfabedeki harflerden ve rakamlardan oluşan 3 karakterli kaç adet sözcük yazılır? 125 12b 11a aae aj8 vs gibi. Tüm listeyi alabileceğimiz bir makro yazılabilir mi?
Şimdiden teşekkürler.
 

Ali Kırksekiz

Yeni Üye
Katılım
28 May 2018
Mesajlar
13
En iyi yanıt
0
Puanları
3
Konum
Sivas
3 harfli olarak kodlardan uyarladım.

Kod:
Sub GetString()
    Dim xStr As String
    Dim FRow As Long
    Dim xScreen As Boolean
    xScreen = Application.ScreenUpdating
    Application.ScreenUpdating = False
    xStr = Application.InputBox("Metni giriniz.:", "Hesaplama", , , , , , 2)
    If Len(xStr) < 2 Then Exit Sub
    If Len(xStr) >= 4 Then
        MsgBox "Çok fazla permütasyon var!", vbInformation, "Hesaplama"
        Exit Sub
    Else
        ActiveSheet.Columns(1).Clear
        FRow = 1
        Call GetPermutation("", xStr, FRow)
    End If
    Application.ScreenUpdating = xScreen
End Sub
Sub GetPermutation(Str1 As String, Str2 As String, ByRef xRow As Long)
    Dim i As Integer, xLen As Integer
    xLen = Len(Str2)
    If xLen < 2 Then
        Range("A" & xRow) = Str1 & Str2
        xRow = xRow + 1
    Else
        For i = 1 To xLen
            Call GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)
        Next
    End If
End Sub
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
16
En iyi yanıt
0
Puanları
3
Yaş
38
Konum
İzmir
@Ali Kırksekiz, Merhaba Ali Bey,

Öncelikle cevabınız için teşekkürler. Kod doğru bir şekilde çalışıyor ancak belirttiğiniz gibi sadece 3 lü permütasyon yapabiliyor.
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, r, s, t, u, v, y, z, w, x harflerinin ve 0 1 2 3 4 5 6 7 8 9 rakamlarının oluşturduğu 3 karakterli kelimelerin listesine ihtiyacım var.
Bunun için çok mu uzun kod yazımı gerekiyor bilemediğim için soruyorum. Eğer yapılabiletesi varsa çok memnun olurum.

Teşekkürler.
 

Ali Kırksekiz

Yeni Üye
Katılım
28 May 2018
Mesajlar
13
En iyi yanıt
0
Puanları
3
Konum
Sivas
Aşağıdaki kodları dener misiniz.
Kod:
Option Explicit
Sub Permutation()
    Dim harflersayılar() As String
    Dim Sonuclar() As String
    Dim olasıklar As Long
    Dim i As Long, j As Long
    Dim duzenle As Range
Set duzenle = Range("A1")
olasıklar = 26 * 26 * 9
ReDim harflersayılar(1 To olasıklar, 1 To 3)
ReDim Sonuclar(1 To olasıklar * 3, 1 To 2)
For i = 1 To olasıklar Step olasıklar / 26
    For j = 1 To olasıklar / 26
        harflersayılar(i - 1 + j, 1) = Chr(Int(i / (olasıklar / 26)) + 65)
    Next j
Next i
For i = 1 To olasıklar Step 9
    For j = 1 To 9
        harflersayılar(i - 1 + j, 2) = Chr(Int(i / 9) Mod 26 + 65)
    Next j
Next i
For i = 1 To olasıklar
    harflersayılar(i, 3) = (i - 1) Mod 9 + 1
Next i
For i = 1 To olasıklar
    Sonuclar(i, 1) = harflersayılar(i, 1) & harflersayılar(i, 2) & harflersayılar(i, 3)
Next i
For i = 1 + olasıklar To olasıklar * 2
    Sonuclar(i, 1) = harflersayılar(i - olasıklar, 1) & harflersayılar(i - olasıklar, 3) & harflersayılar(i - olasıklar, 2)
Next i
For i = 1 + olasıklar * 2 To olasıklar * 3
    Sonuclar(i, 1) = harflersayılar(i - olasıklar * 2, 3) & harflersayılar(i - olasıklar * 2, 1) & harflersayılar(i - olasıklar * 2, 2)
Next i
duzenle.EntireColumn.Clear
Set duzenle = duzenle.Resize(rowsize:=UBound(Sonuclar, 1))
duzenle = Sonuclar
End Sub
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
16
En iyi yanıt
0
Puanları
3
Yaş
38
Konum
İzmir
@Ali Kırksekiz,
P(35,3): 39270 sonuç çıkması lazım ama 18252 çıkıyor. a91 veya aaz gibi sonuçlar listeye yansımamış.
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
16
En iyi yanıt
0
Puanları
3
Yaş
38
Konum
İzmir
Dosya çok güzel. Murat Bey'in ellerine sağlık.
Ancak metin girişi bölümüne 35 karakter giriş yapabilir miyiz acaba?
 

Admin

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,105
En iyi yanıt
3
Puanları
113
Konum
İstanbul
Web sitesi
www.excelarsivi.com
Ad Soyad
Excel Arşivi
TextBox'ı seçin Properties penceresinin MaxLength özelliği vardır, yanlış hatırlamıyorsam 20 yazıyor olması lazım, onu 35 yapabilirsiniz.
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
16
En iyi yanıt
0
Puanları
3
Yaş
38
Konum
İzmir
@Admin, Merhaba,

İnanır mısınız 1 saattir arıyorum ama dediğiniz bölümü bulamadım :( Rica etsem degişikliği yapılmamış dosyayı ekleseniz çok makbule geçer.
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
16
En iyi yanıt
0
Puanları
3
Yaş
38
Konum
İzmir
Olur tabi ki iyi geceler diliyorum.

Teşekkürler.
 

Admin

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,105
En iyi yanıt
3
Puanları
113
Konum
İstanbul
Web sitesi
www.excelarsivi.com
Ad Soyad
Excel Arşivi
@chris, resimde görebilirsiniz.
Eğer soldaki Properties penceresi görünmüyor ise, F4 tuşuna basabilir ya da View menüsüden Properties Window'u seçebilirsiniz.

maxlength-min.png
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst Alt