Skip to content

Commit 9373737

Browse files
authored
Merge pull request mouredev#7644 from adrs1166ma/main
#4 - PHP
2 parents 29cdad3 + e8ecdf7 commit 9373737

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
/*
2+
* EJERCICIO:
3+
* Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
4+
* en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
5+
* - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
6+
* conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
10+
* para descubrir si son:
11+
* - Palíndromos
12+
* - Anagramas
13+
* - Isogramas
14+
*/
15+
16+
<?php
17+
18+
/*
19+
* OPERACIONES
20+
*/
21+
22+
// 1. Declaración de una cadena
23+
$cadena = "Hola Mundo";
24+
25+
// 2. Acceso a caracteres específicos
26+
echo "2. Acceso a caracteres:<br>";
27+
echo " El primer carácter es: " . $cadena[0] . "<br>"; // 'H'
28+
echo " El cuarto carácter es: " . $cadena[3] . "<br>"; // 'a'
29+
echo '<br>';
30+
31+
// 3. Subcadenas (substr)
32+
echo "3. Subcadenas:<br>";
33+
echo " Subcadena desde el índice 5: " . substr($cadena, 5) . "<br>"; // "Mundo"
34+
echo " Subcadena de longitud 3 desde el índice 5: " . substr($cadena, 5, 3) . "<br>"; // "Mun"
35+
echo '<br>';
36+
37+
// 4. Longitud de la cadena (strlen)
38+
echo "4. Longitud:<br>";
39+
echo " La longitud de '$cadena' es: " . strlen($cadena) . "<br>";
40+
echo '<br>';
41+
42+
// 5. Concatenación (operador .)
43+
echo "5. Concatenación:<br>";
44+
$otraCadena = " desde PHP";
45+
$concatenada = $cadena . $otraCadena;
46+
echo " Cadena concatenada: $concatenada<br>";
47+
echo '<br>';
48+
49+
// 6. Repetición de cadenas (str_repeat)
50+
echo "6. Repetición:<br>";
51+
$repetida = str_repeat($cadena, 2);
52+
echo " Repetir '$cadena' 2 veces: $repetida<br>";
53+
echo '<br>';
54+
55+
// 7. Recorrer cada carácter (str_split + bucle)
56+
echo "7. Recorrido de la cadena carácter a carácter:<br>";
57+
$arrayCaracteres = str_split($cadena);
58+
foreach ($arrayCaracteres as $char) {
59+
echo " $char<br>";
60+
}
61+
echo '<br>';
62+
63+
// 8. Conversión a mayúsculas y minúsculas (strtoupper, strtolower)
64+
echo "8. Cambios de mayúsculas/minúsculas:<br>";
65+
echo " En mayúsculas: " . strtoupper($cadena) . "<br>"; // "HOLA MUNDO"
66+
echo " En minúsculas: " . strtolower($cadena) . "<br>"; // "hola mundo"
67+
echo '<br>';
68+
69+
// 9. Reemplazo de subcadenas (str_replace)
70+
echo "9. Reemplazo:<br>";
71+
$reemplazada = str_replace("Mundo", "ChatGPT", $cadena);
72+
echo " Reemplazar 'Mundo' por 'ChatGPT': $reemplazada<br>";
73+
echo '<br>';
74+
75+
// 10. División de cadenas (explode)
76+
echo "10. División (explode):<br>";
77+
$partes = explode(" ", $cadena); // ["Hola", "Mundo"]
78+
echo " Después de explode(' ', '$cadena'): <br>";
79+
print_r($partes);
80+
echo '<br>';
81+
82+
// 11. Unión de elementos de un array en una cadena (implode)
83+
echo "11. Unión (implode):<br>";
84+
$unida = implode("-", $partes); // "Hola-Mundo"
85+
echo " Unir con '-': $unida<br>";
86+
echo '<br>';
87+
88+
// 12. Interpolación de variables
89+
echo "12. Interpolación:<br>";
90+
$nombre = "Carlos";
91+
echo " Usando comillas dobles, se puede interpolar: \"Hola, $nombre\"<br>";
92+
echo '<br>';
93+
94+
// 13. Verificación de la existencia de subcadena (strpos o str_contains en PHP8+)
95+
echo "13. Verificación de subcadena:<br>";
96+
if (strpos($cadena, "Mundo") !== false) {
97+
echo " 'Mundo' se encuentra dentro de '$cadena'.<br>";
98+
} else {
99+
echo " 'Mundo' NO se encuentra dentro de '$cadena'.<br>";
100+
}
101+
echo '<br>';
102+
103+
/*
104+
* 🔥 PROGRAMA PARA PALÍNDROMOS, ANAGRAMAS E ISOGRAMAS
105+
*
106+
* Este programa analiza dos palabras y realiza comprobaciones
107+
* para descubrir si son:
108+
* - Palíndromos
109+
* - Anagramas
110+
* - Isogramas
111+
*/
112+
113+
// Puedes cambiar estas dos palabras para hacer pruebas.
114+
$palabra1 = "Murcielago";
115+
$palabra2 = "Guacamole";
116+
117+
/**
118+
* isPalindrome
119+
* Comprueba si una palabra es palíndroma (se lee igual al derecho y al revés).
120+
*/
121+
function isPalindrome($word) {
122+
// Convertimos a minúsculas y quitamos espacios en blanco
123+
$procesada = strtolower(preg_replace("/\s+/", "", $word));
124+
// Comparamos con su inversa
125+
return $procesada === strrev($procesada);
126+
}
127+
128+
/**
129+
* isAnagram
130+
* Comprueba si dos palabras son anagramas (contienen las mismas letras en distinto orden).
131+
*/
132+
function isAnagram($word1, $word2) {
133+
// Convertimos a minúsculas y quitamos espacios
134+
$procesada1 = strtolower(preg_replace("/\s+/", "", $word1));
135+
$procesada2 = strtolower(preg_replace("/\s+/", "", $word2));
136+
137+
// Creamos arrays de caracteres y los ordenamos
138+
$array1 = str_split($procesada1);
139+
sort($array1);
140+
$array2 = str_split($procesada2);
141+
sort($array2);
142+
143+
// Comparamos el resultado
144+
return implode("", $array1) === implode("", $array2);
145+
}
146+
147+
/**
148+
* isIsogram
149+
* Comprueba si una palabra es isograma (no repite ninguna letra).
150+
*/
151+
function isIsogram($word) {
152+
// Convertimos a minúsculas y quitamos espacios
153+
$procesada = strtolower(preg_replace("/\s+/", "", $word));
154+
// Dividimos en caracteres
155+
$letras = str_split($procesada);
156+
// Si el número de letras es el mismo que el número de letras únicas, es isograma
157+
return count($letras) === count(array_unique($letras));
158+
}
159+
160+
echo "-------------------------------------<br>";
161+
echo " COMPROBACIONES ESPECIALES<br>";
162+
echo "<br>";
163+
echo "Palabra 1: $palabra1<br>";
164+
echo "Palabra 2: $palabra2<br><br>";
165+
166+
// Palíndromos
167+
echo "¿Palabra 1 es palíndromo? " . (isPalindrome($palabra1) ? "Sí<br>" : "No<br>");
168+
echo "¿Palabra 2 es palíndromo? " . (isPalindrome($palabra2) ? "Sí<br>" : "No<br>");
169+
170+
// Anagramas
171+
echo "¿Son anagramas? " . (isAnagram($palabra1, $palabra2) ? "Sí<br>" : "No<br>");
172+
173+
// Isogramas
174+
echo "¿Palabra 1 es isograma? " . (isIsogram($palabra1) ? "Sí<br>" : "No<br>");
175+
echo "¿Palabra 2 es isograma? " . (isIsogram($palabra2) ? "Sí<br>" : "No<br>");
176+
177+
?>

0 commit comments

Comments
 (0)