RAMROD 2013 – відео

У доповнення до поста 2013-07-25-RAMROD хочу розмістити це відео.

Вистачає ж людям часу і таланту робити такі презентабельні роліки!

 

Хоча виглядає все так вже просто на цьому відео Smile А в реалі більше 9, а у багатьох більше 10, і навіть більше 12 годин педалювання.

Перебір усих можливих комбінацій bool

Задача

Для N змінних типу bool треба знайти всі варіанти комбінацій їх значень.

Рішення

Ідея полягає в тому що після того як змінено значення однієї змінної в true (починаємо з останньої) встановлюємо усі що йдуть за нею в false. Кожна наступна ітерація починає з останнього зміненого значення.

   1:      bool* vals = new bool[N];
   2:      for (int i = 0; i < N; ++i) vals[i] = false;
   3:   
   4:      bool cont = true;
   5:      while (cont)
   6:      {
   7:          for (int j = 0; j < N; ++j) 
   8:          {
   9:              cout << (vals[j] ? "t" : "f") << ", ";
  10:          }
  11:          cout << 'b' << endl;
  12:   
  13:          cont  = false;
  14:   
  15:          for (int i = N - 1; i >=0; --i)
  16:          {
  17:              if (!vals[i])
  18:              {
  19:                  vals[i] = true;
  20:                  cont = true;
  21:   
  22:                  for (++i; i < N; ++i) vals[i] = false;
  23:   
  24:                  break;
  25:              }
  26:          }
  27:      }
  28:   
  29:      delete [] vals;

 

Оптимізація

Абсолютно зайвим є витрачання цілого байта на значення яке може буте збереженим в одному біті. Тож можна об’єднати 8, або навіть більше значень в одному.

   1:  template <class T>
   2:  unsigned getBit(size_t index, T* storage, size_t size)
   3:  {
   4:      auto position = index / (sizeof(T) * CHAR_BIT);
   5:      auto bit = index % (sizeof(T) * CHAR_BIT);
   6:      
   7:      return (storage[size - position - 1] >> bit) & 1;
   8:  }
   9:   
  10:  typedef unsigned char storageType;
  11:  const int bitsInPosition = sizeof(storageType) * CHAR_BIT;
  12:   
  13:  ...
  14:      auto positions = N / bitsInPosition;
  15:      if (N % bitsInPosition > 0) ++positions;
  16:      storageType* vals = new storageType[positions];
  17:      auto mask0Position = (1 << (N % bitsInPosition)) - 1;
  18:   
  19:      for (auto i = 0; i < positions; ++i) vals[i] = 0;
  20:   
  21:      for (size_t i = positions - 1; ;)
  22:      {
  23:          for (size_t j = 0; j < N; ++j) 
  24:          {
  25:              cout << getBit(j, vals, positions);
  26:          }
  27:          cout << endl;
  28:   
  29:          if ((++vals[i] == 0) ||
  30:              (i == 0 && ((vals[0] & mask0Position) == 0)))
  31:          {
  32:              if (i == 0)
  33:              {
  34:                  break;
  35:              }
  36:              
  37:              while (++vals[--i] == 0);
  38:              i = positions - 1;
  39:          }
  40:      }
  41:   
  42:      delete [] vals;
  43:  

 

2013-07-25-RAMROD

imageВелопробіг (хотілося б сказати велогонка, але це таки не змагання) учасники якого їдуть навколо гори Рейнер. Відбувається кожного року, стартові місця розігруються в лотореї. Ось цього року я вперше прийняв участь в лотореї і одразу і виграв Smile Проте ні Олена, ні будь-хто з велосипедистів яких я знаю не здобули собі місця.

Старт та фініш був у містечку Енумкло що десь за 1 годиною машиною від Кіркланда в якому ми живемо.

Гора Рейнер добре помітна здалеку (від нас її видно дуже добре), і виглядає дуже красиво – велетенський білий від снугу зуб що закриває значну частину обрію. Навколо гори організовано національний парк (ота біла порожнеча в низу карти) по якому навколо гори ми і їхали.

Сайт події – тут, довжина маршруту – 149 миль (240 км) за набором висоти більше 10000 футів (3 км). В цьому власне складність і полягає – спочатку долаєш 150 км, а потім починаються 3 дуже затяжні гірки одна за одною.

Сам старт був з 5 до 7 ранку, тобто не масовий, не за місця ж боролися. Отже встали в 3:30, в 4:30 були на місці, перевірив усе, переодягнувся, набрав води, одягнув футболку (прохолодно з ранку було) і поїхав.

На трасі було кілька точок де можна було поповнити запаси води і гаторейду (напій з електролітами), та поїсти бутербродів, фруктів, попити коли і таке інше. У самому парку на вершинах доступна була лише вода.

 

Знаючі люди попереджали що зі старту нестися не треба – перші 50 км переважно легенький спуск і можна легко убити собі ноги.

Я прибився до невеличкої групки в якій кожен по черзі був лідером (перший ріже повітря, а позаду нього решта групи крутить в своє задоволення) – 1 миля і відпочиваєш. Поки ми дісталися першого пункту харчування вже стало зовсім світло і можна було продовжувати в одній велофутболці (називається джерсі).

 

Весь цей час ми їхали якщо не по місту то принаймні по міжміським дорогам на яких відсутня велодоріжка. А через те що і узбіччя там особливо нема то машини часто пролітали за якісь пів-метру від нас. Хоча машин не так щоб і багато було… А от вантажівки з лісом то було страшно – неосяжних розмірів монстри що тягнуть на собі стос зрубаних дерев, ревуть двигунами так що вуха закладає, та ще й тягнуть за собою причепи з таким же лісом. І все це несеться мимо тебе майже впритул… Без звички доволі страшно і неспокійно.

 

Другий етап переважно проходив по узбіччю швидкісної трасси і там було легше через те що було широке узбіччя. А оскільки ще й рел’єф був відносно плаский то і швидкість вдавалося тримати непогано (принаймні для мене 32-35 км/г це непогана швидкість).

План був такий що я на кожній зупинці буду дзвонити Олені і звітувати що у мене все в порядку, але з’ясувалося що ніякого мобільного покриття в тій місцині вже нема, та й до того ж телефон постійно шукаючи вишки розрядив батарею за якісь пару годин. А отже і фотографій поробити не вдалося. А фотографувати там варто було.

 

Після другої зупинки ми в’їхали в парк де практично зникли машини, дорога стала ще вужча і почала дрібно вигинатися вліво-вправо, по краям став ліс закривши небо. Тут вже почався підйом… Наче і невелечкий, але швидко не поїдеш, а він усе тягнеться, і тягнеться, і тягнеться. І так понад 40 км.

Проте їхалося в задоволення – ноги працюють, і хоча і не розженешся проте і загальне самопочуття хороше, приємно неспішно збиратися звивами в гору.

А ось вже і вершина – попити води, долити у пляшки, ще пару миль і половину дистанції подолано. Несподівано швидко і легко.

 

Далі починається крутий і тривалий спуск (приблизно 30 км) де летиш понад 50 км на годину і лише дивишся навколо. Красиво сташенно – яскраво синє небо, ще синіші дрібненькі озера, трошки нижче все куди сягаєш оком вкрито темно-зеленим лісом, на узбіччях сніг, яскраве сонце, смуга дороги та урвища то з одного то з іншого боку. Ну ясно що вкритий снігом пік гори тут же, але тепер дуже близько, майже впритул.

Ми колись там були машиною, але саме в цей раз я оцінив наскільки ж там неймовірно красиво. Обов’язково треба відвідати цей парк як будете раптом в наших місцинах.

 

А далі почався підйом в другу гірку яка не виглядає такою вже страшною в порівняння з ішими двома на карті. А от насправді те що підйом зовсім трошки крутіший (хоча і коротший) значить дуже багато – їдеш-їдеш, пнешся, дивишся на комп’ютер, а там ще навіть кілометр не пройдено. Коротше тут вже почалася втома і треба було зосереджуватися і працювати.

За 4 милі до вершини була зупинка з водою де нас поливали з пульвелізаторів. Сонце вже пекло неймовірно і це вперше коли я почав потіти. Одна пляшка в мене була з напоєм з електрлітами (долива гаторейдом на зупинках), а друга з водою з якої я себе і поливав час від часу. Це ще добре що я не п’ю багато і мені майже завжди вистачало води від зупинки до зупинки, а от людям як п’ють багато і регулярно було дуже важко.

 

І найдивніше те що було ж не спекотно, навіть прохолодно, а от сонце лупило сташенно і нагрівало шкіру через що і починалося перегрівання. Я старанно помазався кремом від сонця на старті і трошки додав зверху на парі зупинок, тому обійшлося без обпіків та почервонінь. Взагалі без сонцезахисних окулярів, шапки та крему від сонця суватися туди не варто.

Ну та як би там не було ось вже і друга вершина нарешті, неймовірно скільки вона сил забрала. Починаю хвилюватися чи я взагалі доїду.

 

Ось вже і трейтій (останній підйом починається). Усього в якісь пів-градуси різниця в нахилі, але наскільки ж інші відчуття і зусилля! Їду не так важко як боявся і навіть знаходжу час милуватися гірськими квітами, водоспадами яких там сотні взовж доріг, розглядаю стрімкі річки внизу та орлів в небі…

Проте підйом все тягнеться і тягнеться і через години півтори стає щось зовсім важко. Пнуся з усих сил, аж ось якийсь мужик на дорозі кричить що залишилося 1.1 милі (2 км) до вершини. Стараюся, але раптом усе скінчилося, сіла батарейка, ноги стали і не можу примусити їх крутити далі. Останні 200 метрів пройшов пішки Smile Залишилося 80 км.

 

Далі 20 км з гірки і остання зупинка. Про останній етап мене попереджали що хоча він і з гірки проте там весь час сильний зустрічний вітер і тому треба приєднатися до якомога більшої групи, а то буде важко.

На зупинці дійсно великий натовп велосипедистів, але я чомусь після того як поїв і трошки відпочив все ж таки з дуру попер сам – план був просто тихенько їхати і не думати про швидкість. Проте з’ясувалося що думати таки треба було.

 

Спочатку трошки потримався за парою швидких гонщиків, але відвалився від них через кілька кілометрів. Потім прибився до групи з 5 велосипедистів, а через кілька хвилин нас наздогнала група десь з 50 чоловік. От за тією групою я і тримався кілометрів з 15, але потім вирішив відстати – їхати було вже зовсім не в задоволення, ногам незручно ні крутити, ні стояти, ні лежати на рамі, вже все набридло. Багато в чому це результат зашвидкого старту – сил і енергії моральної на останній етап не лишилося.

Останні 20 км я їхав взагалі сам – нікого на обрії ні попереду ні позаду, лише перед фінішом у місті побачив людей. Це була 3 година дня, нікого ні на дорозі ні на вулиці, мертве місто (вірніше передмістя).

 

Що ж, головну ціль (подолати дистанцію) досягнута, цим я задоволений. Проте як вже зазначав раніше відчуваю що треба взяти відпочинок на місяць-півтора, а то про наступні старти та випробування навіть думати поки не хочеться – розрядився.

Ну і ще одна річ. На відміну від бігу коли ти виклався і помираєш на фініші, і до кінця дня ледь живий повзаєш, а потім тиждень відходиш на велосипеді все не так. Виснаження страшенне, навіть сидіти важко, а вже за якусь годину ходиш нормально і просто загальну втому (хоча і сильну) відчуваєш. А на другий день так і взагалі тренуватися можна, навіть ноги ледь помітно болять. І це неймовірно дивне самопочуття для бігуна. Думаю причина в тому що 1) на велосипеді не перегріваєшся так, та 2) на бігові часто довго прицюєш з високим пульсом (190+), а на велосипеді рідко коли вище 170 добираєшся. Ну і удари ногами (і всим тілом) об землю це зовсім не те що крутити ногами у повітрі (хоча б і набагато довше).

У мене все, фізкульт-привіт!

UPD. Дані з комп’ютера:

Halo II Headband

 

Ціна: $10

Призначення: Спортивна пов’язка на голову. Спортивність полягає в тому що вона синтетична та щільно прилягає.

Загальні враження: До недавнього часу я подібними речами не сильно користувався через те що для бігу в мене є Nike Featherweight Visor, але коли почав кататися у аерошоломі то знадобилося щось для захисту очей від поту. Ось якраз для велосипеду вона підходить ідеально.

Плюс цієї пов’язки не лише в тому що вона вбирає і випаровує вологу, але і в тому що в ній є на внутрішній стороні спеціальна резова вставка яка щільно прилягає до шкіри і не пропускає ні краплини поту вниз до очей та носа.

Як вже вище зауважив сидить на голові щільно, проте не тисне і в ній можна легко провести весь день.

Колір після кількох місяців використання не втрачає.

Недоліки: Якось вона не надто красиво виглядає… і все мабуть. Тобто особливих недоліків назвати не можу.

На сайті виробника: http://store.haloheadband.com/elastic-sport-headband-p/hp.htm

Portishead–2008 – Third

 

Добре, але надзвичайно передбачуванно: зелена тоска, ниття і страждання, рожеві шмарклі з цукром…

Раз на пів-року можна послухати із задоволенням.

http://www.allmusic.com/album/third-mw0000784007

[youtube=http://www.youtube.com/watch?v=u-oZyAKiWsc&w=448&h=252&hd=1]

The Golden Compass (2007)

 

Неймовірне лайно.

Просто повірте на слово що те що ви побачите в трейлері набагато краще за сам фільм.

http://www.imdb.com/title/tt0385752/?ref_=fn_al_tt_2

[youtube=http://www.youtube.com/watch?v=gNiiJ0JtBOQ&w=448&h=252&hd=1]

Joe Holdeman. The Forever War / Джо Холдеман. Нескінченна війна (1974-1999)

Хороша чиста наукова фантастика.

The Forever War / Нескінченна війна (1974)

 

Класика наукової фантастики, але на сьогодні трошечки застаріла.

Війна між землянами та іншим розумним видом виливається у серію сутичок відділених одна від одної десятками і сотнями років (ефект від польотів на близькосвітлових швидкостях). Автор не лише описує бойові дії (тактика, стратегія, підготовка бійців), але і намагається прогнозувати розвиток людства.

Головний герой прийнявши участь у кількох сутичках стає в молодому віці найстарішим представником людства і повертається у світ людей лише щоб з’ясувати що війна давно скінчилася.

http://www.goodreads.com/book/show/21611.The_Forever_War

 

Forever Peace / Нескінченний мир (1997)

 

Дії відбуваються на Землі у недалекому майбутньому. Профессор математики і призовник у постійно діючій армії керує віддалено роботом бійцем. Взагалі на планеті йде боротьба між розвиненими країнами що контролюють нано-технології та рештою світу що хочуть ті ж технології мати замість подачок допомоги.

Переживання, кохання, психологічна травма і нарешті несподіване використання військових технологій яке може перетворити розрізнених людей на спільно мислячий організм та підняти рівень взаємопорозуміння на такий рівень що людство еволюціонує як вид майже за один день.

Непогано, але не зрозуміло що ця книга робить в цій серії – вона не пов’язана ні подіями, ні героями з нею.

http://www.goodreads.com/book/show/21618.Forever_Peace

Forever Free / Нескінченна свобода (1999)

 

Дії книги починаються за кілька років після фіналу першої книги серії.

Головний герой з такими самими як він вояками живе серед нескінченних генетично подібних копій ідеального землянини і все думає про втечу в космос і заснування нової людської цивілізації. І коли нарешті його мрії здійснюються починають відбуватися незрозумілі і містичні речі, а після термінового повернення з’ясовується що все людство зникло.

В результаті вся ця історія приводить до появи Бога, вірніше істоти яка не є Богом, але за людськими мірками за всемогутністю не сильно від нього відрізняється. Ну і в кінці Бог покидає людей зі словами що приблизно означають “ви всі мені набридли, живіть самі по собі, піду собі шукати іншу забавку”.

В процесі читання цікаво, але масштабний фінал не надто вийшов і лишається враження того що автор не дотягнув до того на що замахувався.

http://www.goodreads.com/book/show/21620.Forever_Free

BodyGlide Anti-Chafe

 

Ціна: $7

Призначення: Крем у вигляді стріка для запобігання натертостям. Підходить для тривалих занять бігом, велосипедом, витримує високі температури, але не надто добро протистоїть воді.

Загальні враження: Я би сказав що це дешева альтернатива Mission Athletecare Anti-friction Cream. Проте дешева не означає погана. Крем добре відпрацьовує у всих сценаріях для яких його призначено.

Я використовую: при бігові старанно мажу внутрішню сторону стегон, внутрішню сторону біцепса та ребра там де рукою чи футболкою можна натерти, на плавання – шию, гомілки та зап’ястки щоб легше було натягати гідрокостюм, а дехто бачив маже края рукавів та штанин костюма ззовні щоб легше було знімати.

Дуже популярний продукт який можна знайти іноді навіть у продуктових магазинах.

Не має запаху, не надто жирний, не залишає слідів на одязі, не викликає подразнення. Хоча є спеціальні жіночі ароматизовані версії.

Одного стіка має вистачити на кілька десятків (більше 50) стартів навіть якщо його не економити.

Недоліки: Найскладніший сценарій з яким цей крем не може впоратися у мене це натирання шиї при плаванні гідрокостюмом. Для усього іншого він підходить без проблем.

Ну ще хіба що можна зазначити що при невисокій температурі наносити його не так легко як хотілося б – доводиться з силою давити коли мажешся. Але то дрібниці.

На сайті виробника: http://www.bodyglide.com/products/anti-chafe/

Artillery–1990–By Inheritance

 

Це мабуть найкращий альбом цієї славетної команди, принаймні на мою думку.

Артилерія завжди вирізнялася тим що при усій рубаності рифів та швидкості їх музика є неймовірно мелодійною і м’якою.

А в цьому альбомі ще й вдалося вплести трошки східних мотивів.

Коротше зі світової скрабниці музики. Єдине що одразу можна вгадати що це музика кінця 80-х.

http://www.metal-archives.com/albums/Artillery/By_Inheritance/3241

Слухати: http://grooveshark.com/#!/album/By+Inheritance/1728168

[youtube=http://www.youtube.com/watch?v=dRNchMHz09E&w=448&h=252&hd=1]