вторник, 3 июня 2008 г.

Java Puzzlers

Вот и всё. Прочитал. За полтора года ;)

Странные ощущения остались. Большинство головоломок отлавливаются на этапе набора кода практически любой IDE. А остальные, я думаю, маловероятны после прочтения Effective Java. Зато Java Puzzlers удобно использовать на собеседованиях...

Ждём продолжение. Говорят, Блох над ним работает.

Java Puzzle 95: Just Desserts

В этой головоломке показаны задачи, которые часто приходится решать нам, разработчикам языка Java. Что напечатают приведённые ниже программы?

public class ApplePie {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 100; i++); {
count++;
}
System.out.println(count);
}
}

Эта головоломка по мотивам бага 4157460 напечатает "1".

import java.util.*;
public class BananaBread {
public static void main(String[] args) {
Integer[] array = {3, 1, 4, 1, 5, 9};
Arrays.sort(array, new Comparator() {
public int compare(Integer i1, Integer i2) {
return i1 < i2 ? -1 : (i2 > i1 ? 1 : 0);
}
});
System.out.println(Arrays.toString(array));
}
}

Эта головоломка по мотивам бага 4763901 напечатает "[3, 1, 4, 1, 5, 9]". Хотя, технически, результат неопределён, так как зависит от реализации в конкретной JVM.

public class ChocolateCake {
public static void main(String[] args) {
System.out.println(true?false:true == true?false:true);
}
}

Эта головоломка напечатает "false". При синтаксическом разборе кода компилятор не учитывает пробелы - они никак не влияют на последовательность операторов. Скобки спасут отца русской демократии ;)

Урок этой головоломки, да и всей книги в целом: не кодируй как мой младший брат (Don't code like my brother).

Властелины времени


А вы помните этот мульт? У нас в офисе только один из десяти помнит его. В дедстве смотрел в кинотеатре. Очень тащился...

Тут можно посмотреть финал:

μTorrent уже раскочегарен ;)

Метровая карта

Сегодня с утра случайно сломал магнитную карту напополам. Принёс в кассу с надеждой на восстановление. Там мне выдали новую, прописав в ней данные со сломанной карты. Причём данные они читали не с карты, а прямо в компе, забив туда номер карты. Выглядит так, что метровый проездной содержит только id, а всё вычисление дат и остатка - централизованное.
В Москве тоже сейчас такое вводят. До этого были бумажные карты с магнитной полосой, на которой хранилась и печаталась информация по поездкам.
Интересно, хранится ли история о путешествиях по карте? Ведь я её каждый раз продлеваю, следовательно, легко можно составить отчёт, типа, где и когда был...