Foros del Web » Programando para Internet » PHP »

lenguajes formales indice de una palabra

Estas en el tema de lenguajes formales indice de una palabra en el foro de PHP en Foros del Web. Jorge Mendoza [/PHP] //... CLASE FORMALES session_register('alfabeto'); session_register('palabra'); class formales { //_____________ATRIBUTOS__________________ var $alfabeto;// arreglo var $palabra; var $m=0; var $k=0; //_________________________________________ var $nAlfabeto=0; var ...
  #1 (permalink)  
Antiguo 23/05/2005, 23:31
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 6 meses
Puntos: 1
lenguajes formales indice de una palabra

Jorge Mendoza
[/PHP]
//... CLASE FORMALES
session_register('alfabeto');
session_register('palabra');
class formales
{
//_____________ATRIBUTOS__________________
var $alfabeto;// arreglo
var $palabra;
var $m=0;
var $k=0;
//_________________________________________
var $nAlfabeto=0;
var $nPalabra=0;
//________________METODOS____________________
function procesar($edAlfabeto,$edPalabra)
{
if(($edAlfabeto=="")and($edPalabra==""))
return false;
else
{
if($edAlfabeto<>"")
{
$n=strlen($edAlfabeto);
$ultimoCaracter=",";
for ($i=0;$i<$n;$i++)
{
$letra=$edAlfabeto[$i];
if(($letra<>",")and($ultimoCaracter==","))
{
$this->alfabeto[$this->nAlfabeto]=$letra;
$this->nAlfabeto++;
$ultimoCaracter="letra";
}
elseif($letra<>",")
{
$this->nAlfabeto--;
$letraAnterior=$this->alfabeto[$this->nAlfabeto];
$union="$letraAnterior$letra";
$this->alfabeto[$this->nAlfabeto]=$union;
$this->nAlfabeto++;
$ultimoCaracter="letra";
}
else
$ultimoCaracter=",";
}//fin for
}//fin if($edAlfabeto<>"")
if($edPalabra<>"")
{
$n=strlen($edPalabra);
$ultimoCaracter=",";
for ($i=0;$i<$n;$i++)
{
$letra=$edPalabra[$i];
if(($letra<>",")and($ultimoCaracter==","))
{
$this->palabra[$this->nPalabra]=$letra;
$this->nPalabra++;
$ultimoCaracter="letra";
}
elseif($letra<>",")
{
$this->nPalabra--;
$letraAnterior=$this->palabra[$this->nPalabra];
$union="$letraAnterior$letra";
$this->palabra[$this->nPalabra]=$union;
$this->nPalabra++;
$ultimoCaracter="letra";
}
else
$ultimoCaracter=",";
}//fin for
}//elseif($edPalabra<>"")
return true;
}//fin else
}
function posicionEnAlfabeto($letra)
{
$encontro=false;
$i=0;
while ((!$encontro)and($i<$this->nAlfabeto))
{
if($this->alfabeto[$i]==$letra)
$encontro=true;
else
$i++;
}
if ($encontro)
return $i;
else
return -1;
}
function potencia($b,$e)
{
$producto=1;
for ($i=0;$i<$e;$i++)
$producto=$producto*$b;
return $producto;
}
function hallarIndice()
{
$a=$_SESSION['alfabeto'];
$p=$_SESSION['palabra'];
$m=count($a);//longitud del alfabeto
$k=count($p);//longitud de la palabra
$suma1=($this->potencia($m,$k)-1)/($m-1);
$suma2=0;
for($j=0;$j<=$k-1;$j++)
{
$aux=$k-(1+$j);
$pos=$this->posicionEnAlfabeto($p[$j]);
if($pos==-1)
{
$suma2=-1;
$j=$k;
}
else
$suma2=$suma2+($pos*$this->potencia($m,$aux));
}
$this->m=$m;
$this->k=$k;
if($suma2==-1)
return -1;
else
$indice=$suma1+$suma2;
return $indice;
}
}
$n=new formales;
if ($n->procesar($edAlfabeto,$edPalabra))
{
$alfabeto=$n->alfabeto;
$palabra=$n->palabra;
$indice=$n->hallarIndice();
include("interfaz.php");
$a=new interfaz;
$a->verIU($indice,$n->m,$n->k);
}
else// significa que s la primera vez que se entra al programa
{
include("interfaz.php");
$a=new interfaz;
$a->verIU("",0,0);
}

?>

[/PHP]
  #2 (permalink)  
Antiguo 23/05/2005, 23:36
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 6 meses
Puntos: 1
Código PHP:
//_______Class interfaz____________-
<?php
class interfaz
{
    function 
verIU($indice,$m,$k)
    {
            echo 
"
            <HTML>            <BODY                                                         "
;
                        if ((
$_SESSION['alfabeto']=="")or($_SESSION['palabra']==""))//es la primera vez que entra
                        
{
                            echo 
"</p>
                              <form name='form1' method='post' action='formales.php'>
                                        <p align='center'>
                                          <object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0' width='85' height='18'>
                                            <param name='BGCOLOR' value=''>
                                            <param name='movie' value='text1.swf'>
                                            <param name='quality' value='high'>
                                            <embed src='text1.swf' quality='high' pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width='85' height='18' ></embed>
                                          </object><br>                    
                                          <input type='text' name='edAlfabeto'><br>
                                    </p>
                                        <div align='center'>
                                      <object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0' width='76' height='16'>
                                        <param name='BGCOLOR' value=''>
                                        <param name='movie' value='text2.swf'>
                                        <param name='quality' value='high'>
                                        <embed src='text2.swf' quality='high' pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width='76' height='16' ></embed>
                                      </object><br>
                                      <input type='text' name='edPalabra'> <br>
                                     <input name='imageField' type='image' src='aceptar.JPG' width='103' height='24' border='0'>        
                              </div>
                                  </form>"
;
                        }
                        else
                        {
                            if (
$indice==-1)
                            {
                                echo 
"<b><font face='Arial Narrow' size='3' color='#333366'>!!error
                                    , la PALABRA contiene un elemento que no esta en el ALFABETO, osea
                                    la PALABRA no pertenece al DICCIONARIO...!!!</font></b>"
;    
                            }
                            else
                            {
                                echo 
"<b><font face='Arial Narrow' size='3' color='#333366'>Alfabeto: </font></b>";
                                
$alfabeto=$_SESSION['alfabeto'];
                                
$n=count($alfabeto);
                                for(
$i=0;$i<$n;$i++)
                                {
                                    
$aux=$alfabeto[$i];
                                    
$o=$i+1;
                                    if(
$o==$n)
                                        echo 
"<b><font face='Arial Narrow' size='3' color='#FF0000'>$aux</font></b>";
                                    else
                                        echo 
"<b><font face='Arial Narrow' size='3' color='#FF0000'>$aux,</font></b>";
                                }
                                echo 
"<br><br>";
                                echo 
"<b><font face='Arial Narrow' size='3' color='#333366'>Palabra: </font></b>";
                                
$palabra=$_SESSION['palabra'];
                                
$n=count($palabra);
                                for(
$i=0;$i<$n;$i++)
                                {
                                    
$aux=$palabra[$i];
                                    echo 
"<b><font face='Arial Narrow' size='3' color='#FF0000'>$aux</font></b>";
                                }
                                echo 
"<br><br><b><font face='Arial Narrow' size='3' color='#333366'>m (nro de elementos del alfabeto) = <font color='#FF0000'>$m</font></font></b><br>
                                "
;
                                echo 
"<b><font face='Arial Narrow' size='3' color='#333366'>k (longitud de la palabra) = <font color='#FF0000'>$k</font></font></b><br>";
                                echo 
"<br><b><font face='Arial Narrow' size='3' color='#333366'>Indice = <font color='#FF0000'>$indice</font></font></b><br>";
                            }
//fin else
                        
}
                        echo 
"
                         </td>
                        </tr>
                        <tr>
                          <td height='27'>
                         </td>
                        </tr>
                      </table></TD>
                    </TR>
                           <TR>
                      <TD vAlign=top bgColor=#FFFFFF>&nbsp;                        </TD>
                      <TD vAlign=top bgColor=#ffffff>&nbsp;</TD></TR>
                    <TR>
                      <TD vAlign=top bgColor=#ffffff colSpan=2>
                        <P>
p colspan='2'>&nbsp;                      </TD>
                      </TR>
                    </TBODY></TABLE>
                </BODY>
            </HTML>
        "
;
    }
}
?>
  #3 (permalink)  
Antiguo 23/05/2005, 23:38
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 6 meses
Puntos: 1
Código PHP:
<?php 
session_register
('alfabeto');
session_register('palabra');
class 
formales
{
    
//_____________ATRIBUTOS__________________
    
var $alfabeto;// arreglo
    
var $palabra;
    var 
$m=0;
    var 
$k=0;
    
//_________________________________________
    
var $nAlfabeto=0;
    var 
$nPalabra=0;
    
//________________METODOS____________________
    
function procesar($edAlfabeto,$edPalabra)
    {
        if((
$edAlfabeto=="")and($edPalabra==""))
            return 
false;
        else
        {
            if(
$edAlfabeto<>"")
            {
                
$n=strlen($edAlfabeto);
                
$ultimoCaracter=",";
                for (
$i=0;$i<$n;$i++)
                {
                    
$letra=$edAlfabeto[$i];
                    if((
$letra<>",")and($ultimoCaracter==","))
                    {
                        
$this->alfabeto[$this->nAlfabeto]=$letra;
                        
$this->nAlfabeto++;
                        
$ultimoCaracter="letra";
                    }
                    elseif(
$letra<>",")
                    {
                        
$this->nAlfabeto--;
                        
$letraAnterior=$this->alfabeto[$this->nAlfabeto];
                        
$union="$letraAnterior$letra";
                        
$this->alfabeto[$this->nAlfabeto]=$union;
                        
$this->nAlfabeto++;
                        
$ultimoCaracter="letra";
                    }
                    else
                        
$ultimoCaracter=",";
                }
//fin for
            
}//fin if($edAlfabeto<>"")
            
if($edPalabra<>"")
            {
                
$n=strlen($edPalabra);
                
$ultimoCaracter=",";
                for (
$i=0;$i<$n;$i++)
                {
                    
$letra=$edPalabra[$i];
                    if((
$letra<>",")and($ultimoCaracter==","))
                    {
                        
$this->palabra[$this->nPalabra]=$letra;
                        
$this->nPalabra++;
                        
$ultimoCaracter="letra";
                    }
                    elseif(
$letra<>",")
                    {
                        
$this->nPalabra--;
                        
$letraAnterior=$this->palabra[$this->nPalabra];
                        
$union="$letraAnterior$letra";
                        
$this->palabra[$this->nPalabra]=$union;
                        
$this->nPalabra++;
                        
$ultimoCaracter="letra";
                    }
                    else
                        
$ultimoCaracter=",";
                }
//fin for
            
}//elseif($edPalabra<>"")
            
return true;
        }
//fin else
    
}
    function 
posicionEnAlfabeto($letra)
    {
        
$encontro=false;
        
$i=0;
        while ((!
$encontro)and($i<$this->nAlfabeto))
        {
            if(
$this->alfabeto[$i]==$letra)
                
$encontro=true;
            else
                
$i++;
        }
        if (
$encontro)
            return 
$i;
        else
            return -
1;
    }
    function 
potencia($b,$e)
    {
        
$producto=1;
        for (
$i=0;$i<$e;$i++)
            
$producto=$producto*$b;
        return 
$producto;
    }
    function 
hallarIndice()
    {
        
$a=$_SESSION['alfabeto'];
        
$p=$_SESSION['palabra'];
        
$m=count($a);//longitud del alfabeto
        
$k=count($p);//longitud de la palabra
        
$suma1=($this->potencia($m,$k)-1)/($m-1);
        
$suma2=0;
        for(
$j=0;$j<=$k-1;$j++)
        {
            
$aux=$k-(1+$j);
            
$pos=$this->posicionEnAlfabeto($p[$j]);
            if(
$pos==-1)
            {
                
$suma2=-1;
                
$j=$k;
            }
            else
                
$suma2=$suma2+($pos*$this->potencia($m,$aux));
        }
        
$this->m=$m;
        
$this->k=$k;        
        if(
$suma2==-1)
            return -
1;
        else
            
$indice=$suma1+$suma2;
        return 
$indice;
    }
}
$n=new formales;
if (
$n->procesar($edAlfabeto,$edPalabra))
{
    
$alfabeto=$n->alfabeto;
    
$palabra=$n->palabra;
    
$indice=$n->hallarIndice();
    include(
"interfaz.php");
    
$a=new interfaz;
    
$a->verIU($indice,$n->m,$n->k);
}
else
// significa que s la primera vez que se entra al programa
{
    include(
"interfaz.php");
    
$a=new interfaz;
    
$a->verIU("",0,0);
}

?>
  #4 (permalink)  
Antiguo 24/05/2005, 11:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Podrías explicar en que consiste el código que expones .. como se usa .. ejemplos .. etc .. En fin .. no sólo poner el código y que "averigüemos" como usarlo (que podría ser mas o menos intuitivo usarlo .. al no comentar ni un sólo método de la classe .. mmmm)

Un saludo,
  #5 (permalink)  
Antiguo 25/05/2005, 07:41
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 6 meses
Puntos: 1
cadenas

Es el desarrollo de un tema.
Dado un alfabeto ={lo que tu quieras} ejmplo {a,b,c,d,...,z}, existe un diccionario que contiene todas las combinaciones posibles entre los elementos del alfabeto, al tener un diccionario con las combianciones logicamente por ejemplo tu nombre(ejemplo: j,o,r,g,e) esta en el diccionario, o cualquier otra palabra con significado o sin.., con esto digo que toda palabra en el universo tiene un indice, un número, y se puede hallar con el código de arriba, aunque le eh quitado parte del codigo de interfaz ya que no me permitia tantas lineas, http://admeli.coolinc.info/formales.php .

en el alfabeto puedes poner cualquier cosa 0,1 ; a,bd,er
y las palabras tieenen que estar formandas con las letras del alfabeto ejmp
0,1,0 ó a,er,a etc
  #6 (permalink)  
Antiguo 25/05/2005, 08:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ok .. y ejemplo de uso? (recuerda que no todo el mundo tiene el mismo nivel .. pero si tu ejemplo es útil .. podrían usarlo si pones un ejemplo. Digamos que ese es el objetivo de compartir algo por aquí .. que sea "completo": código, descripción y algo de documentación básica).

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:07.