Archive for the ‘Домашние задания’ Category

Домашнее заданее на июль месяц

Wednesday, July 7th, 2010

Всем привет!
Последнее домашнее задание явно показывает, что многим нравиться делать небольшие и несложные домашние задачки. По-этому вот вам ещё одна! =)

Задание:
Надо написать метод, которые переставляет первые n элементов массива в конец этого массива. При этом есть одно ограничение: Использовать можно только один (данный) массив.

Т.е. реализовать такой вот метод:
Object[] moveNElementsToTheEnd(Object[] initArray, int n), где входной массив [1, 2, 3, 4, 5, 6, 7] с n=3 должен выдать [4, 5, 6, 7, 1, 2, 3].

Как обычно код предоставляем в комментариях в виде ссылок на сайты типа http://codepad.org/ или http://pastebin.com/. Язык написания – любой, качество написание (уровень говнокодистости) – любой.

И ещё одна деталь – если возможно, там же в листинге кода оставьте какой-нибудь лог промежуточных состояний этого массива во время выполнения алгоритма для массивов чисел от 1 до 10 и от 1 до 13! (т.е. конкретно то, что выдаёт программа во время запуска)

Удачи и до встречи на следующем, Июльском девклабе!!

Домашнее задание на июнь

Monday, May 31st, 2010

Привет!
Следующая встреча DevClub состоится в конце июня (дата уточняется).

Но уже сейчас у нас есть домашнее задание для закрепления материалов последней встречи. Победитель получит признание соплеменников и ценный приз!

Задание: Напечатать на экране следующее:
1
2-1
1-2-3
4-3-2-1
1-2-3-4-5
6-5-4-3-2-1
(Естественно, вместо 6 может быть любое число).

Внимание! Необходимо представить два решения на любом языке:
1. Максимально лаконичное/красивое/читабельное
2. Максимально говнокодистое (но не слишком много. Скажем, ограничение в один экран.)

Решения можно представить в комментариях к этому посту со ссылкой на код в http://pastebin.com либо послать на адрес andrei[тчк]solntsev[сбк]gmail[тчк]com.

Ждём ваших решений!

ДЗ: Разминка для мозга

Wednesday, May 12th, 2010

Предагаем поупражнятсья в написании простенькой программы. Приглашаются все желающие. Выбор языка программирования за вами – хотите, пишите на Clojure, Scala, JavaScript или Python, а хотите – пишите на Brainf*ck, нам всё равно :) Оцениваться будет элегантность и простота решения, так что не стоит заморачиваться на супер-пупер-оптимальный алгоритм.

Итак, задание:

Дано дерево (структура данных такая), вершины которого имеют некий вес (размер) в условных единицах (у.е). Подразумевается, что дерево это надо переслать из системы А в систему Б по “трубе”, пропускная способность коей ограничена заданной величиной. Задача состоит в том, чтобы разбить это дерево на поддеревья, так чтобы максимально эффективно использовать канал передачи данных с возможностью сборки изначального дерева на стороне получателя.

Иллюстрация к заданию

Исходное дерево:

Обратите внимание что дерево никак, не отсортировано – такое условие задачи!

buffer=40 означает, что пропускная способность канала будет 40 у.е., тем самым разбитое на части дерево будет выглядеть примерно так:

Таким образом, мы видим, что при разбивке получилось 3 дерева, размер которых не привышает 40 у.е.

Решения предлагаем присылать ссылкой на код в http://pastebin.com. Ждём ваших решений! Решившим респект и уважуха, а лучшему решению (по очень субъективным оценкам) – приз!

Кому лень придумывать свои данные для проверки, вот вам вариант для проб, копируйте как есть:

buffer=40
A,8,-
B,9,A
C,1,A
D,14,B
E,4,D
F,7,D
G,11,F
H,22,F
I,17,C

Домашнее задание. Паттерны.

Monday, February 15th, 2010

Всем добрый день.
Как вы помните на нашей предыдущей встрече Игорь Меньков обещал дать домашним заданием задачку по паттернам. Оно перед вами. Итак:

Необходимо создать систему для обслуживания частных и корпоративных клиентов используя веб приложение.

Требования к системе:

  • Доступ 24/7
  • 10 000 – 200 000 уникальных пользователей
    1. Максимум 3 000 одновременных пользователей
  • Эргономичный интерфейс
  • Интеграция с back-end системами
    1. Часть данных будет специфична только для данной системы
  • Наличие cache для увеличения производительности
  • Обеспечение целостности сохраняемых данных
  • Обеспечение одновременного доступа к данным для нескольких пользователей
    1. Гарантия изменений только последней версии данных
  • Маштабируемость

Задание:

  • Выбрать платформу для данной задачи
  • Выбрать любой(-ые) фреймворки для реализации системы
  • Определить какие шаблоны (паттерны) будут использованы, для чего
  • Желательно не просто назвать паттерн, но также описать его использование
    1. Просто текстом
    2. UML
    3. Ссылка на внешний ресурс с описанием

Оценивание:

  • В первую очередь будет оцениваться целостность решения
  • Во вторую очередь оценивается описание используемых паттернов
  • Количество паттернов будет учитываться, но не будет являться основным критерием

Ваши варианты решения отправляйте по адресу igor[тчк]menkov[собака]helmes[тчк]ee не позднее 25го февраля. Победитель будет обьявлен на встрече 26го февраля.

Домашнее задание для встречи 26.01

Friday, January 15th, 2010

Привет, чертяки!

Мы возобновили практику домашних заданий. Как и раньше, к следующей встрече будет предложена простенькая задачка, победитель будет объявлен на встрече 26 января.

Задача: в дереве ревизий CVS надо найти последнюю ревизию в данной ветке. cvs-tree

Например, на рисунке справа есть две ветки: “experiment1″ и “experiment2″. В ветке “experiment1″ последняя ревизия – 1.3.2.4, а в ветке “experiment2″ – 1.3.4.1

Поскольку пример из жизни, то уже есть две реализации этой задачи.

Первая реализация – короткая, но некорректная. Она не учитывает случай, когда ревизия была удалена (см. картинку).

Вторая реализация – корректная, но громоздкая.

Домашние задание состоит в том, чтобы написать корректно и лаконично. Кто как может. Кому как нравится. Можно использовать любой язык программирования. Приветствуются методы и языки, о которых шла речь на двух последних встречах (Функциональное программирование, Python, C#, Haskell, Scala, Scratch, Alice :) ).

Ответы и вопросы можно писать здесь в комментариях или по мылу andrei punkt solntsev koer gmail punkt com. Если вы не хотите, чтобы ваше решение показывали кому-либо, укажите это в письме.

Удачи!

case-study. В шкуре архитектора.

Friday, September 18th, 2009

Игорь Меньков предложил кейс, который позволит немного размять мозги :) Как раз для настоящих джедаев!

Так вот: Клиенту требуется система, которая будет обрабатывать различные документы, связанные с бизнес процессами. Все формы документов должны быть доступны работникам компании из любой точки мира в любой момент времени.

Формы документов могут со временем меняться:
·         содержание форм
·         бизнес логика
·         валидации

При заполнении и обработке документов используются вспомогательные данные:
·         Классификаторы
·         Дополнительные данные для бизнес логики

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

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

Задачка (предварительно надеть шляпу архитектора):

1. Какую платформу можно использовать для разработки данной системы?
2. Какие будет общий технический дизайн (на уровне шаблонов проектирования) реализации требований, приведенных в данном описании?
3. Какая должна быть команда, которая будет работать над проектом?
4. В чем должна быть ваша роль, как архитектора в этом проекте? Или ее отсутствие с обоснованием.
5. Какие будут затраты на поддержку системы после ее внедрения?

Дополнительная информация:
1. Задача является абстрактной.
2. Каждый участник может задать один дополнительный вопрос здесь в посте.
3. Уровень детализации решения каждый участник задает для себя сам. При желании, можно обосновать почему был выбран именно такой уровень детализации.

Дерзайте! Как водится у нас, лучшему ответу придумаем какой-нибудь приятный бонус! Ну и место в первом ряду на предстоящей встрече :) Ответы сюда или на мейл Igor тчк Menkov [a] helmes.ee

Задача: 50х50х50 (почти реальная история)

Wednesday, August 12th, 2009

Пытаясь сделать напряжение мозгов дома (или во время рабочего перерыва) очередной традицией нашего Клуба, предлагаю вашему вниманию ситуационную задачу по мотивам июльской встречи на тему ИТ-бизнеса. (more…)