Занимательные задачки → Три ребуса-мутанта для ИТшников
Прошлый ребус для программистов на Хабре разгадали примерно за час. Посмотрим, как вы справитесь с ребусами-мутантами. В них осталось не очень-то много от ребуса, но программисты привыкли решать непонятные задачи!

1. Домашний борщ

.NET → C#: Этюды, часть 7
Сегодня простой этюд, почти без кода.
Допустим, есть некий класс и его статический конструктор:
Как известно, статические конструкторы вызываются до первого использования типа. Других ограничений нет, поэтому время его вызова вы не можете контролировать (он может вызваться как в самом начале программы, так и при первом обращении). В частности, если два класса используют друг друга в статических конструкторах, поряд вызова этих конструкторов не определен.
В общем, все очень сложно. Тем не менее, напишите код, который гарантированно вызывает указанный выше статический конструктор как раз в нужном месте.
Допустим, есть некий класс и его статический конструктор:
static C()
{ Console.WriteLine("from static ctor"); }
Как известно, статические конструкторы вызываются до первого использования типа. Других ограничений нет, поэтому время его вызова вы не можете контролировать (он может вызваться как в самом начале программы, так и при первом обращении). В частности, если два класса используют друг друга в статических конструкторах, поряд вызова этих конструкторов не определен.
В общем, все очень сложно. Тем не менее, напишите код, который гарантированно вызывает указанный выше статический конструктор как раз в нужном месте.
Console.WriteLine("before static ctor");
// нужно вызвать здесь
Console.WriteLine("after static ctor");
.NET → Мини-задачка: «олд-скульное» дерево
Постановка задачи
Буквально несколько дней назад Eric Lippert на своем блоге Fabulous Adventures In Coding опубликовал очень простую, но занимательную задачку:
Есть дерево, заданное с помощью класса Node, в котором есть Children с теми же самыми Node и какой-то Text (чуть ниже приведу код класса). Необходимо сгенерировать строку такого вида (включая переносы строк):
Использовать нужно юникодовые символы "│ ├ ─ └" (вспомним старые добрые картинки с псевдографикой). Цель, которую поставил себе Эрик — выяснить, какие предпочтения будут сделаны при составлении решения: рекурсивное (так как дерево), более быстрое или более читабельное.Персональные блоги → Пятничная головоломка
Решил поддержать andyshevchenko в публикации пятничных головоломок, и задать, наверное, самую сложную задачку, которую когда-либо решал.
Король созвал 100 своих мудрецов вечером и объявил, что утром он им устроит испытание. Если они его пройдут, то он обеспечит золотом их на все оставшуюся жизнь, если нет, то он их всех казнит. Король рассказал мудрецам в чем будет испытание: он наденет на каждого мудреца шляпу, которая может быть одного из 100 цветов, каждый мудрец не видит, какого цвета шляпа на нем, но он видит каких цветов шляпы на его товарищах. Мудрецам запрещено будет общаться. По команде они должны будут одновременно сказать, как они думают, какая шляпа на них, и если хоть один угадает, то испытание считается пройденным. У них есть ночь перед испытанием чтобы придумать стратегию. Представьте себя на месте мудрецов, и попытайтесь придумать правильную стратегию
Пояснение: у каждого мудреца шляпа может быть одного цвета, так же возможна ситуация, когда цвета шляп на некоторых мудрецах совпадают, кроме того, король может на всех мудрецов одеть шляпы одного цвета. Известно только, что цветов для шляп всего 100 и они известны.
Король созвал 100 своих мудрецов вечером и объявил, что утром он им устроит испытание. Если они его пройдут, то он обеспечит золотом их на все оставшуюся жизнь, если нет, то он их всех казнит. Король рассказал мудрецам в чем будет испытание: он наденет на каждого мудреца шляпу, которая может быть одного из 100 цветов, каждый мудрец не видит, какого цвета шляпа на нем, но он видит каких цветов шляпы на его товарищах. Мудрецам запрещено будет общаться. По команде они должны будут одновременно сказать, как они думают, какая шляпа на них, и если хоть один угадает, то испытание считается пройденным. У них есть ночь перед испытанием чтобы придумать стратегию. Представьте себя на месте мудрецов, и попытайтесь придумать правильную стратегию
Пояснение: у каждого мудреца шляпа может быть одного цвета, так же возможна ситуация, когда цвета шляп на некоторых мудрецах совпадают, кроме того, король может на всех мудрецов одеть шляпы одного цвета. Известно только, что цветов для шляп всего 100 и они известны.
Персональные блоги → C#: Этюды, часть 6
Со времени последнего этюда прошло очень много времени, но я надеюсь, что хабраюзеры не успели утратить интерес к C#.
В этот раз задачка довольно простая, но новичкам в шарпе она может оказаться полезной. Есть следующий код:
В этот раз задачка довольно простая, но новичкам в шарпе она может оказаться полезной. Есть следующий код:
Блог компании REG.RU → Разминка
Привет! Решили устроить для вас небольшое программерское состязание с призом. Суть состязания: решить задачку, которая выложена ниже. Приз — подарочный сертификат от Регистратора REG.RU на сумму 1 000 рублей. Победитель может ни в чем себе не отказывать ;)
Итак, приступим. Так как REG.RU занимается доменами и хостингом, задачка будет специфическая:
Напишите мини-мануал (пример кода) для конвертации имён доменов в / из Punycode из PHP. Исходная кодировка: cp1251 или utf8 (по выбору). Можно использовать сторонние открытые библиотеки.
Задача, как понимаете, не имеет одного ответа, вариантов может быть много. Поэтому победителем станет тот, кто предложит оптимальное решение. Оптимальное — это самое работающее, надёжное, понятное и лаконичное. Оценивать решения будут технические специалисты REG.RU.
Решения пишите прямо сюда, в комменты. У нас все открыто и прозрачно. А чтобы не затягивать процесс, давайте поставим срок приема результатов до 20.00 сегодня (реально задача на полчаса). После этого времени подводим черту и на следующий день объявляем победителя, которому торжественно будет активирован подарочный сертификат в размере 1 000 рублей на личный счет в REG.RU для заказа любых услуг ;)
ПС. Если решение-победитель будет предложено несколькими участниками состязания, то победителем будет признан тот, кто запостил свое решение первым. По справедливости.
Итак, приступим. Так как REG.RU занимается доменами и хостингом, задачка будет специфическая:
Напишите мини-мануал (пример кода) для конвертации имён доменов в / из Punycode из PHP. Исходная кодировка: cp1251 или utf8 (по выбору). Можно использовать сторонние открытые библиотеки.
Задача, как понимаете, не имеет одного ответа, вариантов может быть много. Поэтому победителем станет тот, кто предложит оптимальное решение. Оптимальное — это самое работающее, надёжное, понятное и лаконичное. Оценивать решения будут технические специалисты REG.RU.
Решения пишите прямо сюда, в комменты. У нас все открыто и прозрачно. А чтобы не затягивать процесс, давайте поставим срок приема результатов до 20.00 сегодня (реально задача на полчаса). После этого времени подводим черту и на следующий день объявляем победителя, которому торжественно будет активирован подарочный сертификат в размере 1 000 рублей на личный счет в REG.RU для заказа любых услуг ;)
ПС. Если решение-победитель будет предложено несколькими участниками состязания, то победителем будет признан тот, кто запостил свое решение первым. По справедливости.
Персональные блоги → C#: Этюды, часть 5
Хабраюзеры нашли решение предыдущего этюда, но я решил вдобавок продемонстрировать свое (там же)
С внутренностями .NET пока остановимся, потому что придумать этюд на эту тему оказалось несколько сложнее, чем я думал: не хватает элемента неожиданности, ощущения «нерешаемости» задачи.
У сегодняшней задачки, надеюсь, с этим все будет в порядке :)
С внутренностями .NET пока остановимся, потому что придумать этюд на эту тему оказалось несколько сложнее, чем я думал: не хватает элемента неожиданности, ощущения «нерешаемости» задачи.
У сегодняшней задачки, надеюсь, с этим все будет в порядке :)
Персональные блоги → C#: Этюды, часть 4
Продолжение, предыдущая часть здесь
Итак, сегодня мы с Вами с помощью молотка и лопаты попытаемсясделать трепанацию черепа влезть во внутренности .NET.
Имеется простейший класс: class X { public int Val; }. При создании объекта этого класса какой реальный размер он будет занимать? И какие значения будут содержать дополнительные поля? Предъявите доказательство в виде кода на C# ;)
Итак, сегодня мы с Вами с помощью молотка и лопаты попытаемся
Имеется простейший класс: class X { public int Val; }. При создании объекта этого класса какой реальный размер он будет занимать? И какие значения будут содержать дополнительные поля? Предъявите доказательство в виде кода на C# ;)
.NET → C#: Этюды, часть 3
В предыдущей части было предложено три разных по своей сути решения.
Сегодня — новая загадка, из области ASP.NET. Её основное отличие от предыдущих в том, что я столкнулся с ней в реальной ситуации, и пришлось потратить время, чтобы разобраться, в чем же дело.
Сегодня — новая загадка, из области ASP.NET. Её основное отличие от предыдущих в том, что я столкнулся с ней в реальной ситуации, и пришлось потратить время, чтобы разобраться, в чем же дело.
Итак, на странице Test.aspx имеется код:
.NET → C#: Этюды, часть 2
Продолжение, начало здесь
Начну с соцопроса: какие Вы знаете способы выполнить код до начала функции Main() (надеюсь, что перечислят все известные мне и парочку неизвестных :) )?
А теперь задачка:
Перед Вами небольшой код, выводящий два символа (кстати, проверьте себя: в каком порядке они выведутся?). Необходимо вывести подчеркивание "_" между этими символами.
Начну с соцопроса: какие Вы знаете способы выполнить код до начала функции Main() (надеюсь, что перечислят все известные мне и парочку неизвестных :) )?
А теперь задачка: