Shortest C Contest

Тема в разделе "LANGS.C", создана пользователем Sha_Lun, 27 сен 2007.

  1. Sha_Lun

    Sha_Lun New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2007
    Сообщения:
    10
    Тема здесь такая - решать определенные задачи минимальным объемом кода.
    Пример - подсчет количества дней в месяце.
    Скажем, в BOOST library это решается так:
    Код (Text):
    1.   unsigned short
    2.   gregorian_calendar_base<ymd_type_,date_int_type_>::end_of_month_day(year_type year,
    3.                                                                       month_type month)
    4.   {
    5.     switch (month) {
    6.     case 2:
    7.       if (is_leap_year(year)) {
    8.         return 29;
    9.       } else {
    10.         return 28;
    11.       };
    12.     case 4:
    13.     case 6:
    14.     case 9:
    15.     case 11:
    16.       return 30;
    17.     default:
    18.       return 31;
    19.     };
    20.  
    21.   }
    Код (Text):
    1.   bool
    2.   gregorian_calendar_base<ymd_type_,date_int_type_>::is_leap_year(year_type year)
    3.   {
    4.     //divisible by 4, not if divisible by 100, but true if divisible by 400
    5.     return (!(year % 4))  && ((year % 100) || (!(year % 400)));
    6.   }
    У меня это делается так:
    Код (Text):
    1. d=m-2?30+m%2^m>7:28+(!(y%4)&&y%25||!(y%16));
    http://sha-lun.livejournal.com/2200.html