Hallo zusammen,
Mir fehlen momentan ein paar Mathematische Denkanstöße die mein Problem beheben würden.
Zur Situation : Ich möchte wenn man in meine Funktion einen bestimmten Wert eingibt einen String in einem bestimmten Format zurückbekommen.
Beispiele :
F(2) = c
F(25) = z
F(27) = ab
F(626) = aab
Sprich dass Programm soll intern dass ABC hochzählen, wenn z erreicht ist entweder ein neues a einfügen, oder wenn dass a vorhanden ist dessen Wert auf b setzten.
Eigentlich würden 2 Stellen schon reichen(ich möchte ein Zellensystem bennen (a1,b1) ect.. Aber wenn will ich dass schon recht dynamisch bewerkstelligen.
Dass was ich bis jetzt habe :
Im Grunde habe ich mir folgendes gedacht. Anzahl an Stellen anhand des Inputs ausrechnen. Die Stellen intern in einer schleife durchgehen. Schauen wie oft der Wert abc*abc^Stelle reinpasst, Char setzen, und der wert abc*abc^Stelle vom momentanen Gesamtwert abziehen und mit der nächsten stelle weiterrechnen. Doch so richtig will das nicht funktionieren^^
So ungefähr nur nicht richtig war mein Ansatz :
Mir fehlen momentan ein paar Mathematische Denkanstöße die mein Problem beheben würden.
Zur Situation : Ich möchte wenn man in meine Funktion einen bestimmten Wert eingibt einen String in einem bestimmten Format zurückbekommen.
Beispiele :
F(2) = c
F(25) = z
F(27) = ab
F(626) = aab
Sprich dass Programm soll intern dass ABC hochzählen, wenn z erreicht ist entweder ein neues a einfügen, oder wenn dass a vorhanden ist dessen Wert auf b setzten.
Eigentlich würden 2 Stellen schon reichen(ich möchte ein Zellensystem bennen (a1,b1) ect.. Aber wenn will ich dass schon recht dynamisch bewerkstelligen.
Dass was ich bis jetzt habe :
VB.NET-Quellcode
- Public Shared Function CreateAsciiLength(ByVal Length As Integer) As String
- 'Nun muss zu erst die absolute Lenge herausgefunden werden
- Dim abc() As Char = {CChar("a"), CChar("b"), CChar("c"), CChar("d"), CChar("e"), CChar("f"), CChar("g"), CChar("h"), CChar("i"), _
- CChar("j"), CChar("k"), CChar("l"), CChar("m"), CChar("n"), CChar("o"), CChar("p"), CChar("q"), CChar("r"), _
- CChar("s"), CChar("t"), CChar("u"), CChar("v"), CChar("w"), CChar("x"), CChar("y"), CChar("z")}
- Dim xAnzChar As Integer
- For i As Integer = 0 To Integer.MaxValue - 1
- If (abc.Length - 1) * (abc.Length - 1) ^ i > Length Then
- xAnzChar = i
- Exit For
- End If
- Next
- 'Nun liegt die Anzahl der maximalen Chars in xAnzChar vor.
- 'Nullbasierend!
- For i As Integer = 0 To Length - 1
- 'Vorgang
- 'Innere schleifen ausrechnen.
- 'Herausfinden wie oft die Innere Iterierung ausgeführt werden sollte
- Dim iLoop As Integer
- For iL As Integer = 0 To xAnzChar
- If i <= (abc.Length - 1) * (abc.Length - 1) ^ iL Then
- iLoop = iL
- Exit For
- End If
- Next
- 'Nun ist die Innere schleife fertig
- 'Die Anzahl entspricht der Länge des zu ermittelnden Stringes
- Dim Ad As String = String.Empty
- For goOut As Integer = iLoop To 0 Step -1
- 'Von links nach rechts gehen.
- 'Wert des höchsten Chars ausrechnen
- Next
- Next
- End Function
Im Grunde habe ich mir folgendes gedacht. Anzahl an Stellen anhand des Inputs ausrechnen. Die Stellen intern in einer schleife durchgehen. Schauen wie oft der Wert abc*abc^Stelle reinpasst, Char setzen, und der wert abc*abc^Stelle vom momentanen Gesamtwert abziehen und mit der nächsten stelle weiterrechnen. Doch so richtig will das nicht funktionieren^^
So ungefähr nur nicht richtig war mein Ansatz :
VB.NET-Quellcode
- Dim Ad As String = String.Empty
- Dim GesamtWert As Integer = Length
- For goOut As Integer = 0 To iLoop
- 'Von links nach rechts gehen.
- 'Wert des höchsten Chars ausrechnen
- GesamtWert -= (abc.Length - 1 * abc.Length - 1 ^ goOut)
- If goOut = 0 Then
- Ad &= abc(i)
- Else
- If GesamtWert < 0 Then
- Ad &= abc(0)
- Else
- Dim c As Integer = GesamtWert \ (abc.Length - 1) * (abc.Length - 1) ^ goOut
- Ad &= abc(c)
- End If
- End If
- Next
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bagplatt“ ()