Посетителите на блога: Кой с какъв дисплей е?

Не, ние не знаем къде работите… Не знаем и номера на гащите ви… И няма да ги публикуваме! Но знаем в каква разделителна способност сте разглеждали блога през последните 5 години…

Спор няма – най-популярната разделителна способност е 1024 х 768 пиксела. Но ако в началото на 2006 г. повече от половината посетители са били с тази резолюция, в края на 2010 г. броят им пада двойно…

Широкоекранните монитори явно набират скорост – броят им се е увеличил 10-кратно за последните 5 години. Днес посетителите с широки екрани са се изравнили с тези, които имат екран в отношение 4:3. Моето лично мнение е, че за домашен компютър, на който се гледат предимно филми, най-добре е да имате широк екран, но пък тесният определено е по-подходящ за четене на сорс код, например.

Моята прогноза за 2015 г.: 75% от посещенията са на широкоекранни монитори, 10% са в съотношение 3:4, останалите са разни нестандартни резолюции от устройствата, които ще спомена по-долу.

За финал – ако преди 5 години ви е било достатъчно да знаете, че един сайт работи в 800х600, 1024х768 и 1280х1024, днес нещата са много по-различни. Има стотици разделителни способности; хора, браузващи на 50″ плазмени телевизори и такива, които отварят сайта от мобилния си телефон. Има настолни компютри, лаптопи, ноутбуци, нетбуци, нетпади, айпади, айподи, айфони и какво ли още не… Накратко – сайтът ви трябва да работи в практически произволен размер на прозореца. Тежко ви, уеб-програмисти и дизайнери!

Минимален брой пресичания

Никола, мой колега и голям приятел от Пловдив ми написа една задача, която просто нямаше как да не приема като лично предизвикателство… Само описание на алгоритми не бях вкарвал в блога, ама ето че и за това дойде момента…

Задача: Група програмисти се събират и решават да се напият възможно най-бързо. Как да свърши наздравицата най-бързо, като се „чукнат“ всеки с всеки от присъстващите, със следните уточнения:
– всички порции наздравици се извършват едновременно;
– масата е окръжност, а феновете са точки по нея;
– наздравицата е отсечка между две точки, като по същото време не може да има друга такава отсечка, която да я пресича: няма преплитане на ръце;
– броя на точките (фенове) е n.

Всъщност, това е сериозен проблем, примерно при дизайн на платки, когато без късо съединение (нежелано пресичане) трябва да се определят броя нива на платката. Важно е да споменем, че един програмист може да извършва само една наздравица в даден момент (иначе задачата е тривиална, защото на първи етап всички програмисти се чукват с No. 1, после с No. 2 и така виждаме, че броят е n; ако свързваме всеки път съседните, т.е. при връзки 1-2, 1-3, 1-4, …, 1-n можем да създадем и връзки 2-3, 3-4, 4-5, 5-6, … ще си спестим една наздравица, така че броят е де факто n-1, което е оптималното решение).

И тъй, за другия случай:
Разцъках си решенията за n=4, 6, 8 (после ще обясня защо само на четните).

n=4

n=6 

n=8

От тук нататък правим следният анализ…
За всяко четно n е достатъчно да направим връзки без свободни елементи (всички възли са свързани) и по главния диагонал (остават по 2 несвързани възела).
Общият брой е винаги n и това решение е оптимално.
Когато имаме нечетен брой елементи, обаче, един елемент винаги остава свободен, за който трябва да изпълним тези комбинации. Тогава ще имаме n.(n-1) етапа на наздравица.
Накратко:

  • ако програмист може да вдигне наздравица с няколко програмиста едновременно: n-1
  • ако програмист може да вдигне наздравица само с един човек при четно n: n
  • ако програмист може да вдигне наздравица само с един човек при нечетно n: n.(n-1)