#include "bot_client.hpp"

#include <chrono>
#include <cstdint>
#include <random>
#include <thread>

koth::Move choose_move(
    const koth::Board& /*board*/,
    char /*my_color*/,
    const std::vector<koth::Move>& legal_moves) {
    // Only the supplied Random bot sleeps. Competitor bots may answer instantly.
    std::this_thread::sleep_for(std::chrono::milliseconds(100));

    static thread_local std::mt19937_64 generator{
        std::random_device{}() ^
        static_cast<std::uint64_t>(
            std::chrono::steady_clock::now().time_since_epoch().count())};
    std::uniform_int_distribution<std::size_t> distribution(0, legal_moves.size() - 1);
    return legal_moves[distribution(generator)];
}

int main(int argc, char** argv) {
    return koth::run_bot(argc, argv, choose_move);
}
