Du bist nicht angemeldet.

copyboy

Krankhafter Individualist

  • »copyboy« ist der Autor dieses Themas

Beiträge: 2 046

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

1

Sonntag, 23. Dezember 2007, 17:48

String mixen

Ja hallo erstmaahl...
Ich weis nicht ob Sie 's schon wissen, ...
Aber ich stehe heute voll auf der Leitung... :(

Ich habe kein Schimmer wie ich einen String "durcheinander rühren" kann...
Beispiel: 123ABCxyz -- *mixen* --> y31C2AxzB

Sorry für diese bescheuerte Frage ;(
Ich hoffe ihr helft mir trotzdem ^^

Gruß, euer kopierjunge
-___-'

PS: Schönes Weihnachten

boxxar

total schiefsymmetrische Trilinearform

Beiträge: 487

  • Private Nachricht senden

2

Sonntag, 23. Dezember 2007, 19:01

Den String in seine Zeichen zerlegen, diese in ein Array oder sonstwas schreiben, und den Knuth-Shuffle implementieren. Danach das ganze wieder zusammensetzen. Alternativ direkt mit dem String den Knuth-Shuffle ausführen.

rootnode

Gargoyle

Beiträge: 261

Aktuelles Projekt: MOSA (C#)

  • Private Nachricht senden

3

Montag, 24. Dezember 2007, 01:42

Frage dazu: Soll das ganze Bijektiv sein? Ich mein...willst du den gemixten String wiederherstellen können?

Notebook: ThinkPad T520, Intel Core i7-2620M, 2.7Ghz, 8Gb Ram, 80Gb SSD + 500Gb HDD, NVIDIA NVS 4200M 1Gb, 15.6" Display
Server #1: AMD Opteron 2,4Ghz, 1GB Ram, 80GB HDD, Debian 6.0
Server #2: AMD64 X2 4200+, 2GB Ram, 250GB HDD, FreeBSD 8.0 Current

Dragoon

Foreneigener Hausdrache

Beiträge: 714

Game Maker Version: 6 registriert

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

4

Montag, 24. Dezember 2007, 12:02

Probiers mal damit (konnte das nicht testen, weil ich den GM noch nicht installiert habe)
string_shuffle(string)

GML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var _str_input,_str,i,_rnd,_ls;
_str_input=argument0;
_ls=ds_list_create();
for(i=0;i<string_length(_str_input);i+=1)
   {
   ds_list_add(_ls,string_copy(_str_input,i+1,1));
   }
_str="";
while(ds_list_size(_ls)>0)
   {
   _rnd=random(ds_list_size(_ls));
   _str+=ds_list_find_value(_ls,_rnd);
   ds_list_delete(_ls,rnd);
   }
ds_list_destroy(_ls);
return _str;
int (*x(*x(int))[5])(int*);
Confused? Yes, it's C!

copyboy

Krankhafter Individualist

  • »copyboy« ist der Autor dieses Themas

Beiträge: 2 046

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

5

Dienstag, 25. Dezember 2007, 14:56

@ boxxar: Ich hab die Methode jetzt zwar nicht benutzt (weil ich zu faul bin xD), ich habs aber verstanden wie's geht, also danke ^^
@ Dragoon: Jo, funktioniert (fast xD - beim letzten "_rnd" fehlt das "_" :D).

Übrigens: Schönes neues Forum :thumbsup: