Otros > Los Retos PHPeros

Reto #2 - Operaciones matemáticas y estructuras de control

(1/4) > >>

CarlosRdrz:
Hola,

Vamos a suponer que tenemos un archivo PHP en un servidor web, lo vamos a llamar: "reto2.php".
Me gustaría que intentarais averiguar cual sera el resultado en pantalla al entrar a ese archivo de la siguiente forma:
http://www.pagina.com/reto2.php?valor=TRUE

La idea, aunque parece obvia, es que lo intenteis sacar leyendo el código, y no ejecutandolo.
Antes de que alguien pregunte, el código funciona perfectamente, no contiene errores y por supuesto tiene solución.

Aseguraos de introducir la respuesta en un QUOTE y con la letra de color BLANCA, para evitar que el resto de los compañeros vean vuestra solución antes de tiempo.

Aquí tenéis el código:

<?php

$num = (!$_GET[&#39;valor&#39;]) ? -42 : -47;

if($num % 3 == 0) $num -= 3;
else $num += 8;

for($i=0;$i<abs($num);$i++) {
while(TRUE) {
$num -= -2;
break;
}
}

echo $num;

?>


Algunos consejos:
- Usad papel y bolígrafo.
- Cuidado con los signos en las restas y las sumas, y en la solucion.
- Mirad con cuidado ambos bucles.

Pista: http://www.phperos.net/foro/index.php/topic,4202.msg27351.html#msg27351
Solución: http://www.phperos.net/foro/index.php/topic,4202.msg27417.html#msg27417

GANADOR: Tope

Pronto mas retos,
Saludos

westwest:

--- Citar ---107
--- Fin de la cita ---

No estoy seguro...

CarlosRdrz:
No, no es correcto, lo siento.

Cambié la dificultad a media.

Saludos

westwest:

--- Citar ---43????
--- Fin de la cita ---

Pues si es dificilillo :S

CarlosRdrz:
Tampoco es correcto, sigue intentándolo :)
Me alegra que sea un poco complicado, si fuese fácil entonces no supondría ningún reto, aunque la verdad tampoco es de lo más difícil, solo debes preocuparte de que valor tiene la variable que buscas antes y después del bucle.

Os dejo además la primera pista del reto:

--- Citar ---En el bucle for intervienen dos variables: $i y $num, y contiene además un bucle while.
El bucle while es solo un "truco visual", en realidad no importa que ese bucle esté ahí o no, puesto que SIEMPRE se va a ejecutar una y solo una vez el código de su interior.
Sabemos que $num es negativa, y que en cada iteraccion del bucle a $i se le suma 1 unidad y a $num se le SUMAN (- * - = +) 2 unidades, y por lo tanto, su valor absoluto decae en 2 unidades.
Además, tambien sabemos que la condición para que el bucle continúe es: $i < abs($num), que sería equivalente a esta expresion: $i > $num.
Por lo tanto, el resultado debe estar entre el valor inicial de $i (0, lo definimos al iniciar el bucle for) y el valor inicial de $num, así que respuestas mayores de 0 y menores de -47 quedan eliminadas.
--- Fin de la cita ---

A ver si se anima mas gente, que un poco de ejercicio mental le viene bien a todo el mundo!
Prometo que el siguiente reto será mas enfocado a la programación de una solución y no tanto a cálculos matemáticos :)

Saludos!

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa