![]() |
Elegante Lösung gesucht: String aus Charset aufbauen
Hallihallo,
irgendwie komme ich momentan auf keine elegenate Lösung, ich bitte um Geistesblitze für folgendes Problem: Ich habe einen Integer (kann nur >= 0 sein), und aus diesem heraus will ich einen String aufbauen, und das aus einem gegebenen Charset.
Code:
Sorry das der Code pseudo ist, da ich die mathematische bzw. elegante Lösung suche, ist die Sprache der Lösung eigl. egal. Außer Brainfuck :wink:
// Pseudo code...
List <Char> Charset = { a, b, c, d, e, f}; int charCount = Charset.length(); function getNext(unsigned int nextID) { // hier irgendwie errechnen.. mit modulo etc pp.. // rauskommen soll z.B.: // bei nextID = 0 -> "a" // bei nextID = 7 -> "ab" // hoffe das ist verständlich genug :gruebel: } |
Re: Elegante Lösung gesucht: String aus Charset aufbauen
Interpretiere die ID einfach als Zahldarstellung deines Strings zur Basis (Mächtigkeit des Charsets). Dann ist das letzte Zeichen Chars[ID mod Len], das vorletzte ist Chars[(ID div Len) mod Len] und so weiter.
|
Re: Elegante Lösung gesucht: String aus Charset aufbauen
Vielen Dank schon mal an Dax :)
Das hat mich schon um einiges weiter gebracht, zusätzlich kann ich diesen Link empfehlen: ![]() Jetzt habe ich allerdings ein kleines Problem beim Mapping des Charsets gegen die Zahl - die Null ist ein Problem.
Code:
Am obigen Beispiel sieht man bei "0 => 0 => a" in Zusammenhang mit "6 => 10 => aa", das 0 nicht einfach auf a und 1 auf b gemappt werden kann..
0 => 0 => a
1 => 1 => b 2 => 2 => c 3 => 3 => d 4 => 4 => e 5 => 5 => f 6 => 10 => aa 7 => 11 => ab 8 => 12 => ac Als mögliche Lösung könnte man die Null einfach weglassen:
Code:
Das funktioniert zwar tadellos, lässt die Null aber als undefinied zurück :(
1 => 1 => a
2 => 2 => b 3 => 3 => c 4 => 4 => d 5 => 5 => e 6 => 6 => f 7 => 11 => aa 8 => 12 => ab 9 => 13 => ac 10 => 14 => ad Bin für jeden Tipp dankbar :) |
Re: Elegante Lösung gesucht: String aus Charset aufbauen
Wie wär es denn mit
Code:
(So einfach etwas weglassen ist wohl nur in der politik erlaubt)
0 => 0 => a
1 => 1 => b 2 => 2 => c 3 => 3 => d 4 => 4 => e 5 => 5 => f 6 => 10 => ba 7 => 11 => bb 8 => 12 => bc Gruß K-H |
Re: Elegante Lösung gesucht: String aus Charset aufbauen
Wie wäre es, wenn du beim Umrechnen 1 addierst, dann beim Zugriff auf dein Charset aber wieder den jeweiligen Index um 1 verminderst?
Code:
Ist nur ein Workaround, dürfte aber das liefern, was du möchtest.
0 => 0 => 0+1 = 1 => 0 => a
1 => 1 => 1+1 = 2 => 1 => b 2 => 2 => 2+1 = 3 => 2 => c 3 => 3 => 3+1 = 4 => 3 => d 4 => 4 => 4+1 = 5 => 4 => e 5 => 5 => 5+1 = 6 => 5 => f 6 => 10 => 10+1 = 11 => 00 => aa 7 => 11 => 11+1 = 12 => 01 => ab 8 => 12 => 12+1 = 13 => 02 => ac |
Re: Elegante Lösung gesucht: String aus Charset aufbauen
Schlechte Idee ;) Die 0 repräsentiert ein neutrales Element (der Addition, also bei uns konzeptionsmässig Stringverkettung), deshalb sollte 0 den leeren String repräsentieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz