All pastes #109229 Raw Edit

Shuffle letters

public php v1 · immutable
#109229 ·published 2006-07-31 22:48 UTC
rendered paste body
#! /usr/bin/php<?php/*	Shuffle letters	©2006 Xrogaan <xrogaan at gmail dot com>	License: GPL	Note: this program must be called from the command line.*//*	Cette constante passée a true permet de voir comment le script travaille.	Ca retourne :	* la taille du mot courant	* a quoi ressemble la chaine avant d'être mélangée	* un jeton pour savoir dans quelle partie du script le mot melangé est passé.*/define('DEBUG',false);$ponctuation = ',;:?.=+-_)(|@#"\'!°[]*%/\\';for($i=0;$i<strlen($ponctuation)-1;$i++) { $pa[]=$ponctuation{$i}; }unset($argv[0],$tmp,$i);/*	Si on passe une chaîne entre guillemets (i.e. "ma chaine"), alors il n'y a que deux éléments dans le tableau.	Si ce cas ce présente, on fait en sorte que le tableau $argv soie toujours le même. Que l'on passe la chaine entre guillemets ou pas.*/if (strpos($argv[1],' ')!==false) { $argv=explode(' ',$argv[1]);}/*	On va parser tout les mots donné, lettre par lettre.	* Si la lettre courante n'est pas un caractère de ponctuation et que le mot n'est pas fini, on ajoute la lettre a la variable temporaire.	($tmc) qui sera shufflée en temps voulut.	* Si le mot est fini et qu'il fait moin de 3 caractère, on ajoute $tmp au mot de sortie.	* Si la lettre courante est un caractère de ponctuation ou si le mot est fini et qu'il fait plus de 3 caratère, on shuffle $tmp et on ajoute au mot de sortie.	* Si le caractère courant est de ponctuation et que le mot courant a moin de 3 lettres on ajoute $tmc+le caractère courant au mot de sortie.*/foreach($argv as $k=>$v) {	$len = strlen($v);	$mots[$k] = ''; // mots de sortie. un $argv dont les mots ont été travaillé.	$tmc=''; // temporaire Mot Courant	if (DEBUG===true)		echo $v." [len: ".$len."]\n";		for($i=0;$i<$len;$i++) {				if (!in_array($v{$i},$pa) && $i!=$len-1) {			$tmc.= $v{$i};			continue;		}				if ($i==$len-1 && (strlen($tmc)+1)<=3) {			$mots[$k].=$tmc.$v{$i}.(DEBUG===true?'[2]':'');			$tmc='';			continue;		}				if ((in_array($v{$i},$pa) || $i==$len-1) && (strlen($tmc)+1)>=4) {			$tlen = strlen($tmc)-1;						// Si la lettre courante est en fait un caractère de ponctuation. On récupère la dernière lettre de $tmc pour la mettre dans $last			if (in_array($v{$i},$pa)):				$last = $tmc{$tlen}.$v{$i};				$tmc = substr($tmc,0,$tlen);			else:				$last = $v{$i};			endif;						$first = $tmc{0};			if (DEBUG) echo var_dump($tmc)."\n";			// ceci va créer un mot sous cette forme [première lettre][lettres melangées][dernière lettre]			$mots[$k].= $first.str_shuffle(substr($tmc,1,strlen($tmc)-1)).$last.(DEBUG===true?'[3]':'');			$tmc='';			continue;		}				if (in_array($v{$i},$pa) && strlen($tmc)<=3) {			$mots[$k].= $tmc.$v{$i}.(DEBUG===true?'[3]':'');			$tmc='';			continue;		}		$tmc.= $v{$i};	}	$mots[$k].=$tmc.(DEBUG===true?'[1]':'');}echo implode(' ',$mots),"\n";?>