?

Log in

No account? Create an account
небольшая загадка для программистов - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

небольшая загадка для программистов [мар. 3, 2011|11:17 pm]
Anatoly Vorobey
Что делает эта функция?
unsigned char func(unsigned char c) {
  return c - 128 + (c >> 5&3)["(PI)"];
}


Комментарии скрываются до поры до времени.

Update: в комментариях есть уже штук 10 правильных ответов. Я не буду каждый из них подтверждать - если вы уверены, что правильно ответили, скорее всего так и есть. Иду спать, а завтра утром напишу здесь или в отдельной записи правильный ответ.

Update: правильный ответ. Раскрываю все комментарии тут.
СсылкаОтветить

Comments:
(Удалённый комментарий)
[User Picture]From: dmarck
2011-03-03 09:30 pm
Для латиницы -128 приведёт в верхнюю половину байта.
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2011-03-03 09:37 pm
Нет.
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 09:31 pm
Хотите дать полный ответ? Я пока скриню все комменты все равно :)

Edited at 2011-03-03 21:34 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: not_one
2011-03-03 09:33 pm

оффтоп, прекрасное

простите, не могу удержаться чтобы не написать ))
вы уже в курсе, что сегодня
Папа Римский снял с еврейского народа обвинение в распятии Иисуса Христа )))
http://www.fontanka.ru/2011/03/03/074/
(Ответить) (Thread)
[User Picture]From: avva
2011-03-03 09:38 pm

Re: оффтоп, прекрасное

Видел в газете, да.
(Ответить) (Parent) (Thread)
[User Picture]From: vashik
2011-03-03 09:34 pm
Segmentation fault.
(Ответить) (Thread)
[User Picture]From: avva
2011-03-03 09:39 pm
Нет.
(Ответить) (Parent) (Thread)
[User Picture]From: pbl
2011-03-03 09:37 pm
Инициирует расстрел закоммитившего.
(Ответить) (Thread)
[User Picture]From: avva
2011-03-03 09:39 pm
Это да, но кроме того?
(Ответить) (Parent) (Thread)
[User Picture]From: pargentum
2011-03-03 09:41 pm
Признаться, не могу понять физического смысла этой операции. Может быть, в кавычках должна стоять какая-то другая строка?
(Ответить) (Thread)
[User Picture]From: avva
2011-03-03 09:43 pm
Строка правильная.
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:02 pm
Буквальный смысл операций описан верно. Осталось ответить, для чего это нужно, действительно. Эта функция делает полезную работу.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]From: avva
2011-03-03 09:59 pm
Это не реальный код, конечно, но всего незначительно усложненный по сравнению с реальной версией. Ваш ответ неправильный, к сожалению.
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:04 pm
Браво! Ваш ответ - первый правильный.

Edited at 2011-03-03 22:08 (UTC)
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:10 pm
Вы все посчитали правильно, но догадка неверная, хоть и 'тепло'.
(Ответить) (Parent) (Thread) (Развернуть)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:34 pm
Первая строка вашего комментария практически отвечает на вопрос, надо только чуть-чуть еще дотянуть :)
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:35 pm
да :)
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:13 pm
:-)
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:31 pm
Ура! Ваш ответ - второй правильный.
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:31 pm
Все верно, уважаемый аноним.
(Ответить) (Parent) (Thread)
[User Picture]From: anhinga_anhinga
2011-03-03 10:23 pm
После ответа на комментарий Вы опять скрываете его вручную, или есть более элегантный способ отвечать так, чтобы исходный комментарий оставался скрытым?
(Ответить) (Thread)
[User Picture]From: avva
2011-03-03 10:24 pm
Вручную :(
(Ответить) (Parent) (Thread)
(Скрытый комментарий)
[User Picture]From: avva
2011-03-03 10:32 pm
Верно. Да, в каком-то смысле это оптимизация по скорости, которую я еще дополнительно усложнил немного.
(Ответить) (Parent) (Thread)
[User Picture]From: spamsink
2011-03-03 11:21 pm
Красиво подобрана текстовая строка, заодно и 128 с толку сбивает. Но зачем (c >> 5&3)["(PI)"] вместо "(PI)"[c >> 5&3] ? Разве это кого-то сейчас может смутить?
(Ответить) (Thread)
[User Picture]From: avva
2011-03-04 06:52 am
Судя по комментариям, все еще может, хотя многие действительно это хорошо знают.
(Ответить) (Parent) (Thread)
[User Picture]From: pin_dragon
2011-03-04 02:10 pm
Когда — «сейчас»? Когда 90% программистов в глаза не видело языка С?))
Впрочем, не сказал бы, что не знать подобную херню — это порок.
(Ответить) (Parent) (Thread)
[User Picture]From: penguinny
2011-03-03 11:54 pm
Я знаю, зачем это нужно. У меня вопрос другой, наивный и буквоедский: а почему вообще можно так навыворот писать (я про выбор символа из строки)? Такой синтаксис находит какие-то применения?
(Ответить) (Thread)
[User Picture]From: avva
2011-03-04 06:53 am
Нет, это исключительно для усложнения - в оригинальном исходнике был статический массив из четырех чисел.
(Ответить) (Parent) (Thread)
[User Picture]From: pingva
2011-03-04 02:25 am
case-ignoring ordering for ascii
(Ответить) (Thread)
[User Picture]From: avva
2011-03-04 06:54 am
нет :)
(Ответить) (Parent) (Thread)