Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Ставить ли фигурные скобочки?

Лучший ответ:
Правилом хорошего тона считается постановка фигурных скобок в любом случае. Для вдохновения можете прочитать вот эту статью: Исключительная красота исходного кода Doom 3

Худший ответ:
Ответ на этот вопрос не так однозначен. Существуют стандарты оформления кода, согласно которым должен быть отформотирован весь исходный код. Это актуально и для коммерческих компаний и для открытых проектов. Поэтому "хорошо" или "плохо" сказать нельзя, нужно говорить "соотвествует стандарту или нет". Можете для своих личных проектов выбрать какой-нибудь стандарт кодирования и следовать ему. Вот пример стандарта: https://wiki.qt.io/Coding_Conventions . Помимо этого существуют программы, которые позволяют отформатировать весь код согласно набору правил (astyle, clang-format, uncrustify etc.). Использовать их далеко не всегда удобно, так как зачастую форматирование может быть не стандартным чтобы повысить читабельность кода, но в общем случае нормально.
Что касается вашего примера, я предпочитаю не ставить лишние скобки для тела if в одну инструкцию:// OK
if (a > 3)
    ++a;
Но никогда не пишите эту инструкцию на той же строке -- не удобно отлаживать (может быть в какой-то IDE и удобно, но обычно каждый разработчик пользуется своей любимой...):if (a > 3) ++a; // Как поставить бряку на "++a"?
Что касается циклов, то с for лучше всегда ставить скобки, т.к. некоторые IDE в режиме отладки вроде VS2008 (а возможно и более старших версий) не умеют заходить в тело однострочного цикла без скобок.
Вопрос: монтаж на linux?

Лучший ответ:
Снимаю кино и видео 17 лет. из них 5 работаю исключительно под Linux. В общем, после разного рода самостоятельных экспериментов, проб и ошибок могу посоветовать следующий toolchain: 

kdenlive — однозначно лучшая монтажка. На нем же удобно делать отбор материала (в том случае, если ваш материал на ленте с таймокодом или без). 

Blender — композинг и 3D. Если вы работали ранее в AE, то вам будет с непривычки непросто, особенно если вы не имели дело с какими-либо node-оринетированными композинг инструментами. 

Еще для композинга есть отличный Nuke. Он, возможно, лучший вообще в своем роде, AE в подметки не годится, но он коммерческий. Есть бесплатная версия с ватермарками. 

Вообще, по старинке можно запустить 7.5 версию AE под wine. Она отлично и весьма стабильно работает. Использую время от времени. Есть два полезных трюка: 
1. ﻿AE использует только 2ГБ, чтобы выделить больше, надо в boot.ini прописать команды /PAE и /3GB
2. нажмите Shift key и выберете Preferences… там появится вкладка «Secret». добавьте в тектовое поле «20», больше ничего не меняйте. Это убережет AE от падений при просчете.

Худший ответ:
Использую Kino для простого монтажа. Но может подойти и для более серьезных целей.
Вопрос: Сползает контент?

Лучший ответ:
Либо тенью, как предложили выше. Либо изначально задать прозрачную рамку, а при наведении менять border-color.elem {
    border-bottom: 2px solid transparent;
}
.elem:hover {
    border-color: red;
}

Худший ответ:
Попробуй свойство outline.outline: 1px solid red;
ЕМНИП, не должен он разметку ломать
Вопрос: Возможен ли такой хак?

Лучший ответ:
Вы хотите чтоб телефон общался с смм-картой по средствам gprs которые сим-карта и предоставляет по сути?

Худший ответ:
Самый важный вопрос — нахрена?
Если я правильно применил навык телепатии, то намного проще использовать VoIP, и на том конце, где собирались держать симку, настроить gsm-шлюз.
Вопрос: Какие витаминки употребляют IT-шники?

Лучший ответ:
Не выдумывайте себе этих пилюлек, были бы вы адовым спортсменом, у которого просто расход этого всего пятикратный - да. А вы просто не спите, не следите за здоровьем, а потом думаете, чтт вам поможет чудо-таблетка. Нет, не поможет.

Худший ответ:
От стресса витамины группы B, магний: Берокка+ , магне b6 форте 
Поливитамины: супрадин, компливит
Если есть возможность купить витамины за границей, то купите там, разница ощутимая!
Гипоксия тоже сильно влияет на здоровье, так что прогулки и занятие спортом никто не отменял
Вопрос: Как запретить доступ к сайту по критерию принадлежности к стране?

Лучший ответ:
Прошу прощения, я не уверен, что знаю, как это сделать с использованием голого apache  и .htaccess, но почему бы вам не использовать nginx, собранным с одним из многочисленных модулей GeoIP ? 
Во-первых nginx лучше справляется со статикой, и вероятно, нагрузка упадет сразу после внедрения nginxa в качестве фронта, и не будет такой острой нужды резать пользователей по регионам, а во вторых в nginx это реализуется достаточно просто: 
К примеру, используя модуль geoip2, вы можете при помощи стандартной конструкции if в локейшнах nginx'a сравнивать значение переменной $region с нужными вам для запрета/разрешения.
Прошу прощения, если сочтете мой ответ офтопом.

Худший ответ:
В общем, друзья, решение. Спасибо всем откликнувшимся!
Можно сэмулировать заботу php в "прозрачном режиме". Можно, но это очень ресурсоемко. В 2х словах алгоритм должен выглядеть следующим образом - все запросы перенаправляются к index.php; Если запрашиваем существующую директорию - выводим листинг; если запрашиваем файл - по кускам его читаем и выдаем (предварительно выставив необходимые заголовки). Но, т.к. запросов много, а файлы - довольно большие - решение бы положило сервер минуты за две. Работало бы, было бы гибкое, но положило. Очень хреновое решение в данной ситуации, надо сказать.
Что было сделано - так как хостинг от "руцентра" (nic.ru) - режим работы был переведен в ручной, собран из исходников модуль mod_geoip, и подсунут апачу из не "родной" директории (родные все ридонли). Апач его съел, модуль был настроен, всё заработало. Родной "мануал" на форуме "руцентра" крайне не полный, сделал о всем процессе заметку по ссылке. Саппорт руцентра так и не ответил на письма. Шли третьи сутки.
Вопрос: Как связать 2 офиса в одну локальную сеть?

Лучший ответ:
~250 метров оптики, 2 сварки, 2 бокса, 1 оптический патчкорд 3 метра разрезанный пополам и сваренный в боксе + 2 медиаконвертора, крепеж и растяжка оптики + прочие мелочи = самый дешевый и надежный вариант. Свяжитесь с любым провайдером в районе, сделают за день возьмут 200-300$. Вам нормальное радиооборудование обойдется дороже да и намучаетесь с ним.

Худший ответ:
А стоит ли ради 6 пк тянуть оптику между 2-мя зданиями?
Вопрос: Какой плагин подойдёт для фильтрации поиска WordPress?

Лучший ответ:
Есть такие плагины, и немало. 
Начните с этих:
wordpress.org/plugins/search-filter
wordpress.org/plugins/query-multiple-taxonomies

Худший ответ:
Что значит на основе тегов?
По тегам и так ищутся посты в WP
Вопрос: Как понимать термин «предметная область»?

Лучший ответ:
В других работах по распознаванию в качестве предметной области указано - нейронные сети, что по сути является лишь методом решения проблемы.
Значит неверно указано. Метод решения не связан с предметной областью.
Нейронные сети - технология, применяемая во многих (скоро уже во всех) предметных областях.«Разработка алгоритмов групповых решений в задачах распознавания образов». Столкнулся с тем, что нужно описать предметную область.
Распишите там как важна эта задача в современном мире, как давно она стоит (с середины XX века можно начинать прослеживать историю). Весь математический аппарат для решения задачи распишите. Это и будет описанием предметной области.

Худший ответ:
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D...Предметная область — часть реального мира, рассматриваемая в пределах данного контекста. Под контекстом здесь может пониматься, например, область исследования или область, которая является объектом некоторой деятельност
Опроси преподавателей, которые будут в комиссии, что они подразумевают под таким
Подобные вопросы адресуй своему преподавателю-куратору
Вопрос: Упал ЖК монитор. Можно ли починить?

Лучший ответ:
«Доктор, у меня болит зуб, причем если потыкать вилкой, болит сильнее, а если зубочисткой с ваткой, то вроде и ничего. Сколько будет стоить это починить?»

Я считаю, что с такими вопросами — строго в ремонтную фирму. По инету железки никто не чинит, мало ли что могло повредиться кроме лампы.

Пары ртути опасны в момент испарения, если уже проветрилось — то опасности для взрослых нет.

Худший ответ:
Починить можно но как по мне то это экономически невыгодно.
Вопрос: Какие есть аналоги приложний для GNU/Linux из Windows?

Лучший ответ:
1. Лучше всех с Outlook естественно работает родной Exchange. Но, есть варианты. Первое, что отвалится и придется искать ему замену - autodiscover. На линуксе необходимо будет настроить веб-сервер, который по запросу на autodiscover.domain.ru будет слать необходимый XML файл. С траблшутингом в этом случае не знаком, думаю, есть какая-то веб-морда для этого. 
Есть готовые решения, например, Zimbra. Существуют в опен-сорсе и вцелом неплохи.
2. Да, можно будет связать. LDAP же универсален. Поддерживает ли он мобильные платформы, думаю, тоже да, правда, не знаю точно. В любом случае скорее всего придется это пилить.
3. Можно настроить симлинки на Samba. Для репликации можно посмотреть в интернете, что вас устроит. Есть платные решения. И снова, придется пилить!
4. Здесь вы перейдете на аналог. Есть варианты в виде VNC или запуска удаленного рабочего стола через X11 forwarding в SSH
5. Останется вопрос с сервером. Перевесить 1С на Линукс?
6. DHCP естественно есть. Микротик имхо с дхцп справляется на редкость медленно.
7. Да, всё есть, всё придется конфигурировать ручками
8. С принтерами в линукс у меня не сложилось, не могу подсказать. Особенно не радовали драйвера.
Вы должны еще десять раз подумать. Особенно если вы не знакомы с линукс на уровне, достаточном для выполнения задуманного.
Может, в конечном итоге купить новое на базе MS будет дешевле, чем ваши пляски с бубном неизвестное количество времени. А если учесть, что по незнанию вы можете и рабочие часы своим коллегам "загубить", компания может потерять еще больше. Надежный бекап или надежные помощники за спиной вам бы не помешали. Удачи.

Худший ответ:
3) WebDAV. Ближайший пример использования - Яндекс.Диск.
4) Вам клиенты RDP нужны? Их полно, гуглите. Если чисто для линуксов, то VNC.
5) Аналогично.
6) Есть.
7) Если средства для WebDAV к nginx. В целом получится надежнее, чем любые windows-решения.
8) Сетевые принтеры. Если не сетевые - их можно расшаривать через CUPS. Очень просто: localhost:631
Добавлю. Обратите внимание на облачные решения. Есть масса облачного софта, который вы можете хостить в том числе самостоятельно.
Вопрос: Работа с Яндекс картами в WordPress?

Лучший ответ:
Возможно вам поможет в изучении конструктор яндекс карт
api.yandex.ru/maps/tools/constructor/

Худший ответ:
Лучшей раскладочной полочкой является «Документация API Яндекс Карт», только там самые правильные и лучшие примеры, последние кстати, необходимо смотреть в начале руководства, там даны базовые правила вставки карт.
Вопрос: Алгоритм для выделения ошибок?

Лучший ответ:
Посчитать расстояние Левенштейна между словами, при этом на каждом шагу динамики запоминая, как туда попали (пропуском буквы, добавлением, заменой, совпадающей буквой). Подсветку строить по пути, которым получено минимальное расстояние. Если несколько словарных слов с одинаковым расстоянием, выбрать из них самое распространенное.

Худший ответ:
А заранее известно, что «jahn» — кривонаписанный «john»? Или известно, только то, что пара — это какое-то слово из словаря? Если первое — проще всего тупо посимвольно. 
Если второе — можно попробовать поиск по маске. Например ищем аналог «reccursion»:

r*n — слишком дохрена вариантов?(+1 символ)
re*n — все еще?
re*on… и т.п.

соответственно, если не добились успеха и ошибка в крайних буквах — действовать от обратного(tecursion):
*ecursion -> *ecursio* -> *cursi* (для примера — правильный вариант найдётся в первой итерации)

Такой вариант юзабелен и для SQL-ного LIKE и для grep`a
Вопрос: Как лучше всего перевести на русский downstream и gotcha?

Лучший ответ:
downstream
В приведенном контексте этот термин скорее всего определяет отношение между проектами. Т.е. если один проект является форком другого, то первый будет "downstream" по отношению к последнему. Так что адекватный перевод - "производный".gotcha
Если это существительное, то перевод вполне однозначен: "ловушка" (в контексте программирования).

Худший ответ:
Gotcha - синоним к "i have got you", т.е. "поймал!" или "держу".
Downstream - "вниз по течению", "низовой". В контексте может также означать "после" или "в процессе". В приведенном предложении, судя по всему, говорится о состояниях "перед" проектом и "в течение" проекта.
Вопрос: Как раздавать вайфай, как в Макдональдсе?

Лучший ответ:
1. Железячно - www.dlink.ru/ru/products/2/768.html
2. Софтово 1 - www.cyberforum.ru/wlan/thread1014080.html
3. Софтово 2 - abills.net.ua/forum/viewtopic.php?f=6&t=6952
и напоследок в поиск по словам coovachilli openwrt

Худший ответ:
Не в бровь, а в глаз! 
Если не чураетесь использования оборудования от Ubiquiti, то подобное можно реализовать, купив только точки доступа Unifi AP . Контроллер софтовый бесплатный в комплекте. Есть поддержка Poe своего стандарта 24V, а в точках подороже и стандартных 48V.    
Себестоимость довольно привлекательная.
Вопрос: Как организовать организовать трансляцию/доступ к музыкальной коллекции на домашнем сервере (Windows Server), опубликованном в Интернет?

Лучший ответ:
А еще присмотритесь к subsonic — он также все перечисленное умеет, есть клиенты под мобильные платформы, умеет транскодировать, кроссплатформенный.

Худший ответ:
DLNA сервер поднимите и слушайте/смотрите
Вопрос: PHP. Сессии в БД. Кроссдоменная авторизация. Что-то я в этой жизни не понимаю?

Лучший ответ:
Вариан 1 — злой и страшный «Suhosin» — шифратор данных сессии.
И будьте добры показать настройки read-write-start сессий

Худший ответ:
а session_decode() правильно раскодирует эту строку?
Вопрос: Где ИБэшнику пройти практику?

Лучший ответ:
А чем Вы хотите заниматься-то?
Бумажная ИБ сейчас очень актуальна для крупных контор. Я не шучу. И да, этим и правда надо кому-то заниматься.
А заниматься чем-то интересным для практики и ещё и за деньги - думаю, желающих полно. Предложите себя условно-бесплатно. Ну, или как совет и дали - просто доболтайтесь "за справочку"

Худший ответ:
> и опыт, и навыки, и публикации, и портфолио> от нас ждут рабов, готовых бесплатно перебирать кипы бумаг
Как-то слишком контрастно смотрятся эти фразы в соседних предложениях. Где-то вы точно что-то путаете. Касперский не берет? Опыт же есть, как вами же написано.3 курс
Что знаете-умеете? Если без эмоций и РАБЫ-ВЕЗДЕ-РАБЫ.
Вопрос: Получение id пользователя через приложение в Вконтакте

Лучший ответ:
При авторизации сохраняйте id в сессии или устанавливайте кукисы с айди сессии, а в бд сохраняйте id_сесии и id вконтакте

Худший ответ:
Я дописываю viewer_id и auth_key к каждой ссылке:
user.php?viewer_id=1&auth_key=178368163&action=profile


Но у меня весь проект работает на аяксе — полных переходов не бывает, поэтому я использую такую конструкцию:
$.api=function(m,o,c){o.method=m;o.viewer_id=api.viewer_id;o.auth_key=api.auth_key;$.post('api.php',o,c);}
Вопрос: Почему laravel не документирует многие возможности?

Лучший ответ:
Русскоязычное сообщество Laravel с удовольствием примет ваши предложения и замечания в виде пулл-реквестов в репозитории с документацией.

Худший ответ:
В Laravel действительно есть некоторые не очевидные моменты, к примеру под капотом время от времени вылезает тот или иной пакет от symfony,  документацию к которому лучше искать на сайте этого фреймворка.
Но конкретно в данном случае процесс создания экзепляра класса таким образом описан тут: laravel.su/docs/5.0/container
Вопрос: Нужно ли платить налоги Государству, имея сайт-доску объявлений в рунете?

Лучший ответ:
Наличием обязанности уплаты налогов на территории РФ является факт получения доходов на территории РФ при нахождении налогоплательщика на территории РФ более 180 суток в год. Замечу это не важно кто вы.

Худший ответ:
Делайте.
Никто за Вами гоняться не будет, не та Вы птица.
Мегастартап, который можно будет выгодно продать, выйдет очень вряд ли. Прибыли наверняка будет хватать аккурат на хостинг и, может, ещё на инет для дома.
Вы всерьёз верите в свою бизнес-модель?
Вопрос: Хранение сложной структуры в mysql. Как?

Лучший ответ:
Сделай пока как знаешь. Авось сойдет. Ибо джойны — зло, а premature optimization is the root of all evil :)

Худший ответ:
Запрос и ответ можно хранить в одной таблице. Списки фильмов, из них — тоже. Получаем две таблицы вместо четырех.
Годится?
Вопрос: Как правильно реализовать полноэкранную видеозаставку?

Лучший ответ:
/* Высота панели */
.nav {
 height: 40px
}
/* Высота блока с видео/картинкой */
.video-container {
 height: calc(100vh - 40px);
}
/* Видео отображается только на больших экранах */
video {
 display: none
}
@media (min-width:769px) {
 video {
  display: block;
 }
}
Нужно ещё учесть, что на мобильных нет автопроигрывания видео.

Худший ответ:
Есть решения которые можно найти по первым пяти ссылкам гугла
Вопрос: Нормален ли такой подход в организации моделей данных?

Лучший ответ:
По большому счету, у вас два вопроса:Можно ли хранить несколько классов в одном файле?Namespaces and classes MUST follow an "autoloading" PSR: [PSR-0, PSR-4].
This means each class is in a file by itself, and is in a namespace of at least one level: a top-level vendor name.PSR-1
Проблемы такой подход может вызвать только если вы начнете работать в команде, в которой принят какой-то другой стандарт. При наличии современных IDE нет никакой разницы в каком файле лежит класс и поэтому нет никаких причин не писать каждый класс в отдельный файл - так их будет проще читать и искать.Можно ли вызывать один класс через другой$userLinks = User::getUserLinksObj()->findLinks($userId);Если уж вы инкапсулируете, так инкапсулируйте так, чтобы было удобно пользоваться:$userLinks = User::findLinks($userId);
Но в таком случае почему бы не написать сразу нормально?$userLinks = UserLinks::findForUser($userId);
Зачем такая сильная связь между классами? У каждого класса - своя зона ответственности.

Худший ответ:
мне кажется здесь автору необходимо знать, верен ли подход получения данных через другой класс, 
а как хранить класс в этом файле или в другом дело вкуса.Aggregate Root .
Если UserLinks объект не может существовать без объекта User, то User выступает в роли родительского элемента в узле через которого происходит получение дочерних элементов.
Вопрос: Как перейти на полусвободный график?

Лучший ответ:
Сядь с руководителем и поговори :)
Начать хотя бы с "раз в две недели работать из дома".
Потом показать как у тебя невероятно растёт продуктивность, когда ты дома сидишь. Взять побольше дней свободных.
Так глядишь постепенно и продавишь своё. Если фачить задачки не начнёшь ;)

Худший ответ:
Увольняйся и начинай работать на себя. Да понадобится время чтобы набрать базу клиентов, но из плюсов - гораздо больше денег, свободный график и свободное географическое положение.
Из минусов - нужна самодисциплина, не все могут работать дома.
Вопрос: Как выбрать частично содержимое блока (jQuery)?

Лучший ответ:
Сорри) мой вариант не верный был, правильный @Romeo_viruS jsfiddle.net/dekgLgcz

Худший ответ:
мне кажется, проще будет содержимое через регулярку разбить и установить переменные )
Вопрос: Какие книги почитать про качество ПО? Как определять, как повышать и так далее?

Лучший ответ:
Что такое качество? Стив Макконел в «Совершенном коде» отвечает так:

Глава 20. Качество ПО

Корректность — отсутствие/наличие дефектов в спецификации, проекте и реализации системы.
Практичность — легкость изучения и использования системы…
И еще много пунктов…


Худший ответ:
Если интересует формальная сторона вопроса — смотрите стандарты ISO 9126, ГОСТ 28195.

Если для себя — то уже прозвучавший выше Макконнелл и его «Совершенный код».
Вопрос: Нетбук для ubuntu

Лучший ответ:
Большинство современных ноутбуков не имеют проблем с современными дистрибутивами. Не пишу «все», так как допускаю исключения, но лично я в последние годы с таковыми не сталкивался.

Худший ответ:
Обратите внимание на Asus Eee PC 1225C
Вопрос: Стоит ли планировать поддержку игры для других платформ?

Лучший ответ:
мне кажется сейчас очень много людей пересели на смартфоны… особенно из офисной аудитории…
порт игры под iPhone/Android позволит охватить бОльшую аудиторию и дополнительно заработать на продажах Pro версии в appStore :)

Худший ответ:
За кроссплатформенность. Сейчас достаточный выбор движков. Например Moai SDK поддерживает и дэсктопы, и мобильные девайсы.
Вопрос: В чем различие полиморфизма и перегрузки?

Лучший ответ:
Перегрузка это и есть одно из проявлений полиморфизма. 
Всего есть различные виды полиморфизма (ответ больше для C# и Java, если для c++ что-то не так, поправьте меня): 
* динамический: это когда программа во время выполнения решает какой код исполнять. Это происходит при наследовании: когда ты переопределяешь функцию в другом классе (виртуальные методы, абстрактные)
* статический: на стадии компиляции все известно, это как раз перегрузка методов. Компилятор исходя из аргументов выбирает нужный метод

Худший ответ:
При перегрузке ты можешь перегрузить функцию для разных количества и типов аргументов, но для каждого случая нужно отдельно определять функцию.int plus(int a, int b) {return a + b;}
float plus(float a, float b) {return a + b;}
double plus(double a, double b) {return a + b;}
unsigned long long plus(unsigned long long a, unsigned long long b) {return a + b;}
// выбьет ошибку для любого другого типа, кроме int, float, double, unsigned long long
При использовании шаблонов ты определяешь шаблон только однажды, а компилятор сам сгенерирует определение стольких функций сколько потребуется.template<typename T>
T plus(T a, T b) {return a + b;}
// Работает для любых типов, которые определяют opeator+
P.S. По сути, и перегрузка и шаблоны это и есть средства полиморфизма.
Вопрос: Отобразить информацию о входящем звонке на ПК

Лучший ответ:
приложение для телефона + расширение для браузера chrome
 Android Desktop Notifications
Пользовался несколько месяцев назад, подглючивало
сейчас возможно ситуация изменилась

Худший ответ:
Странная проблема. Есть куча более простых решений:
1. 2х режимные BT наушники
2. Докстанция в зоне видимости
3. Вкл. вибрацию. Через стол — почувствуете.
4. Да просто опереть телефон на монитор. Сложно не заметить, что экран включился.
Вопрос: Книги по структурам данных и алгоритмам?

Лучший ответ:
В твоем случае - не стоит. 
Желание понять - "..основы - основ", imho тупиковый путь. Лучше ставь цели сделать, что-то простое и работающее. Сортировку, поиск, микро-игру, простой сайт и тп. Ищи такие мануалы, или по англицки getting started tutorial. Они есть для любой техноогии, хоть в тексте, хоть в видео. 
Ну и что с того, что ты запомнишь или будешь понимать, что "массив - это последовательно расположенная совокупность чего-то там..". Главное, что ты - можешь сделать!! А это очень быстро станет понятно, когда начнешь, что то делать по мануалам, хотя бы. Только не обнадеживайся, по мануалу - сделать все не составляет труда, даже для мартышки. А вот использовать мануал, как основу, для своего простенького проекта, это действительно - уже уровень программирования. Там, станут реальные задачи, и сразу станет понятно, насколько это твое. И уверяю тебя, знание основ базвых алгоритмов и базовых понятий, самая легкая задача в проекте.
Для этого тебе всего-лишь надо, действительно, научиться гуглить ( научиться чувствовать, как искать нужную информацию ). Сама логика гугления - придумать пару ключевых слов ( вот тебе и массив ), и открыть первый десяток ссылок (вот тебе второй массив). Либо найдешь информацию, либо новые ключевые слова (вот тебе условие и сортировка ), тогда повторить (сам догадайся, что это..).
И не учись в одиночку, а то увязнешь в дебрях. Программирование сейчас - социальная вещь. Ищи ментора, и соратников, чатся. Ходи на тусовки в своем городе и группах в ВК, правда не обнадеживайся, что ты кому-то будешь там важен и интересен. С отсутствием опыта и знаний, тебе предстоит тернистый путь. Читай правильные вещи, типа: tproger.ru
Удачи.

Худший ответ:
Ох... Вирт, Седжвик, Грэхэм, Кнут, Макконел, Колмогоров... да полно всяких... ох.... сто раз на тостере про одно и тоже...