Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как можно отсортировать массив по количеству наиболее повторяемых значений?

Лучший ответ:
int[] array = {1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 6, 6, 7, 8};
var sortedByFrequency = array
    .GroupBy(o => o)
    .OrderByDescending(o => o.Count())
    .ThenByDescending(o => o.Key)
    .SelectMany(o => o)
    .ToArray();
Console.WriteLine(string.Join(",",sortedByFrequency.Select(o => o.ToString())));
//4,4,4,4,1,1,1,6,6,3,3,8,7,5,2

Это если в одно LINQ выражение. Если нужно что-то очень быстрое для больших входных массивов, то стоит поискать что-то другое

Худший ответ:
Можно как-то так через кастомный IComparer:
var arr = new int[] { 1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 6, 6, 7, 8 };

var index = arr.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
var result = arr.OrderByDescending(x => x, new CountComparer(index)).ToArray();

class CountComparer : IComparer<int>
{
    private readonly IReadOnlyDictionary<int, int> _index;
    public CountComparer(IReadOnlyDictionary<int, int> index)
    {
        _index = index;
    }

    public int Compare(int x, int y)
    {
        var comparsion = _index[x].CompareTo(_index[y]);
        if (comparsion == 0)
            return x.CompareTo(y);
        return comparsion;
    }
}
Ну или можно самому написать алгоритм, но всё равно первым шагом надо будет пройтись по всему массиву с подсчётом повторений.
Хотя мб можно как-то оптимизировать, если предположить, что изначально массив отсортирован по возрастанию.
Вопрос: Как вывести значение по ключу словаря?

Лучший ответ:
На питоне ваш словарь должен выглядеть так:
data_dict = {
   'ФИО': {1: 'Иванов', 2: 'Петров', 3: 'Jonson'}
   'работа': {1: 'грузчик', 2: 'менеджер', 3: 'менеджер менеджера'}
}

А цикл, который вы хотите получить, так:
for key in data_dict.keys():
   for i in data_dict[key].values():
      print(f'{key} -> {i}')

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

Лучший ответ:
на бэкап сервере. Хочу закинуть 2 диска по ~16 ТБ зеркалом
Вы не указали интерфейс, но предположу, что SATA.

Если для покупки доступно вообще всё, что предлагается на рынке, то я бы взял те WD, которые на самом деле HGST (Hitachi). Это диски с белой наклейкой безо всяких Gold, Purple, и прочих цветов радуги.

Если нет, то один из возможных входных фильтров - это отсутствие SMR. Хотя, если нагрузка на диски будет невысокой, то влияние СМР может быть не столь выраженным.

Если говорить про Exos, то некоторое время назад Seagate декларировал, что ни в одном из них нет SMR. Но там любимое "specifications are subject to change without notice", так что может быть не лишним перепроверить.

Худший ответ:
Ознакомьтесь со статистикой от backblaze
Вопрос: Почему значение переменной width выводит какие то неправильные числа?

Лучший ответ:
Переменные надо инициализировать. Без инициализации в них лежит мусор.

Худший ответ:
зачем вторая инициализация num1 и num2. И потом ты пытаешься присвоить к переменным значение неизвестных для компилятора значения. Вот компилятор что то и присваивает твоим переменным, дабы ошибки избежать.
Вопрос: Что делать с этой ошибкой при добавлении сертификата pfx?

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

Худший ответ:
Хех, я так пронял, Вы схитропопить решили и подсунуть в CA обычный сертификат от комода, в расчете на то, что примет и можно будет выпускать сертификаты, в итоге подписанные комодом? 
Не, так не пойдет. Сертификаты CA - имеют специальную пометочку "я CA", которую комод Вам никогда не поставит. 
Вам нужно свой сертификат сгенерить, но он разумеется будет валидным только внутри Вашей конторы и то при условии распространения его политиками.
Вопрос: Стоит ли играть в игры на процессоре ryzen 5 pro 2400g, если температура свыше 70 градусов?

Лучший ответ:
Ничего страшного не произойдёт, если процессор начнёт сильно греться, то сработает система "тротлинг" и всё. И 70 градусов нормальная температура(в играх)

Худший ответ:
Я бы советовал сменить охлад или термопасту. Так юзать не советую.
Вопрос: Как составить запрос на последнего юзера, купившего товар?

Лучший ответ:
Такой запрос делается через оконные функции
SELECT `userID`, `productID`, `date`
  FROM (
    SELECT `userID`, `productID`, `date`,
           ROW_NUMBER() OVER `win` AS `row`
      FROM `table`
      WINDOW `win` AS (PARTITION BY `productID` ORDER BY `date` DESC)
  ) AS `t`
  WHERE `row` = 1

Худший ответ:
А если так?

SELECT
	Cust.Cust_User,
	Usr.User_Name,
	Cust.Cust_Prod_ID,
	Prod.Prod_Name,
	Cust.Cust_DateTime_Buy
FROM
	Customer as Cust
LEFT JOIN Customer Cust2 ON
	Cust.Cust_User = Cust2.Cust_User
	AND Cust.Cust_Prod_ID = Cust2.Cust_Prod_ID
	AND Cust.Cust_DateTime_Buy < Cust2.Cust_DateTime_Buy
LEFT JOIN Users as Usr ON
	Cust.Cust_User = Usr.User_ID
LEFT JOIN Product as Prod ON
	Cust.Cust_Prod_ID = Prod.Prod_ID
WHERE
	Cust2.Cust_ID IS NULL;
Вопрос: Как прокинуть WSL2 наружу?

Лучший ответ:
В Hyper-V Manager - Virtual Switch Manager для virtual switch WSL - поставьте External - тогда WSL должна будет получить внешний ip адрес от того-же DHCP сервера, что и сетевая карта в Windows.
Если в WSL стоит получение адреса не через DHCP, то
sudo ip addr flush dev eth0
sudo dhclient eth0
Если нужно руками настроить, то
sudo ip addr add 192.168.0.116/24 dev eth0

Для тех, кто ленится даже гуглить - есть даже готовый софт https://github.com/CzBiX/WSLHostPatcher

Худший ответ:
А второе решение оказлось простым: после перезагрузки винды все переадресации нормально заработали.
Вопрос: Почему обучение продвигается так медленно?

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

Худший ответ:
Не очень понятно закончил ли ты школу, но вопрос сколько лет ты учил в школе математику, и стал ли ты математиком?
Сколько лет ты в школе учил английский, и можешь ли ты сейчас общаться с англичанином на английском?
Сколько лет ты в школе учил "что угодно" и стал ли ты специалистом?

А тут около месяца учишь, и думаешь что этого достаточно, чтобы решать любые задачи?
Думай, ищи, смотри чужие решения и пытайся их осознать и переписать по-своему. И потрать на это больше времени и больше усилий.
А не твое - это если тебе не очень интересно этим заниматься, ибо мотивация должна идти изнутри.
Вопрос: Как скачать видео с kinescope?

Лучший ответ:
Вот тут нашел рабочее решение: https://forum.videohelp.com/threads/405706-Please-...

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

Лучший ответ:
Максим Компаниец, компьютеры очень даже хорошо себя "чувствуют" при непрерывной долгой работе. "Вредят" всем компонентам ПК и сокращают срок их службы, как раз таки, частные перезагрузки. Так что, на этот счет, можете не беспокоится.

В качестве мер для оптимальной работы ПК, могу посоветовать:
1. Перезагружать ПК как можно реже.
2. Не располагать системный блок ПК на полу. Так как, на полу системник будет намного быстрее накапливать внутри себя пыль. Лучше всего, чтобы он был на столе/тумбе. Ещё хороший вариант расположения - под столешницей рабочего стола, на специальных креплениях.
3. Чистить системный блок внутри и комплектующие от пыли, примерно раз в полгода или хотя бы раз в год. До блеска всё вычищать совсем необязательно, достаточно ручным пылесосом пройтись по всем компонентам, где явно скопилось много пыли.
4. Соблюдать температурный режим в помещении, где стоят ПК. В офисах, обычно, это не так актуально из-за постоянно работающих кондиционеров.

Худший ответ:
Это ж идеальные условия, наоборот, частые включения и выключения больше изнашивают и систему и электронику.
Фильтр на питании, адекватная температура в комнате, отсутствие вибраций и сильного электромагнитного поля - вот и всё, наверное
Вопрос: Почему тормозит код записи в MySQL после разбивки его на функции?

Лучший ответ:
Если вы делаете коннект к БД в каждой функции, то результат логичен. Коннект занимает в лучшем случае 0.2-0.5 секунды, в худшем - несколько секунд.
Используйте внедрение зависимости, подключайтесь к базе один раз с начале скрипта и передавайте подключение в экземпляр класса при его создании. Или по старинке используйте синглтон.

Худший ответ:
Во-первых, такой подход называется не функциональным, с процедурным. Функциональное программирование - это совсем другое.
Во-вторых, сама по себе разбивка кода на функции ни к какому замедлению не приводит. 
Проблема не в том, что много функций, а в том коде, который в них написан.

В целом, цифры какие-то дикие. Что 8 секунд, что 16, что 3. Для записи одного "продукта" нужно максимум 0.1 секунды, если всё очень сильно тормозит
Вопрос: Что не так с производительностью pygame и этим кодом?

Лучший ответ:
Вынесите блок с проверкой положения из цикла for event in pygame.event.get()

Худший ответ:
Замерь время выполнения отдельных участков кода через time.perf_counter(), узнай на чем оно задумывается.
По мне так наиболее вероятные кандидаты - pygame.event.get() и screen.fill().
Вопрос: Почему питон ругается на аргумент?

Лучший ответ:
Метод надо вызывать у объекта, а не класса.

Худший ответ:
Board - сам класс. Для обращения к самому экземпляру класса (созданному объекту) нужно использовать self.
т.е. нужно вызывать не
Board.mark_destroyed_ship(sh)
а
self.mark_destroyed_ship(sh)
Вопрос: Мультиязычный сайт — обязательны ли разные URL для одной страницы на разных языках?

Лучший ответ:
https://developers.google.com/search/docs/advanced...

обязательны

Худший ответ:
в сео продвигаются URL, именно по ним поисковик определяет что показать по тому или иному запросу.

Или обязательно делать что-то вроде domain.com/ru, domain.com/fr и т.д.?

имхо да.
Вопрос: В убунту можно сделать какое то уведомление, что то вроде «заканчивается оперативная память», и начинается использование свапа?

Лучший ответ:
И вот собственно интересует, можно ли как то включить какое то уведомления, что оперативка почти заполнена? 
ну так в чем проблема то ?
чтобы посмотреть память есть команда free или даже напрямую через cat /proc/meminfo
для вывода уведомлений можно использовать, к примеру, notify-send
чтобы всё это зациклить в баше есть while

while :;do if [[ "$(free | awk '$1=="Mem:"{print $2-$3}')" < $[1*1024*1024] ]];then notify-send 'Палундра' "Приближается пушистый северный зверёк";fi;sleep 1;done
вот простенький пример однострочника, где мы проверяем каждую секунду(sleep 1) память с помощью утилиты free и если(if) разница($2-$3) между total и used памятью(по умолчанию измеряется килобайтах) меньше чем 1 Гиг ( $[1*1024*1024] k) то мы начинаем бить тревогу выводя сообщение через утилиту notify-send

 Но время от времени браузеры слишком зажираются, и чтоб все не висло наглухо приходится страховать файлом подкачки.
zram спасёт отца русской демократии

Худший ответ:
А зачем вообще файл подкачки создавать???!!!

Если не ошибаюсь, с 17.10 отказались от обязательного создания SWAP-раздела и сделали так, что система сама при необходимости создаёт swap-файл.

А учитывая, что у вас 16 Гб, то я думаю, он вообще и автоматом не создаётся.
Вопрос: Симуляция купли/продажи блокчейн токенов ERC20 на тестовом сервисе. Как сделать?

Лучший ответ:
по твоей ссылке bscheck использует honeypot.is, который в свою очередь на этом блокчейне работает только с одним PancakeSwap

Не совсем понимаю, зачем нужна симуляция процесса, так как если контракт обменника известен, можно посмотреть ликвидность в пуле по самому блокчейну (другое дело что документация на это дело обычно скудная)

Могу предположить, что это чтобы не разбираться с самим контрактом и блокчейном, можно развернуть инфраструктуру обменника локально на своем изолированном сервере, подключить его к своей ноде, и для симуляции отключить ноду от интернета сразу перед созданием транзакции на обмен, в зависимости от того будет ли она создана и по какой цене (можно slippage tolerance по увеличивать чтобы оценить, на сколько пустой пул ликвидности)

Лично я бы это реализовал через создание снапшота машины, в которой запущена нода и приложение/браузер, в котором открыт обменник, запуска этого снапшота с отключенным интернетом, создании транзакции, посмотреть какая получилась или нет транзакция и удаление этого снапшота.

Худший ответ:
ты бро rPman описал слишком костыльный вариант решения для одной узкой задачи. чем больше "чтобы не разбираться" - тем больше "легко обойти".
А решение общей задачи сводится к реализации статического анализатора кода солидити с нужными правилами. чо хорошо - то, что куски кода парсинга кода (кода кода кода кода) можно выдергивать прямо из интерпретатора парсера солидити из EVM. 
на ноде я бы такое не решал.
Вопрос: Как правильно сверстать эти блоки?

Лучший ответ:
Как-то так https://codepen.io/YavaDev/pen/zYNevvE

Худший ответ:
примените ячейкам классы
https://getbootstrap.com/docs/5.0/utilities/borders/
<span class="border"></span>
<span class="border-top"></span>
<span class="border-end"></span>
<span class="border-bottom"></span>
<span class="border-start"></span>
У них должды быть и отзывчивые варианты.
Вопрос: Проблемы с ноутом Самсунг вылазит синий экран после того как винда прогрузилась?

Лучший ответ:
грузи в безопасном режиме и сноси дрова,
эксперементируй 

Худший ответ:
Дискретка АМД?
Недавно был случай такой циклической перезагрузки. Загрузился с live CD Linux, снёс этот файл, при загрузке винды запретил установку дров и отключил дискретное видео, винда заработала. Потом "потрогал" разные карты по Linux. На встройке - работает, на дискретке - не работает. Решили - пусть дальше живёт на встройке.
Вопрос: Существует ли нативный способ разделения чисел на разряды?

Лучший ответ:
Intl.NumberFormat

const number = 123456.789;

new Intl.NumberFormat('ru-RU').format(number);
// "123 456,789" по умолчанию { style: 'decimal' }

Но..
new Intl.NumberFormat('ru-RU', { minimumFractionDigits: 6 })
  .format(123456.789012345);
// "123 456,789012" - после запятой не разделяет

Худший ответ:
https://developer.mozilla.org/en-US/docs/Web/JavaS...
// Demonstrate selected international locales
var locales = [
  undefined,  // Your own browser
  'en-US',    // United States
  'de-DE',    // Germany
  'ru-RU',    // Russia
  'hi-IN',    // India
  'de-CH',    // Switzerland
];
var n = 100000;
var opts = { minimumFractionDigits: 2 };
for (var i = 0; i < locales.length; i++) {
  console.log(locales[i], n.toLocaleString(locales[i], opts));
}

результат
undefined '100 000,00'
en-US 100,000.00
de-DE 100.000,00
ru-RU 100 000,00
hi-IN 1,00,000.00
de-CH 100’000.00
Вопрос: Как починить отправку через smtp.mail.ru?

Лучший ответ:
однако интерфейс biz.mail.ru не позволяет создавать таких паролей (можно создать только для личного аккаунта - такой пароль тоже не работает). 
Вы просто не умеете создавать)  Все работает. В случае почты для домена,  нужно каждому юзеру загрузить новый пароль, по инструкции https://help.mail.ru/biz/domain/users-contacts/users   Раздел Массовое добавление пользователей. Нужно руками создавать CSV файл и загружать в веб морде, там где Пользователи.

Худший ответ:
сначала я парился с этими двумя паролями (пароль приложения, пароль пользователя) в настройках smtp (ввел первый, потом второй, потом в обратном порядке и т.п.). мало того что не получилось ничего пофиксить, так еще и мысли о будущем заставили меня просто удалиться с этого мойлсру (мало ли что им еще в голову придет?!). сейчас арендовал другой сервер и там налаживаю свою почту. целее будет
Вопрос: Как корректно отслеживать завершение потоков?

Лучший ответ:
У функции pthread_join()  есть неблокирующий вариант pthread_tryjoin_np()

Худший ответ:
Предлагаемый POSIX вариант это join. Если не устраивает, то вы сами можете конструировать проверку завершения потоков теми средствами какие вам удобно и какие доступны.

Самое простое: выставляйте в потоке атомарный флаг завершения, в основном потоке проверяйте.
Если можно подождать какое-то время, то можно использовать условную переменную с таймером, а не флаг.
Можно и очередь, но, по моему, это как из пушки по воробьям. Для этой задачи не совсем то. С тем же успехом можно использовать pipe. Но зачем, когда это можно сделать проще.

Имейте ввиду, что join все равно надо вызвать, когда удостоверитесь, что поток завершен. Чтоб окончательно освободить все ресурсы потока. Или надо заранее делать поток отсоединенным (detach). Я бы использовал join, а не detach.
Вопрос: Можно ли использовать бесплатный тариф на mongodb.com для блога?

Лучший ответ:
А как много данных вы собираетесь хранить? Не будет ли проще запустить на своем сервере docker-контейнер монги и сохранять все туда (если вдруг места нужно не много)?

UPD:
Не знаю откуда вы. Но если из России или РБ, то в текущих реалиях хранить данные лучше или на местных облаках иди в уже упомянутом докере. К сожалению, заграничные сервисы могут внезапно прокинуть вас и данные блога улетят в небытие.

Худший ответ:
Подводные камни в том, что бесплатный тариф даёт очень мало ресурсов.
Если тебе 512мб хранилища и негарантированных vCPU и RAM - дерзай.
В целом такой тариф для прода не рекомендуется.
Вопрос: Как через Django отправить Email, чтобы внутри был контент из HTML со стилями и картинками?

Лучший ответ:
Использовать html_message
send_mail(
        'Подтверждение регистрации', # Заголовок
        '', # Текстовое тело, которое не нужно
        settings.EMAIL_HOST_USER, 
        [mail],
        html_message=msg_html, # в html_message вставлять данные render_to_string
        fail_silently=False

    )

Худший ответ:
Для тех, кто хочет кастомный шрифт накатить, нашел сервис, где регаетесь (все данные кроме почты можно фейковое указать), дальше заходите в Email-шаблоны, создаете как хотите, добавляете шрифты через панельку, заходите в мои шаблоны три точки и качаете html, код там конечно ужас (но это норма в html-письмах), но шрифты работают, вроде даже адаптив под разные браузеры есть
getresponse.ru (не реклама)
Вопрос: Как перенести wim образ Windows 10 с bios на uefi?

Лучший ответ:
Не совсем понял, зачем танцы с wim? Задача ведь перейти на UEFI и заставить уже имеющийся Windows запускаться, при этом не мигрируя на другой диск, так? Windows 7 и выше умеет в оба варианта, на вскидку Вам надо просто создать EFI раздел(Места как правило нет, но можно попытаться сжать том, и отжать немного(инструмент на Ваш выбор, SystemRescueCD например)), а дальше Вам должны помочь bcdboot и bcdedit. По крайней мере я бы начал с этого.

Худший ответ:
Проверенная фишка: устанавливаешь 10ку в uefi, чистую, можно даже не устанавливать, а только создать разделы, но по простому- устанавливаешь. После установки раскатываешь образ системного раздела(ранее созданного со своей системы)в раздел созданный при установке и грузишься штатным образом. Без танцев с BCD. Надеюсь понятно объяснил
Вопрос: Как уникализировать параметры ПК, и обойти антифроды, отдав при этом все параметры ПК?

Лучший ответ:
купить VPS с Российским  IP
поднять на нем на 443 порту openvpn
подключиться к этому VPN с ПК
пустить весь трафф ПК через этот ВПН

Худший ответ:
прокси/VPN/ip хостинговых компаний спалятся на раз 

я знаю только одно дорогое решение - резидентные IP со всего мира
Вопрос: Как в Dictionary обратиться к элементу по индексу?

Лучший ответ:
Словарь не гарантирует сохранение порядка, потому если он важен - можно использовать специальный класс
https://docs.microsoft.com/en-us/dotnet/api/system...

var dict = new OrderedDictionary();
dict.Add("test1", 1);
dict.Add("test2", 2);
dict.Add("test3", 3);

var first = dict["test1"];
var second = dict[1];

Console.WriteLine(first); #1
Console.WriteLine(second); #2

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

Лучший ответ:
После покупки доменов и покупки самого простого тарифного плана хостинга, вы можете добавлять неограниченное количество доменных имен на свой серверный адрес.  Вам просто нужно будет изменить nameserver в панели управления доменным именем.  В reg.ru можно и домены купить и хостинг арендовать.  Для простецкой страницы самого простого тарифа будет достаточно.

Худший ответ:
пофиг, что домены несколько лет просто так валяются в сети "про запас" или для перепродажи/передачи?
У киберсквоттеров сотни доменов просто так "валяются" в расчете на то, что кто-то захочет их взять. Идете к регистратору, регите все нужные домены - и пусть они торчат в статусе "registered, not delegated". 
Если хотите чтобы направлялись все на один сайт - ну идете к хостеру (в этом случае у него можно и имена зарегить), берете самый дишманский тариф, лабаете одностраничник и направляете все домены на него.

Правда, кк на всем этом заработать - не знаю :) Это скорее о том, как потратить денег  :)
Вопрос: Как изучить ООП С#?

Лучший ответ:
В каких книгах можно получить полные сведения об ООП, о том как и где использовать его принципы или ,те или иные приемы ООП? -  ни в каких. Надо понять, что ООП не НЕ универсальное средство. Это инструмент создания больших и сложных проектов. Вам действительно дали азы и начала. Для общего понимания, для привыкания. А вот когда "дорастете" до серьезных проектов, начнете применять (а не по книгам "изучать") ООП на практике -  вот тогда и придут понимание.  Причем приходить будет постепенно, вместе с ростом вашего опыта. Бесполезно на уровне "изучаю язык программирования по книгам" беспредельно углубляться  в тему, в ООП в том числе. Начните писать реальные проекты. Причем, для первых, несложных проектов ООП тоже будет либо ни к месту, либо даже вредно.  Но вот потом, когда задачи станут действительно сложными -  вот тогда все станет на свои места. И вот тогда можно будет сказать, что вы знаете, понимаете и к месту применяете ООП. 
Хотя, разумеется, сейчас набегут сюда новички, которые наперебой начнут советовать всякие книги и сайты для того что бы быстрее стать "профессионалам".  В этом и есть прелесть получения подсказок на форуме -  в том, что вам насоветуют десяток разных вариантов решения проблемы. А вот выбор -  все равно останется за вами.

Худший ответ:
На практике. +любая нормальная книга по паттернам, отедльно по алгоритмам и структурам.
Вопрос: Гибрид Arch & Debian?

Лучший ответ:
Есть

Худший ответ:
Можно поставить систему используя debootstrap и получить реально минимальное количество нужных паектов.
По аналогии с pacstrap в арче.
Вопрос: Какие есть способы облегчения процесса тестирования и редактирования кода?

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

Худший ответ:
Я знаю, что существует терминал и вроде как можно проверить кусочек кода там...
Для отладки кусочков я пользуюсь всякими онлайн сервисами. В гугле набираешь <язык_программирования> online". Например: https://www.google.com/search?q=python+online . Только надо обращать внимание на доступные/предлагаемые версии интерпретаторов.
Вопрос: Стекирование и подключение коммутаторов?

Лучший ответ:
Кабелем и осуществляется. Иногда для повышения надежности/скорости используют агреггирование каналов, или кидают два подключения и используют STP для того, чтобы он выключил одно из них - в случае обрыва первого, будет автоматический failover

Выбор способа подключения целиком зависит от решаемой задачи.

Худший ответ:

Свитч и коммутатор - одно и то же.
Стекированные свичи следует воспринимать как один свич, просто собранный в двух корпусах.
Коммутатор уровня распределения - это просто коммутатор. Попадающий в озвученную категорию по своим характеристикам.


Так что задача, если разобраться, тривиальная - просто соединить два коммутатора.