вторник, 9 октября 2012 г.

Heaps' law

Наткнувшись в Introduction to Information Retrieval на Heaps' law (с ростом объема текста количество уникальных слов растет как степенная функция, для ангоийского языка показатель степени где-то между 0.4 и 0.6) мне жутко захотелось проверить его на реальныйх текстах и сравнить распределение для разных авторов.

пятница, 4 мая 2012 г.

HotSwap

Разработка и отладка приложений с большим объемом кода утомительна длинным циклом сборки. Плюс в зависимости от специфики сервиса, время на поднятие с нуля также может быть значительным.

Иногда спасти ситуацию могут unit тесты. Но для кода связанного с представлением, написание тестов является занятием малоприятным.

В очередной раз мучаясь с отладкой приложения, решил исследовать вопрос изменения кода приложения без его перезапуска (согласитесь, возможность разработки в стиле Ruby on Rails, когда изменение исходного кода сразу же находит отражение в запущенном приложении, прекрасна). Но кое-что есть и в Java. Среди продуктов общего назначения стоит отметить JRebel и HotSwap. JRebel продукт коммерческий, HotSwap открытый. Я решил поиграть со вторым.

пятница, 13 апреля 2012 г.

суббота, 10 декабря 2011 г.

Пропущенные элементы в массиве

Есть очень старая задачка, которую часто задавали и задают на собеседованиях. Задавали её и мне, причем не один раз, задавал я и, тоже не один раз.

Формулировка: есть массив чисел длины 99 (ну или n - 1), в котором находятся числа от 1 до 100 (соответственно до n) в произвольном порядке, все по одному разу, кроме одного. Это одно отсутствующее число и надо найти.

Решается она не очень сложно, и довольно часто у кандидатов получается её решить (обычно с подсказками). Ну вы же знаете решение: считаем сумму элементов в массиве и вычитаем её из суммы элементов от 1 до n (которую можно посчитать по формуле n * (n + 1) / 2 или во время обхода массива). Ну или вместо сложения используем операцию исключающего или (xor) для элементов массива и чисел от 1 до n.

Есть расширенная версия этой задачи: теперь таких чисел два. В принципе, тоже не сложно. Раз чисел два, то нужна дополнительная информация, знания только о разности сумм недостаточно. Ну что же, можно считать произведение или сумму квадратов и решить квадратное уравнение.

Но что делать, если таких чисел m?