ugrás a tartalomhoz

betű keverés

unreal · 2005. Május. 8. (V), 19.37
Sziasztok!
Abban szeretném a segítségeteket kérni:
Szeretnék csinálni egy betűkeverő PHP scriptet!
pl beitom hogy: autó, kever..... eredmény: tóau
KÖSZ!
 
1

Szia!

tiny · 2005. Május. 8. (V), 19.47
Szia!
Ezt véletlen számokkal tudod megcsinálni. Fogod a karakterlánc első betűjét, s generálsz hozzá egy véletlenszerű helyet a kiadandó karakterláncban. Ugyanezt megcsinálod minddel úgy, hogy ne legyen azonos az előző számok v. számaival. Ezt a rand() függvény segítségével tudod megvalósítani. A végén célszerű egy ellenőrzést végezni, hogy ne az eredeti karakterlácot kapd vissza, aminek kicsi az esélye, ám gyakori használatnál bizonyára elő fog fordulni.
Mr.Tiny
3

Miért?

Tome · 2005. Május. 8. (V), 21.41
Célszerű a feladatokat a legegyszerűbben megoldani, különösen igaz ez a programozásnál. Minél kisebb kód, annál gyorsabb a lefutás!
Lásd bbalint hozzászólását...
4

bonyolultan

bbalint · 2005. Május. 9. (H), 07.49

<?php
  $szöveg = 'bbalint';
  // innentől jön a keverés
  $újszöveg = array();
  for ($i = 0, $strlen = strlen($szöveg); $i < $strlen; ++$i){
      while ( (array_key_exists($j = mt_rand(0, $strlen), $újszöveg)
           || $j == $i)
           && $i < $strlen);
      
      $újszöveg[$j] = $szöveg{$i};
  }
  ksort($újszöveg);
  $szöveg = implode('', $újszöveg);
  // és itt már meg is van kavarva
  print($szöveg);
?>
azoknak, akik nem bíznak az str_shufflé()ban ...

ui: módosítottam rajt', mer' ha az utolsó karakternél tart és már csak az utolsó hely van szabadon, akkor végtelen ciklusba kerül a dolog és az bizony nem jó, mert olyat egyszerűbben is lehet :]

bbalint
8

Aki nem bízik a shuffle-ban...

PiG · 2005. Május. 9. (H), 18.24
... annak pont ez való:
<?php
$szoveg='kisautó';
echo kever($szoveg);
function kever($param){
	$ret='';
	if (is_string($param)) {
			$hossz=strlen($param);
		}
		while ($hossz>0){
			$elem=mt_rand(0,$hossz-1);
			$ret.=$param[$elem];
			$param[$elem]=$param[$hossz-1];
			$hossz--;
		}
	return $ret;
}
?>
A probléma ugyanis a "Visszatevés nélküli mintavétel" klasszikus esete. A példa könnyen átalakítható, hogy ne csak stringekre, hanem bármilyen tömbre működjön, illetve érdemes elgondolkodni a referencia szerinti paraméterátadáson is.

P][G
2

RTFM

bbalint · 2005. Május. 8. (V), 20.49
az str_shuffle() nevű függvény, pont eztet csinálja, amit le írtál.
de, régebbi PHP-val (5.0, illetve 4.3.0 előtti verziók) is mög lehet csinálni a dologot:

<?php
  $szöveg = 'bbalint';
  // itt jön a keverés
  $szöveg = preg_split('//', $szöveg, -1, PREG_SPLIT_NO_EMPTY);
  shuffle($szöveg);
  $szöveg = implode('', $szöveg);
  // itten már meg is van kavarva a $szöveg
  print($szöveg);
?>
sok sikert!

bbalint
5

Ezt nem is tudtam. Kösz,

tiny · 2005. Május. 9. (H), 11.10
Ezt nem is tudtam. Kösz, nekem is segítettél :).
Mr.Tiny
6

énsem

bbalint · 2005. Május. 9. (H), 16.00
pontosan melyik részt nem tudtad? str_shuffle() vagy a preg_split()es darabolós "trükk"?

amit meg énse tudtam, az az, hogy a PHP 4.3.0-as verziójától is elérhető az str_shuffle(); amikor nekem kellt, akkor még csak az ötösbe' volt ...

bbalint
13

str_shuffle. A preg_slipről

tiny · 2005. Május. 9. (H), 21.29
str_shuffle. A preg_slipről olvastam, csak nem ugrott be.
Mr.Tiny
7

Köszi

unreal · 2005. Május. 9. (H), 17.10
(az elözöekhez tudok formot csinálni!)
ami azt illeti egyiket se tudtam!
és hogy lehet azt meg csinálni, hogy egy txt fileból olvassa be az adatokat, és pl vesszővel vagy enterrel elválasztottak a szavak a txtben!
és abbol kiválaszt egyet, és azt rakja be! ?
egyébként mi a különbség a 2 script között?
THX
10

file, count, mt_rand, trim

attlad · 2005. Május. 9. (H), 18.59
Szerintem ezt a négy függvényt nézd meg a PHP kézikönyvben, ha ilyet akarsz.

Attila
9

segítsen már valaki! plíz!

unreal · 2005. Május. 9. (H), 18.36
segítsetek már légyszi!
hogy tudok egy filet használni ezzel? már leirtam hogyí hogy, de leirom még 1szer!
a fileban vesszővel lennének elválasztva a szavak vagy enterrel! hogy tudnám én azt ebben használni?
11

okosan

kgyt · 2005. Május. 9. (H), 19.17
A fenti urak megírták a fél kódodat, nem írnál egy kicsit te is belőle?
„Ma 105. Május 9. Hétfő van.” :-)

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
12

mindent köszönök csak még ezt az egyet PLÍZ!!!

unreal · 2005. Május. 9. (H), 19.25
Légyszi!
én még "béna vagyok"
léccííí!
köszönetem
üdv: 5UN_d@N(3R
14

Megnézted a függvényeket,

tiny · 2005. Május. 9. (H), 21.40
Megnézted a függvényeket, amiket javasoltak?
Elolvastad a hozzászólásokat? A fórum nem arra van, hogy ingyen gyártson egy közösség programokat. Ahhoz, hogy később te is tudj segíteni, neked is tenni kell valamit, nem csak várni, hogy megcsinálják helyetted. Ahol utána tudsz nézni az egész PHP nyelvnek és a függvényeknek, az a http://hu.php.net.
A javasolt függvények:
  • file()
  • trim()
  • explode()
  • mt_rand()
  • count()

Amit legutoljára kérdeztél, az a file függvényre vonatkozik, ha jól értettem. Annál pedig egy $valtozo=file("valami.txt"); kód bőven elég, s minden sora benntvan a $valtozo tömbben.
Mr.Tiny
15

a helyes megoldás

bbalint · 2005. Május. 9. (H), 23.20

<?php
  $file = file('szavak.txt'); // ezzel a file() függvény nyel beolvas tattyúk a szavak.txt filét egy tömbe, ahol minden egyes elem a file egy sorának felel meg [file]
  
  $gondolt_szám = mt_rand(0, count($file) - 1); // ezzel a függvénnyel "gondolunk egy számot" nulla és a sorok száma között [mt_rand, count]
  
  $szó = $file[$gondolt_szám]; // ezzel az értékadással beletesszük a $szó változóba a $gondolt_szám-adik sort
  $szó = trim($szó); // ezzel az újsor karaktert vágjuk le a sor végéről, mert a file() gonosz módon azt is hozzáteszi [trim]
  
  // itten pedig összekeverjük a $szó változó tartalmát, meg ki is írjuk, ha a karjuk
?>
bbalint
16

Köszönet

unreal · 2005. Május. 10. (K), 07.12
Nagyon széápen köszönöm mindenkinek a segítséget!