Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 07 de Febrero 2017, 16:01
-
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);
<?php
//funcion (n,x)
// iguales(n,y) n!=y 0 n==y 1
function iguales(int $number, int $other):int{
return ($number == $other) ? 1 : 0;
}
function newCadena(string $cadena):string{
$arrayCadena = str_split($cadena);
foreach($arrayCadena as $key=>$num){
$recuperar .= ($key) ? $num : ''; }
return $recuperar;
}
function cuantasVeces(int $number, int $cadena): int{
switch($cadena){
case 0: return 0;
default:
$letter = substr($cadena, 0, 1);
$value = cuantasVeces($number, (int)newCadena($cadena));
return $value + iguales($number, (int)$letter);
}
}
echo cuantasVeces(4,1249434623);
?>
Con String
<?php
//funcion (n,x)
// iguales(n,y) n!=y 0 n==y 1
function iguales(string $number, string $other):int{
return ($number == $other) ? 1 : 0;
}
function newCadena(string $cadena):string{
$arrayCadena = str_split($cadena);
foreach($arrayCadena as $key=>$num){
$recuperar .= ($key) ? $num : ''; }
return $recuperar;
}
function cuantasVeces(string $number, string $cadena): int{
switch(strlen($cadena)){
case 0: return 0;
default:
$letter = substr($cadena, 0, 1);
$value = cuantasVeces($number, newCadena($cadena));
return $value + iguales($number, $letter);
}
}
echo cuantasVeces('c','carca');
?>
Espero criticas para mejorar y aprender, saludos compañeros.
-
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)
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.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) ) );
-
Edito el codigo de rota(n), para hacerlo mas claro y recursivo
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)) );