public static string Translate(string text)
{
var from = "abcdefghijklmnopqrstuvwxyz";
var to = "jkhinolmrspqvwtuzGbcJafgde";
var ret = new StringBuilder();
foreach (var l in text)
{
int index;
for (index = 0; index <= from.Length; index++)
if (index == from.Length || from[index] == l)
break;
ret.Append(index != from.Length ? to[index] : l);
}
return ret.ToString();
}
Das ergibt ne Laufzeit von len(text) * len(from), eine Map, wie von Schlüsselbein vorgeschlagen, dürfte mit len(text) * log2(len(from)) bei längeren Texten wesentlich effektiver sein.
auf die Schnelle umgesetzt:
Code:
public static string Translate(string text)
{
var fromTo = new Dictionary<char, char>()
{
{'a', 'j'},
{'b', 'k'},
{'c', 'l'},
//usw...
};
var ret = new StringBuilder();
foreach (char l in text)
{
if (fromTo.ContainsKey(l))
{
ret.Append(fromTo[l]);
}
}
return ret.ToString();
}
Das Dictionary kann man sicher auch noch komfortabel serialisieren, dann kann man das auch in einer Textdatei bearbeiten.
Es muss nicht zwinged eine Textdatei sein. Habe das Programm jetzt soweit das es tut was es soll, muss nurnoch überprüfen, ob es auch richtig übersetzt.
Danke dir, ich darf davon morgen 4 Stück machen, da jenachdem welcher Buchstabe kommt, ich in eine andere Tabelle Springen muss in der Wieder andere Buchstaben zugeordnet werden. Hat jemand einen Tipp wie ich das möglichst einfach realisieren kann? Sonst müsste man ja if abfragen machen und dann in die nâchste. tabelle verweisen.
snow, du hast da nicht 100%ig Recht. len(text)*len(from) wäre der Worst-Case. Im Durchschnitt könnte man also (wenn man jetzt mal von Häufigkeitsverteilungen von bestimmten Buchstaben in einer Sprache absieht) von len(text)*len(from)*1/2 ausgehen.
Ob ein Dictionary nur im Avarage-Case die Laufzeit log2(n) hat oder auch Worst-Case, weiß ich gerade nicht.
snow, du hast da nicht 100%ig Recht. len(text)*len(from) wäre der Worst-Case. Im Durchschnitt könnte man also (wenn man jetzt mal von Häufigkeitsverteilungen von bestimmten Buchstaben in einer Sprache absieht) von len(text)*len(from)*1/2 ausgehen.
Ob ein Dictionary nur im Avarage-Case die Laufzeit log2(n) hat oder auch Worst-Case, weiß ich gerade nicht.
Gut, dann nehmen wir die Groß-O-Darstellung, dann habe ich Recht.
Klar ist das Worst-Case, O(len(text)*len(from)) entspricht dann aber auch O(len(text)*len(from)*1/2). Passt schon irgendwie
Ich weiß nicht, wie .NET das Dictionary intern aufbaut, sollten sie einen Binary-Tree verwenden, dürfte O(log2(n)) soweit passen. Sollten sie ne Hashtable verwenden.. nunja, Hashtables sind böse.
Letztendlich wird das ja auch egal sein, ich denke nicht, dass man das während der Ausführung wirklich merkt. Dictionaries sind allerdings cooler als diese doofen for-Schleifen.
So ich hab mal ein bischen rumgebastelt, jedoch komm ich auf keine Lösung dafür, wie ich zwischen den Tabellen springen kann.
Quote:
Initial letter:
If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z
Type..............: i h k j m l o n q p s r u t w v y x a z c b e d g f
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 1 1
OR type...........: O N Q P S R U T W V Y X A Z C B E D G F I H K J M L
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 3 3 3 3 3 3 3 3
Table 1
If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z
Type..............: e d g f i h k j m l o n q p s r u t w v y x a z c b
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1
OR type...........: K J M L O N Q P S R U T W V Y X A Z C B E D G F I H
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 3 3 3 3
Table 2
If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z
Type..............: d c f e h g j i l k n m p o r q t s v u x w z y b a
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1
OR type...........: J I L K N M P O R Q T S V U X W Z Y B A D C F E H G
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3
Table 3
Type..............: f e h g j i l k n m p o r q t s v u x w z y b a d c
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1
OR type...........: L K N M P O R Q T S V U X W Z Y B A D C F E H G J I
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3
Ich muss jenachdem welcher Buchstabe eingegeben wird, in der nächsten Tabelle weitermachen nur weiss ich nicht wie ich Prüfen kann welcher Buchstabe dazugehört, klar if-abfragen aber da tipp ich mir ja nen wolf.
[Buying] Textdatei aus survey DL 08/24/2013 - Trading - 1 Replies Hab hier nen Link mit einer Textdatei, wo ich leider nicht rankomme .
Zahle 5 egold für den Inhalt dieses Dokumentes.
Hier der Link: CleanFiles Download File: Password-bf3.txt
Schickt mir dann einfach einen Traderequest oder nen Treasurelink.
[S]Textdatei [B] e*G 03/19/2013 - elite*gold Trading - 0 Replies Und zwar handelt es sich hier um ein Deckblatt für ein Portfolio.
Habe die PSD, hintergrund ist festgelegt.
Da muss nur der Satz "Meine Gesundheit und eine meiner Infektionskrankheiten, die ich hatte" rein.
Einen einfachen text kann ich auch machen, er sollte natührlich professionell aussehen, Schatten und alle anderen Spielereien sind erwünscht.
Außerdem soll er zum Hintergrund passen und nicht alles überdecken
Meldet euch in Skype für mehr info's
Name aus Textdatei lesen 03/12/2012 - AutoIt - 6 Replies Hey,
ich suche den Script oder den Befehl damit autoit aus einer offen Text datei sich aus einer bestimmt zeile den namen nimmt und woanders eintippt. Da es glaub ich so schwer zu verstehen ist hier mal ein kurzes video zu meinem Problem:
(habe versucht etwas zu finden nur weiß ich ja nicht einmal genau wie man so etwas nennt.. deswegen frag ich mal eben schnell nach, seit mir nicht böse (; )
http://www.youtube.com/watch?v=9_kkdqgNhm4
€.: Mir ist grad eingefallen das bei meinem...