Sep. 11th, 2015

avva: (Default)
The Political Bias Test

Довольно любопытный тест - правда, он почти целиком об американской политике и экономике. Сначала вы выбираете свои политические предпочтения, а потом отвечаете на 18 довольно сложных вопросов (вопросы с политической подоплекой, но при этом такие, где есть согласие экспертов). Тест говорит вам количество правильных ответов, но кроме того стремится измерить вашу предвзятость: насколько ваши ошибочные ответы скошены в сторону ваших же политических убеждений.

У меня вышло всего 12 правильных ответов из 18, но тест при этом утверждает, что это хороший результат. Политической предвзятости в этих шести неправильных ответах тест не обнаружил.
avva: (Default)
Джеймс Хэг, отличный кстати блоггер на программистские темы, написал любопытную запись

Computer Science Courses that Don't Exist, But Should

Он предлагает (шутливо, но за шуткой скрывается серьезная мысль) ввести следующие полезные предметы на факультете компьютерных наук:

"CSCI 2100: Unlearning Object-Oriented Programming"
"CSCI 3300: Classical Software Studies"
"CSCI 4020: Writing Fast Code in Slow Languages"
"CSCI 2170: User Experience of Command Line Tools"
"PSYC 4410: Obsessions of the Programmer Mind"

Подробное описание см. по ссылке. Мне больше всех первый предмет понравился, конечно. Но и третий тоже хороший.

Хочу добавить свои предложения к этому списку (и вы тоже добавляйте, если есть идеи):

1. "Как быстро начать работать с незнакомым кодом". Изучение большого массива незнакомого кода, быстрое построение ментальной модели, проверка своего понимания на прочность. Вместо экзамена - практическое задание: выбрать и починить имеющийся баг - включая весь процесс до интеграции в главную ветку - в одном из трех проектов на выбор: OpenOffice, Mozilla Firefox, Linux kernel.

2. "Как разучиться оптимизировать". Как быстрее добиться цели с помощью более простого кода. Развитие интуитивной оценки "насколько это быстро". Культура benchmarks и microbenchmarks. Что такое overengineering, на конкретных примерах, и как его избегать.

3. "Как писать медленный код на быстрых языках". Как незаметно для себя написать квадратичный код. Чем может заниматься такое долгое время программа, написанная на C++ или Java. Как добиться, по сути дела, сериализации на первый взгляд многопоточного кода.

4. "Если есть сомнения, используй хэш-таблицу". Почему никакие структуры данных не нужны, нужно просто всегда использовать хэш-таблицу.
avva: (Default)
Можно ли поставить три точки на плоскости так, чтобы все расстояния между ними были нечетными целыми числами?

Да. Это тривиально, можно просто поставить их в вершины равностороннего треугольника с длиной стороны 1.

А как насчет четыре точки на плоскости, и все расстояния между ними нечетные числа?

А вот тут оказывается, что это невозможно. Есть красивое простое доказательство того, что это невозможно, причем оно пользуется довольно неожиданно аппаратом линейной алгебры. Я помещу его ниже под катом для всех, кому интересно.

Почему нельзя поставить четыре точки на плоскости с нечетными попарными расстояниями )

Если вам понравилось это доказательство, возможно, стоит посмотреть на статью, где это впервые было доказано:

Are There n+2 Points in E^n with Odd Integral Distances? (Graham, Rothschild, Straus, 1974)

Там с помощью чуть более тщательного анализа доказывается следующий удивительный факт: не только 4 точки на плоскости, но и 5 точек в пространстве невозможно расположить с попарными нечетными расстояниями, и вообще в n-мерном эвклидовом пространстве можно расположить так n+2 точки тогда и только тогда, когда n при делении на 16 дает остаток 14. То есть наименьший пример такого - это 16 точек в 14-мерном пространстве, и в статье дается конкретное построение этих 16 точек!

July 2025

S M T W T F S
  12345
67 8910 1112
1314 1516 171819
20 212223242526
27 28293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 30th, 2025 08:52 pm
Powered by Dreamwidth Studios