February 17th, 2019

2017

Неожиданная проблема с кубиком Рубика

На каком-то собрании MathWorks мне подарили кубик Рубика с рекламой MatLab’а. Каждая грань не просто одного цвета, а какие-то картинки, текст, фотографии.

Сначала показалось, что собирать его будет ненамного сложнее, чем обычный кубик. Не сразу понятно, какая грань «какого цвета», но это единственная сложность. Но когда я собрал кубик, обнаружил задачу, о которой никогда не задумывался: все кубики стоят на своём месте, и все правильно ориентированы, кроме центральных — три из них нужно развернуть, кого на 90°, кого на 180°. А «мои» формулы (из «Иллюстрированной энциклопедии юного математика») о таком даже не заикались.

Есть у кого какие-нибудь идеи?
2017

Сумма прописью

Вспомнил старую задачку начинающего программиста: написать сумму прописью. То есть, имея «123,45» на входе, вернуть строку «сто двадцать три рубля сорок пять копеек». Пока нам не разрешили сокращать до «руб.» и «коп.», мы искали общее правило для всех этих «рубль / рубля / рублей» и «копейка / копейки / копеек». Правило несложное: если число заканчивается на «1», но не на «11», то «рубль», если на «2/3/4», но не на «12/13/14», то «рубля», иначе — «рублей».

Написали, заработало, забыли. А недавно я задумался: откуда такое разнообразие? Забудем на минуту про большие числа — в принципе, понятна логика, когда «пять тысяч сто два» подчиняется тем же правилам, что и просто «два». И даже исключение «11-19» можно понять.

Так вот, «рубль» — это именительный падеж единственного числа. Множественное число будет «рубли». А родительный падеж от них — это «рубля» и «рублей». Таким образом, «1», даётся в именительном падеже, а все остальные — в родительном. Почему бы и нет, логику падежей я так и не понял, поверим на слово. Но почему единственное число идёт до «4», и только с «5» мы переключаемся на множественное?