Christian Archer Chase Your Dreams!

воскресенье, 09 сентября 2012
суббота, 08 сентября 2012
16:38 That's the way we do things, lad. We're making shit up as we wish
К 46-летию Стартрека Google сделал отличный дудл



играбельный


URL
вторник, 04 сентября 2012
четверг, 30 августа 2012
суббота, 25 августа 2012
пятница, 24 августа 2012
23:32 Немного Далеков

Далек-психоаналитик


Далек-лентяй
URL
23:28 The cake is not a lie
Steam прислал мне скидку на Portal2 -75%, действует до 30 августа. Готов поделиться ей за скромный донат.

Для справки: Portal2 щас стоит 399 рублей, со скидкой 99,75

URL
среда, 22 августа 2012
11:33 Ключ под ковриком
Это прекрасно:



Надеюсь, фейкъ
URL
понедельник, 20 августа 2012
15:53 The UnPETA
Animals are ours to eat, wear, experiment on, and use for entertainment
URL
воскресенье, 19 августа 2012
23:53 Опоссум Андрей
Мой новый герой :D


URL
пятница, 17 августа 2012
17:22 Какой доктор?
xxx: Вы знаете, я далек
yyy: EX-TER-MI-NATE!!!
zzz: EXTERMINATE!
vvv: exterminate!
xxx: от мира "музыки не для всех"
xxx: Что это было?
URL
воскресенье, 05 августа 2012
18:08 Стоимость проезда в питерском метро: Часть 2
Сделал более аккуратную модель и добавил проездной на 70 поездок




  • Проездной на 70 всё же рулит, но в ограниченном промежутке

  • Проездной на 50 тож рулит

  • Да и вообще, тут график понятнее, смотрите сами



Код там же
URL
03:18 Mageia → Fedora
Поиски идеальной операционки продолжаются. На этот раз сменил Mageia на Fedora
URL
01:00 Стоимость проезда в питерском метро
Лафа с пешком до работы кончилась и я решил узнать какой всё же проездной на метро выгоднее. Естественно, лёгких путей мы не ищем и на интуицию полагаться не будем.

Итак, модель. Для простоты смоделируем "год" в 360 дней из 12 месяцев по 30 дней. Ну, для простоты. Для примерного результата этого достаточно. И заставим модель кататься по проездным этот год


  • Не брались проездные на 90 дней — один из них не может быть выгоднее жетонов (1890/70 = 27 рублей за каждую поездку), другой — подорожника (1560/60 = 26 рублей за каждую поездку)

  • Не брался месячный проездной на 70 поездок. Сначала я его неправильно смоделировал, а потом заломало/ Про него — отдельно



Результат:



Абсцисса — число поездок в неделю, ордината — средняя стоимость одной поездки


  • Не стоит париться с проездными, если вы ездите меньше раза в день. Думаю, это и так очевидно.

  • Подорожник рулит необычайно

  • Нет особого смысла в "толстых" проездных (25/15, 50/30) — они незначительно выгоднее вариантов "полегче" на тот же период

  • Проездной на 20 рулит над подорожником с 9 до 14 поездок

  • Проездной на 40 рулит над подорожником с 9 до 17 поездок и безусловно рулит над проездным на 20 :)

  • Если вы ездите больше 1 и меньше 3 раз в день, скорее всего вам будет выгоднее проездной на 40 поездок

  • В остальных случаях берите подорожник. Вообще, берите подорожник, с ним не надо паритсья с проездными

  • Проездной на месяц привязан к календарному месяцу. Может он и выгоден, но мне с такой привязкой париться неудобно

  • Все эти тарифы — или от балды, или разводилово



Код модели под катом (C++)

/**
* Saint Petersburg subway payments calc
*/

#include
#include

class Calendar
{
int day;

public:
Calendar(): day(0) {}

int getDay()
{
return this->day;
}

int getMonth()
{
return this->day / 30;
}

int nextDay()
{
this->day++;
}
};

class TicketSystem
{
double sum;
double last_payment;
int rides;

virtual double processPayment() = 0;

protected:
Calendar *cal;

public:
TicketSystem(Calendar* c): cal(c), sum(0), last_payment(0), rides(0) {}

double ride()
{
this->rides++;
this->sum += this->last_payment = this->processPayment();
return this->last_payment;
}

double getLastPayment()
{
return this->last_payment;
}

double getCurrentSum()
{
return this->sum;
}

int getCurrentRides()
{
return this->rides;
}
};

class PayByToken: public TicketSystem
{
double token_price;

double processPayment()
{
return this->token_price;
}

public:
PayByToken(Calendar* c, double token_price = 27): token_price(token_price), TicketSystem(c) {}
};

class PayByPodorozhnik: public TicketSystem
{
int current_month;
int rides;

double processPayment()
{
if (this->cal->getMonth() != this->current_month)
{
this->current_month = this->cal->getMonth();
this->rides = 0;
}

this->rides++;

if (rides > 40)
return 19;
else if (rides > 30)
return 20.5;
else if (rides > 20)
return 22;
else if (rides > 10)
return 24.5;
else
return 26;
}

public:
PayByPodorozhnik(Calendar* c): TicketSystem(c), current_month(-1), rides(-1) {}
};

class PayByCard: public TicketSystem
{
double price;
int rides, days, days_left, rides_left, prev_day;

public:
PayByCard(Calendar *cal, double price, int rides, int days):
TicketSystem(cal), rides(rides), days(days), price(price), days_left(0), rides_left(0), prev_day(-1) {}

double processPayment()
{
if (prev_day != cal->getDay())
{
prev_day = cal->getDay();
days_left--;
}

rides_left--;

if (days_left <= 0 || rides_left <= 0)
{
rides_left = rides;
days_left = days;
return price;
}

return 0;
}
};

typedef std::list MethList;

void run_sim(double);

int main()
{
for (double rides = 1.0/7; rides < 8; rides += 1.0/7)
{
run_sim(rides);
}

return 0;
}

void run_sim(double rides_per_day)
{
double rides = 0;
Calendar *cal = new Calendar();

MethList list;

list.push_back(new PayByToken(cal, 27));
list.push_back(new PayByPodorozhnik(cal));
//list.push_back(new PayByCard(cal, 1890, 70, 90));
//list.push_back(new PayByCard(cal, 1560, 60, 90));
list.push_back(new PayByCard(cal, 230, 10, 7));
list.push_back(new PayByCard(cal, 430, 20, 15));
list.push_back(new PayByCard(cal, 530, 25, 15));
list.push_back(new PayByCard(cal, 830, 40, 30));
list.push_back(new PayByCard(cal, 1025, 50, 30));
//list.push_back(new PayByCard(cal, 1290, 70, 30)); // wrong!!!


while(cal->getDay() < 360)
{
if (rides > 1)
{
rides -= 1;
for (TicketSystem *token: list)
{
token->ride();
}
}
else
{
rides += rides_per_day;
cal->nextDay();
}
}

std::cout << rides_per_day * 7 << "\t";

for (TicketSystem *token: list)
{
std::cout << token->getCurrentSum() / token->getCurrentRides() << "\t";
}

std::cout << std::endl;

for (TicketSystem *token: list)
{
delete token;
token = nullptr;
}

delete cal;
}


Актуальную версию можно найти на code.sunchaser.info
URL
понедельник, 09 июля 2012
11:55 Internet Explorer Auto Update
Microsoft объявила об изменении политики обновления Internet Explorer — теперь всем, у кого включен auto update, будут принудительно ставиться новые версии. Т.е.


  • Все Windows XP обновятся до IE8

  • Все Висты и 7 обновятся до IE9

  • Все 7 обновятся до IE10, когда он выйдет



Единственное, меня терзает смутное сомнение, что в СНГ у большинства Авто Апдейт вырублен — доморощенные эникейщики его вырубают сразу же после установки. Ладно хоть в остальном мире IE6/7 наконец подохнет
URL
четверг, 05 июля 2012
воскресенье, 01 июля 2012
23:21 По TNG
Вывод по первым 7 сериям — та же скукота, что и TOS. Похоже, Родденберри дурно влияет на собственный сериал. Может сразу на 5 сезон перейти?
URL
суббота, 30 июня 2012
15:23 И первый же вопрос на засыпку
Как тарелка у класса Galaxy путешествует по варпу без варп-гондол?
URL
15:09 ОМГ я на это решился
Я таки решил посмотреть Стартрек TNG от начала и до конца
URL
четверг, 28 июня 2012
18:46 Маленькое исследование HTML5 Multimedia
% Тут опять всплыл один древнючий пост, причём дичайше побилось оформление. Исправлять мне влом, но вот оригинал — sunchaser.info/2009/06/29/malenkoe-issledovanie... %
URL