# Patrón IA Los Tests no son más que archivos JSON con la siguiente estructura: ```json [{ "origin" : "Quién lo hizo", "sources" : ["Links para el origen de los datos/Tests."], "title" : "Título del Test.", "queries" : [{ "question" : "Pregunta arealizar.", "rights" : ["Respuestas correctas simples.", ["Respuestas correctas porcentuadas.", 0.5]], "wrongs" : ["Respuestas incorrectas simples.", ["Respuestas incorrectas porcentuadas.", 0.5]] }] }] ``` * **origin**: String. Nombre de la entidad o fuente de la información. * **sources**: Array de Strings. Fuentes de la que parte la información. * **title**: String. Título del tema a tratar. * **Queries**: Array de diccionario. Conjunto de posibles preguntas. * **question**: String. Texto de la pregunta. * **rights** y **wrongs**: Array de Strings (Respuesta directa) y/o Array bidimensional con: 0. String. Respuesta. 1. Float. Probabilidad de prebalecer como seleccionada. Todos los campos ahnde existir siempre y el tipado va acorde a lo expuesto. Los Array indican que pueden tener uno o más elementos, a excepción de "sources", que puede estar vacío. Las respuestas porcentuadas indican cuál es la probabilidad de que una vez elegida por el programa, ésta se quede como respuesta y no se seleccione otra. Esto vale para equivaler conjuntos de respuestas dinámicas y estáticas. El valor que lo acompaña es la probabilidad de que permanezcan siendo 1 el 100% y 0 el 0%. Lo interesante es que halla cuántas más posibles respuestas mejor. No hay un número mínimo ni máximo. Las respuestas pueden tener factores dinámicos para que una sea más flexibles y dé más resultados. No puede haber anidamientos de éstos. Éstos se basan en claves las cuales son los siguientes. ## rand Indica un conjunto de elementos de los cuales se eligirá uno aleatoriamente. ```txt [[rand,opcion1|opcion2|opcion3|opcionN]] ``` ```json { "wrongs" : ["Esto es [[rand,esto|eso|aquello]]."] } ``` En el ejemplo puede dar como resultado que es "esto", o "eso" o "aquello". ## range Indica uno o más rangos o valores fijos numéricos enteros de donde se sacarán valores aleatorios. ```txt [[rand,desde1-hasta1|desde2-hasta2|desde3-hasta3|desdeN-hastaN]] ``` ```txt [[rand,valor1|valor2|valor3|valorN]] ``` ```txt [[rand,desde1-hasta1|desde2-hasta2|valor3|desdeN-hastaN]] ``` ```json { "wrongs" : ["Esto es [[range,0-10|15-20|23|31-60]]."] } ``` En el ejemplo puede coger cualquier valor comprendido entre 0 y 10, 15 y 20, el valor 23, y entre 31 y 60. ## serie Es como el rango pero con memoria, y la siguiente serie del mismo texto procesado ha de ser igual o más grande. ```json { "wrongs" : ["Esto está entre [[serie,0-25]] y [[serie,10-50]]."] } ``` En el ejemplo, el primer valor puede coger cualquier valor comprendido entre el 0 y el 25; y el segundo puede ser entre 10 si el primero es menor que 10 o desde el primero en caso contrario, hasta el 50. Sólo se contabiliza una serie por pregunta/respuesta.