Hal v.0.4 Consola



En este caso le damos una entrada con tres posibles respuestas aleatorias.
Nosotros que conocemos el código, le formulamos la entrada y nos da la respuesta aleatoria correcta.
Supongamos que un usuario que desconoce completamente el código de programa interactua con él.
Es más fácil que le toque la lotería, qué consiga una respuesta coherente a su entrada por teclado.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// Autor: Gonzales Cenelia

namespace Chattterbot_3
{
    class Program
    {
     
    class Chatterbot3
    {

const string ListOfPunc = "?!.;,";

const int NumeroEntrada = 1;
const int NumeroRespuesta = 3;

static string[,] RespuestasProgramadas =
{
{
      Cual es tu nombre",
"Mi nombre es Hal 9000",
"Me puedes llamar Hal",
"¿ Por qué quieres saber mi nombre ?"
     },

{
    "Hola",
"Hola !",
"Como estas ?",
"Hola !"
},

{
     "Como estás",
"Estoy bien",
"Todo lo bien que puede estarlo un ser virtual",
"¿Por qué quieres saber como estoy ?"
},

{
     "Quien eres",
"Soy un programa de A.I.",
"Yo pienso que tu sabes quien soy",
     "¿Por qué preguntas eso ?"
},

{"Eres inteligente?",
"No estoy seguro",
"Que piensas?",
"Intento comprender!"
},

{"Eres real?",
"Realmente esa pregunta es tuya o te la han inducido",
"Que quieres decir con eso?",
"Soy tan real como puedo ser"
}
 };




static bool isPunc(char ch)
{
        return ListOfPunc.IndexOf(ch) != -1;
}

static List<string> econtrarcadadena(string str)
{
        List<string> result = new List<string>(NumeroRespuesta);
for(int i = 0; i < RespuestasProgramadas.GetUpperBound(0); ++i)
{
if(RespuestasProgramadas[i, 0].Equals(str))
{
                for (int j = NumeroEntrada; j <= NumeroRespuesta; ++j)
                {
result.Add(RespuestasProgramadas[i, j]);
}
break;
}
}
return result;
}

// elimina puntuaciones y espacios de entrada del usuario.

static string limpiaString(string str)
{
string temp = "";
              char prevChar = '#';
for(int i = 0; i < str.Length; ++i)
{
if(str[i] == ' ' && prevChar == ' ' )
{
continue;
}
else if(!isPunc(str[i]))
{
              temp = String.Concat(temp, str[i]);
}
                      prevChar = str[i];
}
        return temp;
}


public static void Main()
{
        Console.Title = "Hal 9000";
string sRespuesta = "";
while(true)
{
Console.Write(">");
string sInput = Console.ReadLine();
sInput = limpiaString(sInput);
            List<string> respuestas = new List<string>(NumeroRespuesta);
respuestas = econtrarcadadena(sInput);
if(sInput.Equals("Adios"))
{
Console.WriteLine("Ha sido un placer hablar contigo, hasta la proxima ocasión");
              Console.In.Read();
break;
}
else if(respuestas.Count == 0)
{
Console.WriteLine("No estoy seguro de entender lo que me estas diciendo.");
    }
else
{
Random generator = new Random();
int nSeleccion = generator.Next(0, NumeroRespuesta);
string sPrevResponse = sRespuesta;
sRespuesta = respuestas[nSeleccion];
if(sRespuesta == sPrevResponse)
{
respuestas.RemoveAt(nSeleccion);
                    nSeleccion = generator.Next(0, NumeroRespuesta - 1);
                    sRespuesta = respuestas[nSeleccion];
}
Console.WriteLine(sRespuesta);
   }
   }
   }
    }
  }
}

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.