Показать сообщение отдельно
  #6 (permalink)  
Старый 30.10.2011, 16:04
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от x-yuri
Это какие-то оптимизации, Riim?
я просто составил таблицу окончаний и записал условие по ней, так как мне было читабельней.

По таблице получается, что в Русском языке есть исключение в диапазоне 11-14 включительно. Если не считать этого исключения, то запись такая:

mod10 == 1 ? 0 : mod10 >= 2 && mod10 <= 4 ? 1 : 2;


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

Вот так, наверное, проще сравнивать будет:
// без исключения
mod10 == 1 ? 0 : mod10 >= 2 && mod10 <= 4 ? 1 : 2;

// мой вариант
mod100 >= 5 && mod100 <= 20 ? 2 : mod10 == 1 ? 0 : mod10 >= 2 && mod10 <= 4 ? 1 : 2;

// вариант по ссылке
mod10 == 1 && mod100 != 11 ? 0 : mod10 >= 2 && mod10 <= 4 && (mod100 < 10 || mod100 >= 20) ? 1 : 2;
Ответить с цитированием