К слову сказать,
Tic-Tac-Toe with a Neural Network, несложное самообучающееся приложение под линукс (написано на ruby), подробный рассказ о которой
в блоге
, а скачать в любой момент можно из гитхаба - вполне способно без особых плясок с бубнами работать на вашем девайсе под андроидом. Разумеется, прежде всего понадобится установить бесплатный termux.
А далее вот так. Опробовал, рекомендую:
Code:
# 1. Обновляем Termux
pkg update && pkg upgrade -y
Code:
# 2. Устанавливаем Ruby + сборочные инструменты + libfann
pkg install ruby clang make libfann -y
Code:
# 3. Устанавливаем гемы (ruby-fann установится с ошибкой — это нормально)
gem install progress_bar tty-pie csv ruby-fann:1.3.2
Code:
# 4. Переходим в папку расширения
cd "$(gem env gemdir)/gems/ruby-fann-1.3.2/ext/ruby_fann"
Code:
# 5. Правим заголовок FANN
sed -i 's/doublefann.h/fann.h/g' extconf.rb
Code:
# 6. Добавляем include для uintptr_t
sed -i '1i #include <stdint.h>' ruby_fann.c
Code:
# 7. Исправляем ошибку fann_set_user_data
sed -i 's/fann_set_user_data(ann, self);/fann_set_user_data(ann, (void*)(uintptr_t)self);/' ruby_fann.c
Code:
# 8. Переконфигурируем с отключением всех проблемных предупреждений
ruby extconf.rb \
--with-fann-include=/data/data/com.termux/files/usr/include \
--with-fann-lib=/data/data/com.termux/files/usr/lib \
--with-cflags="-Wno-deprecated-declarations -Wno-error=incompatible-function-pointer-types -Wno-int-conversion"
Code:
# 9. Собираем расширение
make clean && make V=1
Code:
# 10. Переходим в корень гема
cd "$(gem env gemdir)/gems/ruby-fann-1.3.2"
Code:
# 11. Удаляем старый несовместимый lib/ruby_fann.rb
rm -f lib/ruby_fann.rb
Code:
# 12. Клонируем репо
git clone https://github.com/cmirnow/Tic-Tac-Toe-AI-with-Neural-Network-Resurrections.git
cd Tic-Tac-Toe-AI-with-Neural-Network-Resurrections
Code:
# 13. Патчим game.rb для ручной загрузки пропатченного гема
sed -i "/require 'ruby-fann'/c\\
# Manual load patched ruby-fann for Termux Ruby 3.4\\
\$LOAD_PATH.unshift File.join(Gem.dir, \"gems/ruby-fann-1.3.2/ext/ruby_fann\")\\
require \"ruby_fann\"" src/game.rb
Code:
# 14. Запускаем игру
ruby start.rb
Вероятно, после шага 11 можно было пойти иным путём: сделать `gem build ruby-fann.gemspec` + `gem install ./ruby-fann-1.3.2.gem --force --local`, чтобы гем официально появился в `gem list`. Но, в отличие от показанного выше, такое не пробовал, предпочтя более лёгкий воркараунд.
Вообще говоря, постараюсь в ближайшее время обновить приложение, чтобы rails-app работал с актуальными версиями гемов. А пока вот так.