Vladimir's profileImprove your skill © 200...BlogGuestbookNetwork Tools Help

Improve your skill © 2008

Vladimir Myasnikov

Location
October 27

Improve your skill of C# programming. Часть 1. Введение.

Где-то месяц назад читал курс от Microsoft 2124 “Programming with C#”. Курс простой и дает базовое знание синтаксиса C# для программистов, которые хотят научится на нем писать. В итоге вспомнил много интересного.

В общем те, кто хочет научиться писать на C#, могут почитать посты в моем блоге из серии “Improve your skill of C# programming”. Расскажу, все что знаю.

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

October 14

Буй!

Исчезаю до ноября, там отпуск и более-менее свободное время =)

Задача №6. О квартире

Правила решения задач можно прочитать тут.
О квартире.

Диспетчер скорой помощи принял вызов. Он спросил адрес, номер квартиры, но забыл узнать номер подъезда и этаж Эта информация ему необходима для того, чтобы врач быстрее добрался до больного. Диспетчер был опытный. Он вспомнил, что в этот дом уже были вызовы, в которых были указаны и номера квартир, и этажи, и подъезды.

Помогите диспетчеру вычислить этаж и подъезд для квартиры N, если известно, что квартира с номером M в этом  доме располагается в подъезде P (P > 1) на этаже K, а дом имеет L этажей, и на каждой площадке расположено одинаковое количество квартир.

Входные данные

Первая строка входного файла содержит целое число N (0 < N < 500) — номер квартиры, откуда поступил вызов.Вторая строка состоит из четырех целых чисел M, P, K, L, записанных через пробел, обозначающих, соответственно, номер квартиры, подъезд и этаж также количество этажей в доме.

Выходные данные

Выходной файл состоит из одной строки, в которой через пробел записан номер подъезда и этаж для квартиры N.

Если из входных данных нельзя узнать номер подъезда или этажа, то на соответствующем месте должна стоять строка 'UNK'

Пример

Входной файл: input.txt  Выходной файл: output.txt
100     

50 2  4  9

3 7
2
1 1 1 9
1 UNK
10
1 1 1 9
UNK UNK



October 09

Soup. Videos.

Я снова подсел на творчество этого человека.
 
 
 

October 05

Пять секунд - полет нормальный..

Итак, через SCART я-таки подключил. В чем была проблема ранее - непонятно. Первые ощущения довольно смешанные.. С одной стороны все кажется супер, потому что консоль работает, потому что есть что поизучать и т.д. и т.п. Но вот в Call Of Duty 4  я играю с трудом, уж очень сложно играть в FPS используя джойстик, и это немного портит ощущения клевости приставки. Хочется каких-нибудь гонок или файтингов.
Посмотрим, может привыкну к управлению.=)
Вообще очень хочется проходить все игры по-максимуму, т.е.до 1000 очков за ачивменты.
October 04

А провода-то нет=(

Обшарив пару магазинов в городе, так и не нашел провод для подключения Xbox к монитору. Теперь ненавижу Техносилу с ее вечно занятыми консультантами, которые тебя вообще не замечают, а если их о чем-то спросить, то отмахиваются со словами "Изззните, я ща занят. Как только освобожусь, я вам помогу." В итоге меня в магазине заметили, только через минут 10 моего стояния посреди зала. Бррр.. не пойду больше в Техносилу.
Сегодня сделал предзаказ в Техносити. Должны позвонить в понедельник. Но я завтра еще еду в Мегу, где теоретически этот провод могу встретить. Так что либо завтра покупаю в Меге, либо жду следующей недели.

А пока первые ощущения от Xbox'а, хоть и не работающего(пока).
1. Джойстик оказался на удивление удобным. Приятно держать в руках. Но только играя в игры, наверное, смогу научиться автоматически нажимать на все эти кнопки.
2. Сам XBox пока что думаю как поставить(стоя или лежа). Стоя не очень хочется, потому как нельзя двигать, когда там диск(двигать-то не собираюсь, но все-таки мало ли что..).

Вроде все.
October 03

Xbox доставили.

Ну, вот! Xbox Наконец-то приехал из Москвы. Пробное подключение к старенькому телевизору прошло неудачно, т.к. не было ни звука, ни изображение(скорее всего из-за того что SCART не работает). Поэтому завтра вечером куплю провод для подключения к монитору и сделаю новую попытку.

September 28

Задача №5. О выражении

Правила решения задач можно прочитать тут.
О выражении

Условия
Регулярное выражение строится по следующим правилам. Все символы, кроме символов *.+(), означают самих себя. Символ . означает любой символ, * - 0 или более повторений предыдущего символа, + - 1 или более повторений предыдущего символа. Регулярное выражение, заключенное в скобки, рассматривается конструкциями * и + как один символ. Вам предстоит написать программу, определяющую, соответствует ли заданная строка заданному регулярному выражению.

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

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

Пример

input.txt

output.txt

(ма)+ .*у
мама мыла раму
рама мыла маму
мама раму мыла
мама не мыла раму
мама мыла раму
мама не мыла раму

September 24

nVidia Goggles

stereoscopic_02_sm

nVidia, кажется, всерьез рассчитывает перевернуть мир электронных развлечений своей свежей разработкой - 3D Goggles, очередными стереоскопическими "очками виртуальной реальности" для подключения к компьютеру. В недалеком прошлом такие штуки уже неоднократно появлялись на рынке, но завоевать хоть какую-то популярность не смогли "благодаря" удивительно разрушительному влиянию на зрение и самочувствие пользователя. nVidia клянется не повторять ошибок первопроходцев и заняться эргономикой самым серьезным образом. Техническая составляющая, между тем, оригинальность не блещет: видеокарта отсылает на монитор поочередно кадры для левого и правого глаза; очки синхронизируются с монитором и поочередно "открывают" глаза пользователя. Картинка, таким образом, приобретает удивительную глубину и правдоподобность. Для всего этого счастья, правда, потребуется специальный монитор с разверткой не менее 120 Гц, иначе все заботы nVidia о здоровье потребителя пойдут прахом.

©CGTalk

September 10

Про Xbox

Ну, что, товарищи! Я таки выйграл Xbox 360 в конкурсе от Балтики 7 =)) Что ж ждем, когда с нами выйдут на связь и пришлют его.
September 04

Spore вышла на PC

image

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

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

September 03

Задача № 4. О компьютерах.

Правила решения задач можно прочитать тут.

О компьютерах

Ограничения
Временное ограничение: 5 сек.

Условия
В одном университете жили-были веселые студенты и злобные лаборанты. Веселые студенты любили играть в Quake по сети. Чтобы помешать студентам играть в Quake, злобные лаборанты отсоединили все компьютеры от сети, поставили на длинный стол в ряд и прибили их к столу девятидюймовыми гвоздями. Но веселые студенты не сдались. Они решили соединить компьютеры проводами (коаксиальным кабелем) так, чтобы каждый компьютер был соединен хотя бы с одним соседним. Один метр провода стоит 1 о.у.е. (о.у.е. - очень условная единица). Студенты измерили расстояния между соседними компьютерами в метрах и поместили их в файл input.txt. Все расстояния оказались целочисленными. Требуется написать программу, которая по данным расстояниям между компьютерами определяет минимальную сумму длин проводов, необходимых для требуемого соединения компьютеров.

Входные данные
В первой строке входного файла содержится число компьютеров N, 1 <= N <= 25 000. В последующих строках файла содержатся N - 1 целых положительных чисел - расстояния между соседними компьютерами в метрах, по одному числу в каждой строке. Расстояние между первым и последним компьютером не превосходит 1 000 000.

Выходные данные
В выходном файле должно содержаться одно число - минимальная сумма длин проводов,
необходимых для соединения компьютеров.

Пример

input.txt

output.txt

6
2
2
3
2
2
7

T-sql тест №1.

Работая с MS SQL, переодически натыкаюсь на такие интересные вещи. Что выведется на экран в случае запуска?

print cast(1000 as varchar(3))
print len('123 ')

September 01

Задача №1: Потерянная лодка. Решение.

Всем привет.
Условия задачи можно найти тут.
Файл с решением на C++

Решение
Вся соль задачи - в ее ограничениях. Действительно, нельзя хранить названия всех лодок, потому что можно использовать всего лишь 16 Мб памяти. С другой стороны ограничение по времени в 2 секунды, за которое нельзя не только сравнить строки при помощи функции strcmp, но и просто считать файл. Когда я тестировал решения, то получил примерно такие результаты для считывания данных(тест был только один: 1000000 лодок с названиями в 20 символов длиной):
fscanf - 4-5 сек.
ifstream fout >>  - 10 сек.
ifstream fout.read(somestring, 100) - 1.5-1.6 сек. //этот вариант вполне подходит, правда нужно пробегать по строке и вытаскивать оттуда названия лодок, потому что точной длинны мы не знаем.

Итак, со считывание разобрались, осталось сравнение строк. Заметим, что по условию названия всех лодок кроме одной встречаются по 2 раза, следовательно мы можем использовать свойство функции XOR.  A ^ B ^ A = B. Т.е. делаем посимвольный xor названий, после этого мы получаем название нужной нам лодки.
August 31

Ответы на С#-тесты №1 и №2

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

Во втором - AB[Отчет об ошибке]C
Т.е. если исключение ничем не ловится в вашей программе, то сначала пишется отчет об ошибке, а потом уже срабатывает finally.

Объяснения этому различию я пока не нашел, так что нужно запомнить - вдруг пригодится.

Ответ на второй тест:
В первом задании переменная i будет равна 0. Все дело в приоритете операций.
Во втором задании по идее  переменные должны поменяться значениями, однако из-за какого-то бага в C# при выполнении y станет равна 1, а вот переменная х обнулится. Если переписать вот так:
x ^= y; y ^= x; x ^= y;
то все работает.

August 28

Задача №3. О гирях на весах.

Итак, новая интересная задачка. Правила решения задач читаем тут.

О гирях на весах

Ограничения
Ограничение по времени: 5 сек.

Условия
Два игрока имеют гири на чашах весов. Гири первого игрока (N штук) стоят на первой чаше, а второго (M штук) - на второй. Гири отличаются весом, для каждой гири задан свой вес. Двух гирь с одинаковым весом нет. В начальный момент суммарный вес гирь на чашах - разный. Игра заключается в следующем. Первым ходит тот игрок, у кого суммарный вес гирь больше. Тот, кто ходит, убирает гири по одной со своей чаши до тех пор, пока вес его гирь не станет меньше веса гирь противника. После этого ход переходит к противнику. Выигрывает тот, кто первым уберет все гири. Требуется определить, кто из них выигрывает при оптимальной стратегии обоих игроков.

Входные данные
В первой строке входного файла содержатся два числа (через пробел) - N и M, 0 < N <= 50000, 0 < M <= 50000. В последующих N + M строках расположены целые положительные числа Ai (0 < Ai <= 1000000, 1 <= i <= N + M) веса гирь сначала первого, а затем второго игроков.

Выходные данные
В выходном файле должно содержаться одно число - 1 или 2 (номер выигравшего, только один символ).

Пример

input.txt

output.txt

3 3
1
3
5
2
4
6
2

Дополнительно
Можно присылать алгоритм.

Правила решения задач.

В общем решил правила вынести в отдельный пост. Итак..

О публикуемых задачах
В данном блоге публикуются условия задач с различных олимпиад по программированию.
Во всех задачах входные и выходные данные содержатся в файлах input.txt и output.txt соответственно.
Некоторые задачи имеют ограничения по времени и памяти, которые нужно учитывать при решении.

О решениях
Решения присылать мне по адресу vvovas@rambler.ru.
Убедительная просьба, в комментариях решения не публиковать. При нарушении этого правила никакие ваши решения данной задачи рассматриваться не будут
В комментариях нужно объявлять о решении поучаствовать.
Решения задач можно писать на языках c, c++, c#. Использование других языков лучше оговорить в комментариях.
В некоторых случаях можно присылать просто описание алгоритма решения(это будет отмечено в условиях задачи).

О результатах
Результаты тестирования я буду писать в комментариях.
Через некоторое время после публикации задачи(около недели) будет написан пост с описанием алгоритма решения и ссылкой на решение, которое показало лучшее время.

О тестах
К некоторым задачам у меня нет тестов, поэтому в условии будет пометка о том, что можно вместе с решением присылать тестовые данные, которые, по вашему мнению, смогут проверить правильность работы программы.
August 27

Задача №2. Расставь коней.

Всем привет. Вот нашел еще одну простенькую задачку. Правила по решению задач читать тут.

Расставь коней
Ограничения
Временное ограничение: 1 сек.

Условия
Дана прямоугольная шахматная доска m на n клеток. Определить максимально возможное количество шахматных коней, которых можно расставить на доске, так чтобы они не били друг друга.

Входные данные
Строка содержит 2 натуральных числа M(2 <= M <= 10000), N(2 <= N <= 10000)

Выходные данные
Выводится максимальное число коней.

Пример

input.txt

output.txt

2 2 4

 



Дополнительно
Можно присылать алгоритм.
August 26

Задача №1: Потерянная лодка.

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

Правила решения задач читаем тут.
 
Итак, вот условие задачи.
 
Потерянная лодка.
Ограничения
Временное ограничение: 2 сек.
Ограничение по памяти: 16 Мб
 
Условия
     “Арагорн очень обрадовался лодкам, ибо он все еще не мог решить, по какому берегу вести Отряд. Остальные Хранители тоже приободрились. Впереди их ждали великие опасности, в этом ни один из них не сомневался; ну а все-таки плыть навстречу опасностям гораздо приятней, чем тащиться пешком. Всеобщей радости не разделял лишь Сэм: он был уверен, что речные лодки гораздо опаснее диких кобылиц (которых, как он думал, вообще не бывает).”
     Осторожный Сэм даже решил лично выбрать ту лодку, на которой поплывёт он. Сэм долго ходил по берегу, с недоверием изучая хрупкие на вид суда и аккуратно переписывая названия каждой из них. Последняя лодка ему понравилась больше... Он придирчиво её осмотрел, и решил, что если уж суждено плыть, то лучше на этой. Но вышла незадача — вечером Сэм понял, что как раз  название этой лодки на радостях и не записал. Он вернулся на берег — и понял, что лодки уже как-то переставлены — правда, ни одна не исчезла и не появилась. Повторять розыски просто не было сил. “Садовая твоя голова, Сэм”, — ругался он на себя, но надо было что-то делать. Сэм переписал названия всех лодок, надеясь потом найти ту, которой нет в первом списке. Но беда не приходит одна — по дороге назад он умудрился перетасовать листы этих двух списков.          
     Необходимо найти в получившемся большом списке выбранную лодку.
 
Входные данные
     “Первая строка во входном файле содержит число N — количество лориэнских лодок на берегу Андуина (2 ≤ N ≤ 106). Далее следуют (2 * N – 1) названий  лодок, разделённых пробелами или символами конца строки. Название может  состоять не более чем из 20 заглавных или прописных латинских букв, а также  цифр. Заглавные и прописные латинские буквы считать различными.
 
Выходные данные
     В выходной файл необходимо вывести название выбранной Сэмом лодки.
 
Пример

input.txt

output.txt

4
Titanic Argo2 285714 Beda Argo2 Titanic 285714
Beda
 
UPD (27.08.2008): В общем какие-то зверские ограничения по времени, поставлены на самом деле. Предлагаю их поменять на 5 секунд.
August 25

С#-тест №2

Про эти фишки я узнал, как только начал учить шарп. Итак, что будет если запустить следующие фрагменты?
...
int i = 0;
i = ++i;

Console.WriteLine(i);
...
и
...
int x = 1;
int y = 2;

x ^= y ^= x ^= y;

Console.WriteLine("x = {0}; y = {1}", x, y);
...


 
Thanks for visiting!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.
Nadawrote:
click to commentImage and video hosting by TinyPicclick to comment
click to commentclick to commentImage and video hosting by TinyPicclick to commentclick to comment
 
click to comment
 
click to commentclick to commentclick to commentclick to comment
 
click to comment
 
click to commentclick to comment
 
click to comment
 
SERBIA-Instrumental Music  ZLATKO MANOJLOVIĆ
     
click to comment
 
click to comment
 left
 
June 13