-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathCapicúa 2.php
More file actions
37 lines (35 loc) · 1.41 KB
/
Capicúa 2.php
File metadata and controls
37 lines (35 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
class Capicua {
private static function isCapicua($num) {
$num_str = str_split((string)$num); //Divido el número en un array para poder recorrerlo
$digits = count($num_str); //Consigo el número de dígitos
$is_capicua = true;
for($i = 0; $i < $digits; $i++) {
if(strcmp($num_str[$i], $num_str[$digits-$i-1])){ //Comparo que la cadena coincida por ambos extremos
$is_capicua = false;
break; //Si los dígitos no coinciden, sale del ciclo
}
}
return $is_capicua;
}
public static function get($num) {
try {
if($num < 9 || $num > 10000) //Valido que el número sea mayor a 1 dígito y menor que 10,000
throw new Exception('La cadena excede los 250 caracteres.');
else {
$iteration = 0;
while(++$iteration) { //Un bucle infinito
$num += (int)strrev((string)$num); //Sumo el número inicial con su inverso
if(Capicua::isCapicua($num)){ //Reviso si la suma es capicúa
echo "{$num} {$iteration}";
break; //Salgo del bucle
}
}
}
}
catch(Exception $e) {
echo 'Error: '.$e->getMessage()."\n"; //Imprimo la excepción
}
}
}
Capicua::get(12);