Самая короткая известная мне последовательность составляет 7 шагов. Т. е. она одна из 18^7 других. Почти одна из миллиарда.
А всё что она делает — переставляет два кубика местами. Даже если бы подобной последовательности хватало для сборки всего кубика, её пришлось бы применять 19 раз.
Итого выходит 18^(7*9)=18^63~10^79.
Перебором решать выходит «сложновато». Нужно эти самые последовательности кодировать. И если для 3-х их можно знать (узнать), для 2-х придумать, то для 4 и 5 их найти нереально.
Само по себе кодирование последовательностей ужасно. Такой код удовольствия не приносит. Вот я, 4 года назад, пока изучал OCaml, написал похожее: github.com/andy128k/mlCube Хвастаться нечем. Такой код показывать стыдно.
Первое, что приходит в голову:
— новая кнопка для электро-чайника вместо сломавшейся;
— корпуса для электронных (и не только) поделок;
— кастомный фингербокс.
Использовать с батарейками можно будет когда батарейки подтянутся. Пока же ещё даже релиза не было. У авторов батареек ещё есть время поправить, что надо. Тем более, это не так уж и сложно.
«Поставляемый объем экранов» — это и есть количество. «Ретину», а точнее экраны с высоким разрешением, используют не только Эппл. Гугление по словосочетанию «android retina» даёт интересные результаты.
С инструментами для сравнения есть одна беда — нельзя выбрать один для всех задач. Лично я использую kdiff3 в качестве merge tool, мне он кажется самым удобным и понятным. Но вот для сравнения и одновременного редактирования пары файлов kdiff3 подходит плохо, и тут я вынужден запускать уже diffuse.
В общих чертах так и делается. Если сильно интересуетесь, рекомендую разобраться с устройством GObject. Второй яркий пример подобной системы — Objective C.
1. Ссылки должны быть в data.
2. Объект data может и должен шариться между всеми экземплярами одного типа.
3. Для методов делаются обёртки:
void shape_print(shape) { shape->data->print(shape); }
А всё что она делает — переставляет два кубика местами. Даже если бы подобной последовательности хватало для сборки всего кубика, её пришлось бы применять 19 раз.
Итого выходит 18^(7*9)=18^63~10^79.
Перебором решать выходит «сложновато». Нужно эти самые последовательности кодировать. И если для 3-х их можно знать (узнать), для 2-х придумать, то для 4 и 5 их найти нереально.
Само по себе кодирование последовательностей ужасно. Такой код удовольствия не приносит. Вот я, 4 года назад, пока изучал OCaml, написал похожее: github.com/andy128k/mlCube Хвастаться нечем. Такой код показывать стыдно.
— новая кнопка для электро-чайника вместо сломавшейся;
— корпуса для электронных (и не только) поделок;
— кастомный фингербокс.
Заменить User на settings.AUTH_USER_MODEL или на get_auth_model() это не такое уж и большое дело.
Ещё возможно, сломана локализация админки (мне так показалось при просмотре коммита).
Если книга так переведена, то не нужно.
Видно, что самсунг производит как минимум в два раза больше девайсов (или в ~4 если ещё и звонилки брать).
Всё правильно, их надо разносить. А вот данные тоже можно по-разному представлять: хоть в саму структуру засунуть, хоть pimpl.
Осталось только переименовать shape_methods_t в shape_class, и сделать
typedef struct {
shape_class parent;
} circle_class;
2. Объект data может и должен шариться между всеми экземплярами одного типа.
3. Для методов делаются обёртки:
void shape_print(shape) { shape->data->print(shape); }
В первом приближении GObject так и построен. :)