Foros del Web » Programando para Internet » PHP »

Juego: "¿Dónde está el error?"

Estas en el tema de Juego: "¿Dónde está el error?" en el foro de PHP en Foros del Web. el programa esta diciendo "si no existen estas constantes entonces....."(exeptuano la 3era linea que dice: "si existe la constante entonces..." y la ultima no funciona ...

  #271 (permalink)  
Antiguo 21/04/2011, 20:14
Avatar de Aaronus23  
Fecha de Ingreso: diciembre-2010
Ubicación: https://home
Mensajes: 81
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Juego: "¿Dónde está el error?"

el programa esta diciendo "si no existen estas constantes entonces....."(exeptuano la 3era linea que dice: "si existe la constante entonces..." y la ultima no funciona porque el echo no va ahi... debe ir asi

Código PHP:
( ! defined('CONSTANTE') && $str 'No definida');
( ! 
defined('CONSTANTE') && define('CONSTANTE'1));
defined('CONSTANTE') && $str 'Ya definida');
( ! 
defined('SORT') && $str='No se definio SORT');
    echo 
$str 
  #272 (permalink)  
Antiguo 21/04/2011, 20:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 2 meses
Puntos: 2237
Respuesta: Juego: "¿Dónde está el error?"

Sourcegeek, estas en lo correcto... casi!!!

Lo vi recientemente en el framework Fuel, lo que hace es simplemente evaluar expresiones, en lo unico que te equivocaste es en la parte de que no sirve para funciones, recuerda que defined() y define() son funciones.

Código PHP:
Ver original
  1. ( ! defined('CONSTANTE') && $str = 'No definida');

Si la constante no esta definida, pasa a ejecutar y evaluar el resultado de la siguiente expresion, asignando un valor a $str. Pero si se definio la constante, entonces ya no ejecuta la siguiente y $str queda con el valor con que se declaro o como variable no definida.

echo, include, exit, require, etc. son directivas que no devuelven resultado, por tanto, no pueden ser evaluadas, aunque uses parentesis, que no son correctos ni requeridos.

Un uso de esto, puede ser para inicializar variables, definir constantes (como en los del ejemplo) e incluso, crear objetos:
Código PHP:
Ver original
  1. $obj = false;
  2.  
  3. // La forma tradicional:
  4. if($obj === false) {
  5.     $obj = new clase();
  6. }
  7.  
  8. // La forma solo con evaluaciones:
  9. ($obj === false && $obj = new clase());

Tu turno!

Aaronus23, el ejercicio era para dejar claro que solo expresiones que se puedan evaluar funcionan, no asi las directivas.

Edito para agregar:
Esta forma no es equivalente de if - then (aunque el funcionamiento es muy similar), porque puedes anidar todas las expresiones que necesites y se dejaran de evaluar en cuanto una de ellas devuelva falso.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 21/04/2011 a las 20:31
  #273 (permalink)  
Antiguo 21/04/2011, 20:36
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 5 meses
Puntos: 322
Respuesta: Juego: "¿Dónde está el error?"

Uf, cada dia se aprende algo nuevo
Tendre que pensar en que poner.. Pero mientras, le cedo mi lugar a quien desee participar

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #274 (permalink)  
Antiguo 21/04/2011, 20:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

En este código:
Código PHP:
Ver original
  1. <?php
  2. 2 ? 8 ? 1 = 1024;
¿Qué debe haber en cada signo de ? para que dé 1024?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #275 (permalink)  
Antiguo 21/04/2011, 21:02
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 5 meses
Puntos: 322
Respuesta: Juego: "¿Dónde está el error?"

Danos una pista
Se valen potencias?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #276 (permalink)  
Antiguo 21/04/2011, 21:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Trata de sacarlo, la idea es indagar. Cada signo, no lleva número, los números ya te los coloqué. ¿Qué debe haber ahí para que dé eso que te indiqué?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #277 (permalink)  
Antiguo 21/04/2011, 21:04
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 5 meses
Puntos: 322
Respuesta: Juego: "¿Dónde está el error?"

Bueno, si se valen potencias:
Código PHP:
2^1024
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #278 (permalink)  
Antiguo 21/04/2011, 21:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

No, indiqué que no se pueden colocar números en los signos de ?. Además, tu código hace esto
Código PHP:
Ver original
  1. <?php
  2. echo 2^7 * 8 * 1; // imprime: 58
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #279 (permalink)  
Antiguo 21/04/2011, 21:28
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Código php:
Ver original
  1. 2 << 8 << 1
  #280 (permalink)  
Antiguo 21/04/2011, 21:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Exacto, para más información http://www.litfuel.net/tutorials/bitwise.htm
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #281 (permalink)  
Antiguo 21/04/2011, 21:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 2 meses
Puntos: 2237
Respuesta: Juego: "¿Dónde está el error?"

Nunca fui bueno con los operadores de bits... pero:

Código PHP:
Ver original
  1. echo 2 << 8 + 1;

Edito: Ups!!! tarde mucho investigando y probando!
http://php.net/manual/es/language.operators.bitwise.php
__________________
- León, Guanajuato
- GV-Foto
  #282 (permalink)  
Antiguo 21/04/2011, 21:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Pues triby te recomiendo que leas el enlace que dejé, te vas a volver un guru como lo enseñan ahí
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #283 (permalink)  
Antiguo 21/04/2011, 22:30
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Código PHP:
Ver original
  1. $frase = 'Cualquier cosa';
  2. if(strlen($frase) < 8) return true;
Sustituir la segunda línea con un método que haga exactamente lo mismo y que además sea más pequeño que el actual.
  #284 (permalink)  
Antiguo 21/04/2011, 23:37
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 5 meses
Puntos: 322
Respuesta: Juego: "¿Dónde está el error?"

Mas pequeño? Intente operador ternario pero no sale
Seguire intentando...
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #285 (permalink)  
Antiguo 22/04/2011, 02:03
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por Sourcegeek Ver Mensaje
Mas pequeño? Intente operador ternario pero no sale
Jeje, sólo el código antes de "?" se comería todos los caracteres.
  #286 (permalink)  
Antiguo 22/04/2011, 04:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Bueno según a mi parecer lo más parecido es
Código PHP:
Ver original
  1. <?php
  2. $frase = 'Cualquier cosa';
  3. return strlen($frase) < 8;
Pero en realidad no hace lo mismo. Ya que de esta forma hasta ahí llega el código si está declarado en un método o una función y te retorna falso si no se cumple la condición, mientras que el otro si llega a la condición y no se cumple continúa con el resto del código.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #287 (permalink)  
Antiguo 22/04/2011, 04:51
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Una pista: no se usa strlen.
  #288 (permalink)  
Antiguo 22/04/2011, 11:01
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Me rompen el corazón ¿en serio está difícil?.
  #289 (permalink)  
Antiguo 22/04/2011, 11:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Bueno el caso mio fue que me fui a dormir, ahora regrese to lagañoso y todavía no sé la respuesta No se me ocurre que función o forma hay para hacer lo que quieres sin usar strlen
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #290 (permalink)  
Antiguo 22/04/2011, 11:28
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 6 meses
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

pues ahora si me supiste joder, como hago pa contar caracteres sin el strlen?? lo unico que se me ocurre para acortarla es hacer esto
Código PHP:
Ver original
  1. $frase = 'Cualquier cosa';
  2. return (strlen($frase) < 8) ;
lo que acorte fue el if nada mas pero es mas corto , aunque no es la respuesta que espera el amigo metacortex, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #291 (permalink)  
Antiguo 22/04/2011, 12:06
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Código PHP:
Ver original
  1. if(!isset($frase{8})) return true;
Vieni qui a baciare la mano del suo padrino.

Que otro lance el próximo tiro.
  #292 (permalink)  
Antiguo 22/04/2011, 12:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Ohhhh, muy bueno, Una forma diferente de hacerlo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #293 (permalink)  
Antiguo 22/04/2011, 12:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Algo sencillo, en lo que pienso otro o postean uno dificil
Código PHP:
Ver original
  1. <?php
  2. $a = 'foo';
  3. $b =& $a;
  4. echo "$a - $b<br />";
  5. $b = 'bar';
  6. echo "$a - $b<br />";
  7. $a = 'candy';
  8. echo "$a - $b<br />";
Sin tocar las primeras dos líneas del código, ¿como lograr que $a almacene otro valor y $b almacene otro valor?.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #294 (permalink)  
Antiguo 22/04/2011, 12:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 9 meses
Puntos: 845
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por metacortex Ver Mensaje
Código PHP:
Ver original
  1. if(!isset($frase{8})) return true;
Vieni qui a baciare la mano del suo padrino.

Que otro lance el próximo tiro.
Siendo des-prolijo se puede hacer mas corto todavía, con un disparate como este:

Código PHP:
Ver original
  1. if(!@$frase[7]) return true;

PD: el indice no debería ser 7 ?
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 22/04/2011 a las 12:45
  #295 (permalink)  
Antiguo 22/04/2011, 12:56
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 4 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por masterpuppet Ver Mensaje
Siendo des-prolijo se puede hacer mas corto todavía, con un disparate como este:

Código PHP:
Ver original
  1. if(!@$frase[7]) return true;
Nunca se deja de aprender aquí. Muy bueno.


Cita:
Iniciado por masterpuppet Ver Mensaje
PD: el indice no debería ser 7 ?
Al principio coloqué 7, pero luego de echarlo a andar resulta que es 8.

Código PHP:
Ver original
  1. <?php
  2. $frase = 'aaaabbbb';
  3. if(!isset($frase{8})) echo 'hola';
  4. ?>
  #296 (permalink)  
Antiguo 22/04/2011, 13:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

En lo que contestan el caso anterior, traten también este, cuando hacemos:
Código PHP:
Ver original
  1. <?php
  2. $a = foo;
  3. $b =& $a;
  4. echo "$a - $b<br />";
  5. $c = $a;
  6. $c = 'bar';
  7. echo "$a - $b<br />";
No se modifica $a ni $b, pero si hacemos:
Código PHP:
Ver original
  1. <?php
  2. $a = array('foo');
  3. $b =& $a[0];
  4. print_r($a) . ' - ' . print_r($b);
  5. echo '<br />';
  6. $c = $a;
  7. $c[0] = 'bar';
  8. print_r($a) . ' - ' . print_r($b);
  9. echo '<br />';
Se modican ambos ¿por qué si $c, que no tiene referencia hacia $a o $b, puede modificar el valor de las referencias?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #297 (permalink)  
Antiguo 22/04/2011, 13:31
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 6 meses
Puntos: 461
Respuesta: Juego: "¿Dónde está el error?"

la respuesta al primero es con un unset a la variable $a,
Código PHP:
Ver original
  1. $a = 'foo';
  2. $b =& $a;
  3. echo "$a - $b<br />";
  4. $b = 'bar';
  5. echo "$a - $b<br />";
  6. $a = 'candy';
  7. echo "$a - $b<br />";
  8. unset($a);
  9. $a = "diferente";
  10. echo "$a - $b<br />";
aca la salida
Cita:
foo - foo
bar - bar
candy - candy
diferente- candy
el ultimo si lo dejo voy de salida, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #298 (permalink)  
Antiguo 22/04/2011, 20:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Ehhh, tiene un poco de lógica el porque sucede, ¿no lo han podido sacar?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #299 (permalink)  
Antiguo 23/04/2011, 11:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Bueno voy a dar un poco más de tiempito, si no contestan, les doy la respuesta
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #300 (permalink)  
Antiguo 23/04/2011, 14:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Bueno, bueno la razón por la que
Código PHP:
Ver original
  1. <?php
  2. $a = array('foo');
  3. $b =& $a[0];
  4. print_r($a) . ' - ' . print_r($b);
  5. echo '<br />';
  6. $c = $a;
  7. $c[0] = 'bar';
  8. print_r($a) . ' - ' . print_r($b);
  9. echo '<br />';
$c puede modificar a las referencia es que los array guardan las referencia.

Explicado mejor: En referencias "comunes" como indicar
Código PHP:
Ver original
  1. $a = 'foo';
  2. $b =& $a;
las referencias no persisten, solo son asignadas a las variables que van a estar mirando el mismo punto.

Pero cuando se hace referencia a un valor en el array
Código PHP:
Ver original
  1. $a = array('foo');
  2. $b =& $a[0];
Cuando voy a asignar a otra variable
Código PHP:
Ver original
  1. $c = $a;
estoy llevando todo lo que contenga el array y con ello la referencia. Por eso, si yo hago un cambio a ese valor en específico que tiene la referencia
Código PHP:
Ver original
  1. $c[0] = 'bar';
Se modifica la referencia, porque los array mantienen la referencia (tienen persistencia), es como decir que los array son portables con todos los elementos que tienen en su interior.

Si hubiera tomado la referencia directamente
Código PHP:
Ver original
  1. $c = $a[0];
  2. $c = 'bar';
No se modifica la referencia porque la estoy declarando como "comunmente" se llamaría, en forma directa, no con un contenedor como lo haría el array.

Dejo a otro que haga el reto
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: a-por-la-vecina-de-meta, juegos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 40 personas




La zona horaria es GMT -6. Ahora son las 16:58.