Еще немного о разработке, и математике.

Начитался я гайдов по kotlin (язык программирования для андроид). Раньше я по старинке писал на яве, но Гугл и иже с ним уже какое-то время сетуют, что Ява устарела, и все настойчивее рекомендуют идти как раз на Котлин.

Для этого даже в среде разработки сделали автоматический перевод кода с одного языка на другой. Удобно - собственно так я и сделал с калькулятором теплоэнергетика и pdftoolkit. Все прошло хорошо - но там код компактный.

А вот с arshinchecker, который ищет поверку в аршине все не так просто, кода там около 15 000 строк, около 30 рабочих файлов, поэтому просто в 2 клика там ничего не получится А значит надо углубить и расширить свои знания в области котлина.

Ну и начал я читать статьи разные и гайды, и вывело это меня на такую игру как судоку. Игра простая по функционалу, но замороченная на тему решений своей головой. Поле 9 на 9 клеток, разбито на квадраты 3*3 в каждом квадрате и каждой линии и вертикальной и горизонтальной цифры от 1 до 9, которые не должны повторяться ни в квадратах, ни в линиях.

Собственно код всего этого счастья на Котлин - это около 200 строк, и все просто. Повторяется в коде часа за 1,5.

Но дальше то хочется чего-то своего, уникального (хотя и на этом этапе поиграть интересно).

А что можно сделать уникального - ну например увеличить поле 16*16 и квадраты 4*4, а можно и 25*25 и квадраты 5*5, вот тут-то мозги игроков и заскрипят. Круто? Да! Делаю. И упираюсь в чистую математику.

Принцип генерации полей судоку он простой - заполняем поля цифрами по 3 условиям и потом часть убираем. Просто? Да! Но нет)) Потом надо проверить, чтобы решение было всего одно, уникальное. И тут начинается математическая жесть боль. Не смотря на гигабайты оперативки такая проверка на поле 16*16 есть почти минуту, а поле 25*25 я ждал почти 15 минут и забил.

А почему так? А это ограничения высокоуровневых языков программирования, обратная плата за простоту синтаксиса и модульности структуры библиотек.

Нейросети сразу советуют идти в низкоуровневые языки, типа C(Си) и не париться, и действительно, видел примеры, где эту задачку решают в пределах секунды (!!!).

Но в эту сторону пока идти я не готов, а попробую ограничиться одним языком, но через пару фич, прокачивая не столько мультиязычность, сколько алгоритмику процесса.

Еще немного о разработке, и математике.
Начитался я гайдов по kotlin (язык программирования для андроид) | Сетка — социальная сеть от hh.ru
Еще немного о разработке, и математике.
Начитался я гайдов по kotlin (язык программирования для андроид) | Сетка — социальная сеть от hh.ru Еще немного о разработке, и математике.
Начитался я гайдов по kotlin (язык программирования для андроид) | Сетка — социальная сеть от hh.ru