пятница, апреля 24, 2009
понедельник, апреля 20, 2009
Задачка на эзотерическое программирование
Что вернет следующее выражение:
1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9
Большая часть читателей, немного поразмыслив, ответит: 2.
И будет права.
Но весь трюк задачи в том,что правы они будут только наполовину.
Смотрите сами. Вот вывод на perl:
Вот вывод на php:
Объясняю, почему так. В большинстве языков (Perl, C, C++, Java, JavaScript, Ruby), эта конструкция читается по такому алгоритму: если верно 1, то выдать 2 - иначе вычислить остальное. В php выражение равносильно
В чем и раскрывается его адская сущность.
Непонятно, почему создатели языка пошли этим странным путём, когда конструкция заимствована из Cи, но сам факт оставляет пищу для размышлений.
1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9
Большая часть читателей, немного поразмыслив, ответит: 2.
И будет права.
Но весь трюк задачи в том,что правы они будут только наполовину.
Смотрите сами. Вот вывод на perl:
perl -e 'print 1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9;'
2
Вот вывод на php:
php -r 'echo 1 ? 2 : 3 ? 4 : 5 ? 6 : 7 ? 8 : 9;'
8
Объясняю, почему так. В большинстве языков (Perl, C, C++, Java, JavaScript, Ruby), эта конструкция читается по такому алгоритму: если верно 1, то выдать 2 - иначе вычислить остальное. В php выражение равносильно
(1 ? 2 : 3 ? 4 : 5 ? 6 : 7) ? 8 : 9
В чем и раскрывается его адская сущность.
Непонятно, почему создатели языка пошли этим странным путём, когда конструкция заимствована из Cи, но сам факт оставляет пищу для размышлений.
Огромное спасибо Shock! за идею.
Ярлыки:
Perl
Подписаться на:
Сообщения (Atom)
Постоянные читатели
Архив
-
▼
2009
(174)
- дек. 27 - янв. 3 (1)
- дек. 6 - дек. 13 (3)
- окт. 4 - окт. 11 (2)
- авг. 9 - авг. 16 (1)
- авг. 2 - авг. 9 (2)
- июл. 26 - авг. 2 (1)
- июл. 5 - июл. 12 (4)
- июн. 28 - июл. 5 (5)
- июн. 7 - июн. 14 (9)
- мая 31 - июн. 7 (5)
- мая 24 - мая 31 (3)
- мая 17 - мая 24 (3)
- мая 10 - мая 17 (5)
- мая 3 - мая 10 (13)
- апр. 26 - мая 3 (1)
- апр. 12 - апр. 19 (10)
- апр. 5 - апр. 12 (5)
- мар. 29 - апр. 5 (6)
- мар. 8 - мар. 15 (7)
- мар. 1 - мар. 8 (3)
- февр. 15 - февр. 22 (13)
-
►
2008
(166)
- дек. 28 - янв. 4 (2)
- окт. 5 - окт. 12 (1)
- июл. 27 - авг. 3 (75)
- июл. 20 - июл. 27 (62)
- июл. 6 - июл. 13 (2)
- июн. 8 - июн. 15 (1)
- июн. 1 - июн. 8 (1)
- мар. 2 - мар. 9 (1)
-
►
2006
(1)
- дек. 31 - янв. 7 (1)