Puzzle, sumando y restando

Vamos a echar uno rápido:

public class SumarRestar {

	public static void main(String[] args) {

		int i = 0;

		i = --i-i+++i---i+++i-i--;

		System.out.println(i);

	}

}

Quién me dice qué saldrá por pantalla?

Puzzles en Java

A raíz de mi irónica entrada sobre PHP el jrande de Diego me recomendó ver Advanced Topics in Programming Languages: Java Puzzlers, un ameno tech talk presentado por Joshua Bloch (os debería sonar del JavaDoc) y William Pugh.

Me gustó Histogram Mystery (43min 40s), así que he preparado una versión simplificada y castellanizada. Dos cervezas para el primero que diga cuál es el resultado y además lo justifique (sin haber visto el vídeo, claro). Y cuidado con las posibles respuestas… por aquello de la rima fácil.

public class AbsolutVodkaPuzzle {
	public static void main(String[] args) {
		String frase = "Al anochecer llamaron al celular";
		String [] palabras = frase.split(" ");
		int i = 0;
		for (String palabra1 : palabras) {
			for (String palabra2 : palabras) {
				String dosPalabras = palabra1 + palabra2;
				int valorAbsolutoHash = Math.abs(dosPalabras.hashCode());
				if (valorAbsolutoHash >= 0) {
					i++;
				}
			}
		}
		System.out.println('1' + i);
	}
}

ExtraLap™: Josh Bloch es autor de Effective Java y coautor de Java Puzzlers y Java Concurrency in Practice (de este último todavía no he podido disfrutar). Y además es una de las personas que consigue que [ames|odies] Java.

005_crisis

Programming (aka scripting/writing) PHP is so funny you never know what is the next thing that will happen when you compare two variables or simply try to increment an integer.

You can complain about its design (OOP), or its functions’ names or whatever you want, but you know how cool and funny is to program in PHP. It should be a must within any programming 101 course ;-).

Here my compilation of PHP funniest things:

printf("Integers and Strings\n");
echo "----------------\n";
printf("%s\n", ('0' == 0) ? 'true' : 'false');
printf("%s\n", ('0' === 0) ? 'true' : 'false');
printf("%s\n", ('string' == 0) ? 'true' : 'false');
printf("%s\n", ('string' === 0) ? 'true' : 'false');
printf("%s\n", ('string' == 1) ? 'true' : 'false');
printf("%s\n", ('string' === 1) ? 'true' : 'false');
printf("%s\n", ('0000e12345' == '0e12345') ? 'true' : 'false');
printf("%s\n", ((string) '0123' == (string) '123') ? 'true' : 'false');
printf("%s\n", ('007' == '7') ? 'true' : 'false');
printf("%s\n", ('Bond' == 'Raul') ? 'true' : 'false');
$i = null;
echo (++$i) . "\n";
echo ($i+=1) . "\n";
$i = null;
echo (--$i) . "\n";
echo ($i-=1) . "\n";

printf("\nBitwise Operators\n");
echo "----------------\n";
printf("%s\n", (~0 & 0x20) ? 'true' : 'false');
printf("%s\n", (~'0' & 0x20) ? 'true' : 'false');
echo (9 & 8) . "\n";
printf("%s\n", (9 & 8 == 8) ? 'true' : 'false');
echo (8 & 8) . "\n";
printf("%s\n", (8 & 8 == 8) ? 'true' : 'false');

echo "\nIEEE 754 friends et al\n";
echo "----------------\n";
echo (7 % 2.4) . "\n";
printf("%s\n", -1 % 7);
printf("%s\n", 3333333333 % 3);
printf("%s\n", 2863311530 % 25);
printf("%s\n", 2863311530 % 256);

printf("\nOther comparisons\n");
echo "----------------\n";
printf("%s\n", ($a = 0 or $a = 'string') ? $a : $a);
printf("%s\n", ($a = 0 || $a = 'string') ? $a : $a);
printf("%s\n", (array() == false) ? 'true' : 'false');
printf("%s\n", (array() === false) ? 'true' : 'false');

It should produce 29 results. It’s said that one guy once was able to predict (Yeah! I meant to predict) the exact output for every single one. PHP is so lovely.

Could you say what is the exact output for each and everyone of them?

Programa con Google es el nuevo blog en castellano para los desarrolladores que utilizan las herramientas de Google en el que se informará de las últimas novedades, eventos y noticias relacionadas con La Compañía ;-). Además intentarán responder al mayor número de dudas y preguntas que se planteen.

Si desarrollas con herramientas de Google y quieres compartir tus conocimientos, puedes ganar una camiseta con las letritas lego que tan de moda están. Para ello sólo tienes que enviar un correo a programacongoogle@google.com con tu aportación. A esa misma dirección puedes enviar tus preguntas, dudas y sugerencias.

Mi enhorabuena al equipo de Google España por esta iniciativa. Ánimo Clara!



About Raúl

Raúl Ochoa, a spaniard working for Tuenti in Madrid, Spain. More about me.

Subscribe to the feed

If you want to receive a notification when I update the website, you only have to add the feed to your reader, or submit your email address and I'll let you know.

Categories