Pull to refresh

Секретная китайская плата: контроллер стиральной машины

Level of difficultyEasy
Reading time8 min
Views36K


Привет, Хабр! Лучшее профессиональное образование — максимально приближённое к реальной жизни. Как минимум в этом смысле пособия для конкурсов и экзаменов по электронике в китайских колледжах заслуживают звания одних из лучших.

Сегодня мы будем собирать почти настоящую плату управления стиральной машины и изучать алгоритмы её работы.

Разработчики набора не забыли добавить традиционную парочку ошибок, чтобы работа испытуемого заключалась не только в аккуратной установке деталей по предложенной схеме, но и сопровождалась пониманием того, как она должна работать, и что необходимо изменить, чтобы она заработала как надо.
Читать дальше →
Total votes 51: ↑61 and ↓-10+71
Comments57

На чём изучают электронику китайцы? Контроллер светофора

Level of difficultyMedium
Reading time8 min
Views14K


Привет, Хабр! Сегодня мы изучим ещё одну секретную китайскую плату, предназначенную для экзамена по электронике.

Разработчики этого учебного пособия уделили особое внимание распространённой микросхеме прецизионного интегрального таймера КР1006ВИ1 (NE555), про особенности и возможности которого многие из нас смогут узнать немало нового.
Будет интересно!
Total votes 35: ↑34 and ↓1+33
Comments10

Матрицы помогают в олимпиадных задачах

Level of difficultyEasy
Reading time3 min
Views6.1K

Мы разберём несколько красивых комбинаторных задач, которые решаются элементарно – стоит перевести их условие на матричный язык. А как решать без матриц – непонятно. Вообще, теория матриц имеет огромную сферу применения в том числе в комбинаторике, теории графов.

Задача 1 (ШАД). В ШАД поступили всего 10 студентов. Кураторы решили ограничить число доступных курсов и придумали набор простых правил:

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments2

Открытый Турнир по программированию на 1C и SQL

Reading time1 min
Views1.7K

Привет! Мы — IT-интегратор «Автомакон» 👋🏻

Приглашаем 1С-ников и SQL-щиков принять участие в IT-турнире c призовым фондом 400 000 рублей! Регистрация по ссылке

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments9

Задачка из реальной жизни: Как восстановить дерево процессов в Linux

Reading time2 min
Views9.4K
Мы разрабатываем проект CRIU (Checkpoint/Restore in Userspace) и у нас возникла достаточно интересная задача о том, как восстановить оригинальное дерево процессов. Я предлагаю вам попытаться решить ее.

Задача


CRIU — это утилита, которая позволяет сохранить состояние процессов на диск и постановить их позднее на этой или на любой другой машине. Одной из подзадач восстановления является нахождение последовательности действий для того, чтобы восстановить дерево процессов. Входные данные содержат набор параметров для каждого процесса: уникальный идентификатор (PID), ссылку на родителя (PPID), идентификатор сессии (SID).

image
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments12

Динамическое программирование в олимпиадных задачах

Reading time5 min
Views19K
Привет!

Недавно решал задачи с архива Timus Online Judge и наткнулся на раздел под названием задачи динамического программирования. Задачи такого типа вызывают у меня особый интерес, потому что зачастую такой подход обеспечивает быстроту и элегантность решения. Что же такое — динамическое программирование?

Динамическое программирование — это подход к решению задач, при котором происходит разбиение на подзадачи, которые «проще» в сравнении с исходной. Слово «динамический» близко по значению к «индуктивный»: предполагается, что известен ответ для какого-то значения $k$, и хочется найти ответ для $k+1$. В математике это называется индуктивным переходом, и составляет основную идею динамического программирования.

Простые примеры


Наиболее яркой и показательной задачей является задача вычисления $n$-ого числа последовательности Фибоначчи.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments3

Джулия в лабиринте

Reading time11 min
Views10K


Разбирая одну олимпиадную задачу мы отправимся по петляющим коридорам генерации лабиринтов и их прохождения, а также увидим, что на языке Julia простота реализаций алгоритмов граничит с их псевдокодом.

Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments12

Ozon go school: Как не нужно проводить отбор

Reading time9 min
Views41K

Go School


Как вы знаете, в середине мая Ozon объявил о запуске школы программирования на языке Go. Обещали следующее:

  • бесплатное обучение
  • возможность получить знания по реальной разработке на Go от Ozon
  • возможность получить работу в Ozon

Чтобы попасть в школу, нужно было:

  • иметь опыт промышленного программирования
  • пройти тестовые задания по программированию на платформе Яндекс.Контест
  • пройти skype-собеседования

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

Тогда же было озвучено число студентов, которое готовы принять в Школу — около 40 человек.

Так понемногу условия поступления прирастали новыми пунктами, среди добавленных также значилось:

  • желательно проживать в Москве
  • быть гражданином РФ
  • возраст старше 18 лет

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

Вроде все выглядело неплохо, условия не такие сложные и вполне выполнимые.


Читать дальше →
Total votes 139: ↑134 and ↓5+129
Comments107

Спортивное программирование — социальный лифт в IT. Как его использовать школьнику, родителям школьника и разработчику?

Reading time12 min
Views12K

С какого возраста можно обучать ребенка программированию и какой язык лучше выбрать? Как попасть на самые крутые IT-направления в лучшие вузы? Становятся ли дети разработчиков разработчиками? Как попасть на стажировку в Яндекс или на работу в Google?

Обо всем этом нам рассказывает Михаил Рубинчик — лидер и главный тренер по спортивному программированию в Уральском федеральном университете и основатель онлайн-школы по спортивному программированию SPGuide. Подробности под катом

Читать далее
Total votes 10: ↑6 and ↓4+2
Comments30

Проверка корневых структур на изоморфизм

Level of difficultyMedium
Reading time3 min
Views3.5K

Задача проверки корневых (под)деревьев на изоморфизм является достаточно известной в рамках олимпиадного мира, однако представленная большинством авторов реализация основывается на неэффективном полиномиальном хэшировании. Проблема данного метода заключается в возможных возникновениях коллизий. В данной статье описан более простой метод, использующий красно-черное дерево (в народе std::map) за ту же асимптотику.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments4

Задачи второго этапа олимпиады «IT-Планеты» по PostgreSQL

Reading time16 min
Views7.2K

В этом году наша компания впервые провела конкурс по базам данных в рамках международной олимпиады IT-Планета по информационным технологиям. Раньше на олимпиаде использовалась СУБД Oracle; наш коллега Евгений Бредня в свое время делился таким опытом.

Олимпиада проходила в три этапа. Первым шел заочный теоретический тест, который преодолели примерно двести человек из двух тысяч зарегистрировавшихся.

На втором этапе участникам было предложено подумать над пятью задачами, каждую из которых следовало решить одним SQL-запросом. Этот этап также проводился заочно: на раздумья было дано примерно три недели. Условия всех задач были опубликованы одновременно, но у каждой был свой крайний срок; поэтому первыми шли задачи полегче, чтобы на более сложные осталось больше времени. Задачи проверялись на корректность (автоматическими тестами) и на качество кода (вручную). По результатам мы отобрали двадцать человек для последнего, очного этапа.

Третий этап состоялся 27 мая в Сочи. К сожалению, из двадцати приглашенных приехать смогли только четырнадцать; между ними и состоялось соревнование. Задачи этого этапа также предполагали решение одним запросом, но сами задания были объединены общей темой, навеянной игрой Го, и строились так, что решение одной задачи помогало подступиться к следующей.

Я занимался придумыванием задач для второго и третьего этапов. Хочу поблагодарить участников олимпиады, которым пришлось их решать, организаторов, собравших нас вместе, и своих коллег: Дарью Рисухину, взвалившую на себя все оргвопросы, Евгения Моргунова, предоставившего задания для первого этапа, а также всех помогавших мне с задачами.

Поговорим о втором этапе
Total votes 18: ↑18 and ↓0+18
Comments3

Полиномиальные хеши и их применение

Reading time9 min
Views85K
Здравствуй, хабр. Сегодня я напишу, как можно использовать полиномиальные хеши (далее просто хеши) при решении различных алгоритмических задач.

Введение


Начнем с определения. Пусть у нас есть строка s0..n-1. Полиномиальным хешем этой строки называется число h = hash(s0..n-1) = s0 + ps1 + p2s2 +… + pn-1sn-1, где p — некоторое натуральное число (позже будет сказано, какое именно), а si — код i-ого символа строки s (почти во всех современных языках он записывается s[i]).

Хеши обладают тем свойством, что у одинаковых строк хеши обязательно равны. Поэтому основная операция, которую позволяют выполнять хеши — быстрое сравнение двух подстрок на равенство.
Читать дальше →
Total votes 74: ↑69 and ↓5+64
Comments41

Разбор задачи с Международной олимпиады по информатике IOI 2016

Reading time8 min
Views25K
image

В августе этого года в Казани прошла Международная олимпиада по программированию для школьников — IOI 2016. Российская команда стала второй в общем зачете.

Один из серебряных медалистов, Денис Солонков из г. Мытищи, сделал разбор задачи «Обнаружение молекул», которая предлагалась участникам олимпиады.

Денис Солонков — многократный победитель Всероссийских олимпиад по программированию и Moscow CTF School, выпускник Школы программистов, ныне студент ВШЭ.
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments5

Задачи третьего этапа олимпиады «IT-Планеты» по PostgreSQL

Reading time13 min
Views8.5K

В шахматы меня когда-то легко обыгрывал восьмибитный компьютер, а действующего чемпиона мира IBM-овский Deep Blue одолел уже в 1997 году. Но игра Го держалась значительно дольше: победить обладателя девятого дана Ли Седоля удалось только в 2016 году компании Гугл с машиной AlphaGo. В Го простые правила, которые, однако, приводят к очень сложным стратегическим построениям. Ровно то, что нужно: простое условие, не дающее намека на то, как справиться с задачей одним SQL-запросом. Тема Го и легла в основу задач финала олимпиады, про которую я уже начал рассказывать в прошлый раз.

Финал проходил в Сочинском государственном университете. Пользуясь случаем, хочу сказать спасибо гостеприимным сотрудникам университета и организаторам, оперативно устранявшим все трудности.

Поговорим про задачи
Total votes 12: ↑12 and ↓0+12
Comments10

Секретная плата с китайской олимпиады по электронике

Level of difficultyMedium
Reading time8 min
Views34K


Привет, Хабр! Сегодня мы соберём, изучим и заставим работать радиоконструктор «кодовый замок», авторы которого подошли к его созданию весьма творчески.

Здесь и секретный код, который нужно расшифровать, и нестандартное применение десятичного счётчика-дешифратора К561ИЕ8 (CD4017), и две ошибки, намеренно внесённые в плату. К обычному мультивибратору на КР1008ВИ1 (NE555) добавлены RC-фильтры, позволяющие наблюдать изменение формы сигнала.

А ещё имеются тиристор и тональный декодер на специализированной микросхеме ФАПЧ УР1101XA01 (LM567). Так на печатной плате размером 112 на 68 мм разместился целый мир электронных приключений.
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments15

Секретная плата с китайского экзамена по электронике

Level of difficultyEasy
Reading time8 min
Views55K


Привет, Хабр! Китай является мировым лидером в производстве электроники во многом потому, что имеет систему образования, ориентированную на развитие этой отрасли.

Сегодня мы исследуем интересное учебное пособие из Китая, предназначенное для проверки базовых знаний по схемотехнике и умения собирать и налаживать электронные приборы.
Читать дальше →
Total votes 84: ↑81 and ↓3+78
Comments40

Олимпиадное хобби. Разминка

Reading time3 min
Views5.4K
В качестве хобби, я решаю олимпиадные задачки по программированию. Это помогает отвлечься от повседневных проблем, позволяя на часок другой уйти от мира в собственный астрал. Мой мозг, благодаря этому хобби, находится в постоянной спортивной форме.

Я решил, что неплохо было бы поделиться с Вами алгоритмами, размышления, результатами, а также получить качественную критику моих путей решения задач.
Будем брать задачу, разбирать ее по частям, анализировать, выдумывать различные пути решения, выбирать лучший, а потом нести на суд «великих судей». Для многих, по моему мнению, такой час разгрузки будет очень полезным, а кому-то просто будет интересно посоревноваться и придумать свой алгоритм.

Задачи я буду брать с сайта http://uva.onlinejudge.org/, где располагается достаточно большая коллекция задач на любой вкус, и там же можно проверить свое решение. Выбирать буду случайным образом и всегда доводить начатое до финального решения, которое ознаменуется оценкой «Accepted» (Принято). Для решения этих задач нам потребуется знание одного из языков программирования: c, c++, java, pascal, а также терпение, логика и базовое знание английского языка, т.к. условия задач мы получаем на английском языке.

Итак, начнем мы с простой задачки из набора «Для новичков» для разминки, чтобы проверить свои способности.
Читать дальше →
Total votes 53: ↑46 and ↓7+39
Comments19

Разбор задач Hacker Cup Qualification Round + перенос Facebook Hacker Cup Online Round I

Reading time5 min
Views5.1K
Facebook Hacker Cup 2011 проходит в 4 раунда — квалификационный, два онлайн раунда и финальный, в главном офисе.

Квалификационный раунд, анонсированный официально Хабром завершился успешно.
Результаты раунда говорят о 5846 игроках, прошедших в первый онлайн тур.
Участникам квалификационного раунда предлагалось 3 задачи, для прохождения достаточно было правильного решения любой из них.

А вот первый онлайн раунд, прервав ближе к завершению, перенесли из-за технических проблем минимум на неделю:
We've decided to push back the remaining subrounds of round 1 until we are sure that they can run smoothly. Updates will follow here, but you can safely assume that the subrounds will not occur at least until next weekend.
image
Читать разбор задач Facebook Hacker Cup 2011 Qualification Round
Total votes 50: ↑42 and ↓8+34
Comments75

Динамика по подотрезкам: базовые вещи и «одна хорошо, а две лучше»

Reading time8 min
Views20K
Добрый вечер.
В этом посте я разберу задачу B «Дубы» с практического тура городской олимпиады школьников Санкт-Петербурга по информатике.
Задача эта на динамическое программирование по подотрезкам и идея решения интересна тем, что удобнее посчитать две динамики вместо одной. Если вас заинтересовало (незнание динамики не освобождает, но будет труднее) — добро пожаловать.
Читать дальше →
Total votes 32: ↑25 and ↓7+18
Comments11

Динамическое программирование. Классические задачи

Reading time8 min
Views324K
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

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

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

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →
Total votes 105: ↑97 and ↓8+89
Comments72
1