Autor Tema: PHP. Programacion Funcional ejemplos básicos, rotar array, comprobar palíndromo  (Leído 3762 veces)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Funcion que indica cuantas veces se repite X elemento en un conjunto.
La pongo en dos versiones, Int y String.

la escribo para recibir criticas de los duchos del foro, y aprender de esta programación adaptada a PHP, en este caso. No supe como pasar el String -1 de otra forma que la que veis para recursiva.

Con int, dado la funcion cuantasVeces(numero, cadenaDeNumeros);

Código: [Seleccionar]
<?php

//funcion (n,x)

// iguales(n,y) n!=y 0   n==y 1

function 
iguales(int $numberint $other):int{
return ($number == $other) ? 0;
}

function 
newCadena(string $cadena):string
$arrayCadena str_split($cadena);

foreach($arrayCadena as $key=>$num){ 
$recuperar .= ($key) ? $num ''; }
return $recuperar;
  }

function 
cuantasVeces(int $numberint $cadena): int{

switch($cadena){

case 0:   return 0;

default:

$letter substr($cadena01);
$value cuantasVeces($number, (int)newCadena($cadena));

return $value iguales($number, (int)$letter);
}

}


echo 
cuantasVeces(4,1249434623);

?>



Con String

Código: [Seleccionar]
<?php

//funcion (n,x)

// iguales(n,y) n!=y 0   n==y 1

function 
iguales(string $numberstring $other):int{
return ($number == $other) ? 0;
}

function 
newCadena(string $cadena):string
$arrayCadena str_split($cadena);

foreach($arrayCadena as $key=>$num){ 
$recuperar .= ($key) ? $num ''; }
return $recuperar;
  }

function 
cuantasVeces(string $numberstring $cadena): int{

switch(strlen($cadena)){

case 0:   return 0;

default:
$letter substr($cadena01);
$value cuantasVeces($numbernewCadena($cadena));

return $value iguales($number$letter);
}

}


echo 
cuantasVeces('c','carca');

?>


Espero criticas para mejorar y aprender, saludos compañeros.
« Última modificación: 16 de Abril 2017, 19:50 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:PHP. Programacion Funcional.
« Respuesta #1 en: 08 de Febrero 2017, 13:14 »
Añado otro ejercicio. La función es, rotar N numeros de un array , pasandolos de alante a atrás.
rota(2, array(10,4,3,2,1,2,4,5,6,7,8,8,9)) --> devolverá array(3,2,1,2,4,5,6,7,8,8,9, 10, 4)

Código: [Seleccionar]
function rota(int $cantidad, array $lista):array{

switch($cantidad){
case 0: break;
 
default:
array_push($lista, array_shift($lista));
$cantidad--;
$lista = rota($cantidad, $lista);
}
return $lista;

}

var_dump( rota(2, array(10,4,3,2,1,2,4,5,6,7,8,8,9)) );



Dado un array, la funcion palindromo(array) te indica si es palindromo o no, true false.
Código: [Seleccionar]
function compareFalse(bool $numero, bool $numero2):bool{  return ($numero && $numero2) ? true : false; }

function palindromo(array $lista):bool
{
if(count($lista) > 1 ){
return  compareFalse( ( array_shift($lista) == array_pop($lista) ), palindromo($lista) );
}
return true;
}


var_dump(palindromo(array(3,2,1,1,2,3)) );
var_dump(palindromo(array(4,3,1,3,4) ) );
var_dump( palindromo(array(4,1,3,4) ) );



« Última modificación: 08 de Febrero 2017, 13:56 por Lorenzo31 »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:PHP. Programacion Funcional.
« Respuesta #2 en: 08 de Febrero 2017, 20:17 »
Edito el codigo de rota(n), para hacerlo mas claro y recursivo

Código: [Seleccionar]
function rota( $cantidad, $lista){

switch($cantidad){
case 0: return $lista;

default:
array_push($lista, array_shift($lista));

return rota($cantidad-1, $lista);
}

}

var_dump( rota(2, array(10,4,3,2,1,2,4,5,6,7,8,8,9)) );


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".