using System.Collections.Generic;
using System.Globalization;
using System.Net.Http.Headers;
using System.Security.Claims;
static void Main(string[] args)
const string vardaiTema = "VARDAI" ;
const string lietuvosMiestaiTema = "LIETUVOS MIESTAI";
const string valstybesTema = "VALSTYBES";
const string prezidentaiTema = "PREZIDENTAI";
readonly static List<string> TemuSarasas = new List<string> { "VARDAI", "LIETUVOS MIESTAI", "VALSTYBES", "PREZIDENTAI" };
readonly static List<string> vardai = new List<string> { "Virginija", "Petras", "Rolandas", "Juozas", "Paulius", "Egidijus", "Povilas", "Raimis", "Dovydas", "Jonas" };
readonly static List<string> miestaiLt = new List<string> { "Vilnius", "Kaunas", "Ignalina", "Utena", "Zarasai", "Klaipeda", "Alytus", "Taurage", "Siaulia", "Prienai" };
readonly static List<string> valstybes = new List<string> { "Lietuva", "Austrija", "Latvija", "Vokietija", "Japonija", "Italija", "Kipras", "Malis", "Estija", "Turkija" };
readonly static List<string> prezidentai = new List<string> { "Brazauskas", "Paksas", "Adamkus", "Grybauskaite", "Nauseda", "Putinas", "Trumpas", "Obama", "Kenedis", "Klintonas" };
static Dictionary<string, List<string>> panaudotiZodziai = new Dictionary<string, List<string>>();
public static void Pradzia()
var tema = TemosPasirinkimas();
var parinktasZodis = AtsitiktinioZodzioPasirinkimas(tema, GautiZodziusPagalTemasMasyvas());
if (parinktasZodis == null)
Console.WriteLine("Sioje temoje nebera zodziu. Ar rinksites kita tema T/N");
var neteisingiSpejimai = new List<string>();
var teisingiSpejimai = new string[parinktasZodis.Length];
PildytiAtrinktuZodziuMasyva(tema, parinktasZodis);
ZodzioStrukturosParodymas(teisingiSpejimai);
bool leidziamaSpeti = true;
string spejimas = IsvestiRaidesArZodzioSpejima();
bool arSpetasZodis = ArSpetasZodis(spejimas);
bool arTeisinga = ArZodisTeisingas(parinktasZodis, ref teisingiSpejimai);
IsvestiLaimejote(parinktasZodis);
IsveskDesineKoja(parinktasZodis);
else if (ArZodisTeisingas(parinktasZodis, ref teisingiSpejimai))
IsvestiLaimejote(parinktasZodis);
bool arBuvoSpetaRaide = PatikrinimasArRaideBuvoSpeta(neteisingiSpejimai, spejimas);
var raidesIndeksai = TikrintiRaidesGrazintiIndeksus(parinktasZodis, spejimas);
if (raidesIndeksai.Count == 0)
PridetiPrieNeteisingu(spejimas, neteisingiSpejimai);
PridetiRaideITeisingaVietaZodyje(spejimas, raidesIndeksai, ref teisingiSpejimai);
if (neteisingiSpejimai.Count() == gyvybes)
IsveskDesineKoja(parinktasZodis);
_ = leidziamaSpeti == false;
IsvestiPaveikslely(neteisingiSpejimai);
IsvestiSpetasNeteisingasRaide(neteisingiSpejimai);
ZodzioStrukturosParodymas(teisingiSpejimai);
spejimas = IsvestiRaidesArZodzioSpejima();
Console.WriteLine("Pakartoti zaidima T/N?:");
kartoti = Console.ReadLine() == "T";
private static void PildytiAtrinktuZodziuMasyva(string tema, string parinktasZodis)
if (panaudotiZodziai.ContainsKey(tema))
panaudotiZodziai[tema].Add(parinktasZodis);
panaudotiZodziai.Add(tema, new List<string> { parinktasZodis });
private static void IsvestiSpetasNeteisingasRaide(List<string> neteisingiSpejimai)
Console.WriteLine("\nSpetos raides: ");
foreach(var neteisingasSpejimas in neteisingiSpejimai)
Console.WriteLine($"{neteisingasSpejimas}");
private static void PridetiRaideITeisingaVietaZodyje(string spejimas,List<int>raidesIndeksai, ref string[] teisingiSpejimai)
foreach(var indeksas in raidesIndeksai)
teisingiSpejimai[indeksas] = spejimas;
private static void PridetiPrieNeteisingu(string spejimas, List<string> neteisingiSpejimai)
neteisingiSpejimai.Add(spejimas);
private static List<int> TikrintiRaidesGrazintiIndeksus(string parinktasZodis, string spejimas)
var zodisMasyve = parinktasZodis.ToCharArray();
var rezultatas = new List<int>();
for (int i = 0; i <zodisMasyve.Length; i++)
if(zodisMasyve[i].ToString().ToUpper()==spejimas.ToUpper())
private static bool ArZodisTeisingas(string zodis, string[] spejimas)
string tikrinamasZodis = String.Concat(spejimas);
return zodis.ToUpper==tikrinamasZodis.ToUpper;
private static bool PatikrinimasArRaideBuvoSpeta(List<string> neteisingiSpejimai,string spejimas)
return neteisingiSpejimai.Contains(spejimas);
static Dictionary<string, List<string>> GautiZodziusPagalTemasMasyvas()
return new Dictionary<string, List<string>>
{ "VARDAI", new List<string>(){ "Virginija", "Petras", "Rolandas", "Juozas", "Paulius", "Egidijus", "Povilas", "Raimis", "Dovydas", "Jonas" } },
{ "LIETUVOS MIESTAI", new List<string>(){ "Vilnius", "Kaunas", "Ignalina", "Utena", "Zarasai", "Klaipeda", "Alytus", "Taurage", "Siaulia", "Prienai" } },
{ "VALSTYBES", new List<string>(){"Lietuva", "Austrija", "Latvija", "Vokietija", "Japonija", "Italija", "Kipras", "Malis", "Estija", "Turkija" } },
{ "PREZIDENTAI", new List<string>(){ "Brazauskas", "Paksas", "Adamkus", "Grybauskaite", "Nauseda", "Putinas", "Trumpas", "Obama", "Kenedis", "Klintonas" } },
private static string TemosPasirinkimas()
Console.WriteLine("Pasirinkite tema:");
for (int i = 0; i < TemuSarasas.Count; i++)
Console.WriteLine("{0}. {1}", i+1, TemuSarasas[i]);
while(temosNr>TemuSarasas.Count || temosNr == 0)
var temosChar = Console.ReadLine();
int.TryParse(temosChar.ToString(), out temosNr);
if(temosNr>TemuSarasas.Count || temosNr == 0)
Console.WriteLine($"Tokios temos {temosNr} nera. Bnadykite is naujo:");
Console.WriteLine($"Tema: {TemuSarasas[temosNr-1]}");
return TemuSarasas[temosNr - 1];
static string AtsitiktinioZodzioPasirinkimas(string tema, Dictionary<string, List<string>> zodziaiPagalTemas)
var atsitiktinis = new Random();
var zodziai = zodziaiPagalTemas[tema];
var atsistiktinisSkaicius = atsitiktinis.Next(0, zodziai.Count);
return zodziai[atsistiktinisSkaicius].ToUpper();
private static void ZodzioStrukturosParodymas(string[] teisingiSpejimai)
var sb = new StringBuilder("Zodis: ");
foreach(var raide in teisingiSpejimai)
if (string.IsNullOrWhiteSpace(raide)) sb.Append("_ ");
else sb.Append($"{raide}");
var zodzioStrukturosParodymas = sb.ToString();
Console.WriteLine(zodzioStrukturosParodymas);
private static string IsvestiRaidesArZodzioSpejima()
Console.WriteLine("\n\nSpekite raide ar zody:");
return Console.ReadLine().ToUpper();
private static bool ArSpetasZodis(string spejimas)
return spejimas.Length > 1;
private static bool ArSpetaRaide(string spejimas)
return spejimas.Length == 1;
private static void IsvestiPaveikslely(List<string> neteisingiSpejimai)
switch (neteisingiSpejimai.Count)
static void PradinisPiesinys()
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"_ _ _ _");
static void IsveskGalva()
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"_ _ _ _");
static void IsveskKakla()
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"| |");
Console.WriteLine(@"_ _ _ _");
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"| |");
Console.WriteLine(@"| O");
Console.WriteLine(@"_ _ _ _");
static void IsveskkaireRanka()
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"| \|");
Console.WriteLine(@"| O");
Console.WriteLine(@"_ _ _ _");
static void IsveskDesineRanka()
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"| \|/");
Console.WriteLine(@"| O");
Console.WriteLine(@"_ _ _ _");
static void IsveskKaireKoja()
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"| \|/");
Console.WriteLine(@"| O");
Console.WriteLine(@"| /");
Console.WriteLine(@"_ _ _ _");
static void IsveskDesineKoja(string zodis)
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"| o");
Console.WriteLine(@"| \|/");
Console.WriteLine(@"| O");
Console.WriteLine(@"| / \");
Console.WriteLine(@"_ _ _ _");
Console.WriteLine("JUS PRALAIMEJOTE!!!");
Console.WriteLine("Zodis buvo: {0}",zodis);
static void IsvestiLaimejote(string word)
Console.WriteLine(@"- - - - - - |");
Console.WriteLine(@"_ _ _ _");
Console.WriteLine("Sveikiname jus Laimejote.Zodis buvo:{0}",word);