1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use super::*;
use rand;
py_class!(pub class PyPolicy |py| {
def __call__(&self, _turn: PyObject, boards: PyObject) -> PyResult<PyObject> {
let len = boards.cast_into::<PyList>(py)?.len(py);
let value = (0..len)
.map(|_| rand::random::<f32>().to_py_object(py).into_object())
.collect::<Vec<PyObject>>();
let value = PyList::new(py, value.as_slice()).into_object();
let policy = (0..len).map(|_| {
let rand_policy = (0..BOARD_CAPACITY)
.map(|_| rand::random::<f32>().to_py_object(py).into_object())
.collect::<Vec<PyObject>>();
PyList::new(py, rand_policy.as_slice()).into_object()
}).collect::<Vec<PyObject>>();
let policy = PyList::new(py, policy.as_slice()).into_object();
Ok(PyTuple::new(py, &[value, policy]).into_object())
}
});
#[allow(dead_code)]
pub fn create_pypolicy(py: Python) -> PyResult<PyPolicy> {
PyPolicy::create_instance(py)
}