Приветствую всех, сегодня я покажу как можно использовать небезопасный код в сишарпе. В небезопасном коде или другими словами неуправляемого кода можно объявлять и использовать указатели. Но вопрос в том, почему мы пишем неуправляемый код? Если мы хотим написать код, который взаимодействует с операционной системой, или хотим получить доступ к памяти отображаемого устройства или хотите реализовать […]
Решения задачи с Ulearn
Практика «Счастливые билеты» Необходимо посчитать количество «счастливых» билетов с заданной суммой цифр, среди тех, номер которых состоит из 2N разрядов. «Счастливым» является билет, у которого сумма первых N цифр равна сумме N последних цифр. Решение выполните в проекте Tickets Источник задачи — acm.timus.ru // Вставьте сюда финальное содержимое файла TicketsTask.cs using System; using System.Numerics; namespace […]
Решения задачи с Ulearn
Практика «Оптимизация Жадины» Продолжайте в том же проекте. Скорее всего алгоритм, реализованный для прошлой задачи не слишком быстро работает на некоторых лабиринтах. Оптимизируйте его так, чтобы тесты в классе TimeLimit_Tests проходили! Тесты на предыдущую задачу тоже должны завершаться успешно. // Вставьте сюда финальное содержимое файла GreedyPathFinder.cs using System.Collections.Generic; using System.Drawing; using System.Linq; using Greedy.Architecture; using […]
Решения задачи с Ulearn
Практика «Вынести клад!» Продолжайте в том же проекте Dungeon. Подготовка закончилась и вы в настоящем лабиринте с сокровищами! Сил хватит только на один сундук и то еле-еле. Найдите кратчайший путь из начальной точки до выхода, проходящий через хотя бы один сундук. Решайте задачу в классе DungeonTask. Детали реализации для граничных случаев можно найти в классе […]
Решения задачи с Ulearn
Практика «Статистика» Продолжайте в том же проекте linq-slideviews. В файле StatisticsTask реализуйте метод GetMedianTimePerSlide. Он должен работать так. Обозначим T(U, S) время между посещением пользователем U слайда S и ближайшим следующим посещением тем же пользователем U какого-то другого слайда S2 != S. T(U, S) можно считать примерной оценкой того, сколько времени пользователь U провел на […]
Решения задачи с Ulearn
Практика «Уровни» Продолжайте в том же проекте rocket. В этой задаче в классе LevelsTask нужно добавить в игру ещё несколько уровней. В результате должны быть следующие уровни: Zero. Нулевая гравитация. Heavy. Постоянная гравитация 0.9, направленная вниз. Up. Гравитация направлена вверх и значение её модуля вычисляется по формуле 300 / (d + 300.0), где d — […]
Решения задачи с Ulearn
Практика «Простые команды Brainfuck» Продолжайте работу в том же проекте brainfuck. Изучите класс Brainfuck.cs, в частности то, как он использует реализованный ранее класс VirtualMachine. В классе BrainfuckBasicCommands реализуйте метод, регистрирующий следующие простые команды в виртуальную машину: Символ Значение . Вывести байт памяти, на который указывает указатель, преобразовав в символ согласно ASCII + Увеличить байт памяти, […]
Решения задачи с Ulearn
Практика «Ghosts» Скачайте проект ghost. Неаккуратная реализация Equals и GetHashCode может приводить к тому, что добавленный в Dictionary или HashSet ключ внезапно исчезает. Чтобы не попадаться на подобные ошибки в будущем, в этом задании предлагается поизучать всевозможные подобные ошибки. В проекте вам даны несколько классов с уже реализованными GetHashCode и Equals. Вам нужно придумать, как […]
Решения задачи с Ulearn
Практика «Readonly bytes» Скачайте проект readonly-bytes. Иногда есть смысл в качестве ключей в Dictionary или HashSet использовать массивы байт. Однако по умолчанию массивы сравниваются по ссылкам, а не по содержимому, а часто нужно именно по содержимому. В таких случаях можно написать класс-обёртку над массивом, который переопределит Equals и HashCode так, чтобы сравнение происходило по содержимому. […]
Решения задачи с Ulearn
Практика «Скользящее среднее» Продолжайте работу в том же проекте Smooth В классе MovingAverageTask реализуйте функцию скользящего среднего. При усреднении с окном размера W, первые W-1 точки результата в действительности должны усредняться по окнам меньшего размера. Так, первая точка должна попасть в результат без изменения. Отладьте реализацию с помощью приложенных модульных тестов. Запустите тестирующее приложение и […]
