Opzione 1 + opzione 2 "Mind Size: # **MEGAGIGA OVERFLOW**"
This commit is contained in:
parent
aaad7bb706
commit
cf667c0c4c
118
Program.cs
118
Program.cs
@ -1,4 +1,6 @@
|
|||||||
namespace strings_2;
|
using System.Text;
|
||||||
|
|
||||||
|
namespace strings_2;
|
||||||
|
|
||||||
class Program {
|
class Program {
|
||||||
static void Main(string[] args) {
|
static void Main(string[] args) {
|
||||||
@ -34,7 +36,12 @@ class Program {
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
Console.Clear();
|
Console.Clear();
|
||||||
|
if (FrasePalindroma()) {
|
||||||
|
Console.WriteLine("La frase è palindroma");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Console.WriteLine("La frase non è palindroma");
|
||||||
|
}
|
||||||
Pausa();
|
Pausa();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@ -90,7 +97,7 @@ class Program {
|
|||||||
char[] metà1, metà2;
|
char[] metà1, metà2;
|
||||||
do {
|
do {
|
||||||
Console.Write("Inserire una parola: ");
|
Console.Write("Inserire una parola: ");
|
||||||
stringa = Console.ReadLine().ToLower(); //convertita in minuscolo per identificare palindromi case insensitive
|
stringa = Console.ReadLine();
|
||||||
if (stringa.Contains(' ')) {
|
if (stringa.Contains(' ')) {
|
||||||
Console.WriteLine("È consentito inserire solo una parola. Per inserire una frase scegliere l'opzione 2.");
|
Console.WriteLine("È consentito inserire solo una parola. Per inserire una frase scegliere l'opzione 2.");
|
||||||
Pausa();
|
Pausa();
|
||||||
@ -98,6 +105,111 @@ class Program {
|
|||||||
}
|
}
|
||||||
while (stringa.Contains(' '));
|
while (stringa.Contains(' '));
|
||||||
|
|
||||||
|
//modifica della stringa per trasformarla in una sequenza di lettere ASCII
|
||||||
|
{
|
||||||
|
stringa = stringa.ToLower();//convertita in minuscolo per identificare palindromi case insensitive
|
||||||
|
|
||||||
|
//converto la stringa inserita da codifica Unicode a codifica ASCII
|
||||||
|
Encoding ascii = Encoding.ASCII;
|
||||||
|
Encoding unicode = Encoding.Unicode;
|
||||||
|
char[] chars = stringa.ToCharArray();
|
||||||
|
byte[] bytes = new byte[chars.Length];
|
||||||
|
|
||||||
|
for (int i = 0; i < chars.Length; i++) {
|
||||||
|
bytes[i] = Convert.ToByte(chars[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Encoding.Convert(unicode, ascii, bytes);
|
||||||
|
|
||||||
|
for (int i = 0; i < chars.Length; i++) {
|
||||||
|
chars[i] = Convert.ToChar(bytes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//i numeri nei seguenti cicli for sono caratteri non lettere in codifica ASCII e separano i vari blocchi di questi caratteri che contornano i blocchi con le lettere
|
||||||
|
//******************************************************************************************************************************************************************************//
|
||||||
|
for (int i = 0; i <= 47; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
for (int i = 58; i < 64; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
for (int i = 91; i < 96; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
for (int i = 123; i < 127; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
//******************************************************************************************************************************************************************************//
|
||||||
|
}
|
||||||
|
|
||||||
|
//la divisione serve per escludere la lettera che divide perfettamente a metà la parola con lettere dispari
|
||||||
|
if (stringa.Length % 2 == 0) {
|
||||||
|
metà1 = stringa.Substring(0, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la prima e la converto in array di char per riordinarne le lettere
|
||||||
|
metà2 = stringa.Substring(stringa.Length / 2, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la seconda e la converto in array di char per riordinarne le lettere
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
metà1 = stringa.Substring(0, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la prima e la converto in array di char per riordinarne le lettere
|
||||||
|
metà2 = stringa.Substring((stringa.Length / 2) + 1, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la seconda e la converto in array di char per riordinarne le lettere
|
||||||
|
}
|
||||||
|
|
||||||
|
string metàOrdinata1 = string.Join("", InsertionSort(metà1));//ordino la prima metà della stringa e la riconverto da array di char in stringa
|
||||||
|
string metàOrdinata2 = string.Join("", InsertionSort(metà2));//ordino la secondo metà della stringa e la riconverto da array di char in stringa
|
||||||
|
//le due metà prima vengono convertite in array di char per riordinarle, poi vengono convertite in stringa dopo essere state ordinate per calcolarne l'hash con il metodo integrato
|
||||||
|
|
||||||
|
if (metàOrdinata1.GetHashCode() == metàOrdinata2.GetHashCode()) {//se l'hash delle due metà ordinate coincide
|
||||||
|
ritorno = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ritorno = false;
|
||||||
|
}
|
||||||
|
return ritorno;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool FrasePalindroma() {
|
||||||
|
string stringa;
|
||||||
|
bool ritorno;
|
||||||
|
char[] metà1, metà2;
|
||||||
|
|
||||||
|
Console.Write("Inserire una frase: ");
|
||||||
|
stringa = Console.ReadLine();
|
||||||
|
|
||||||
|
//modifica della stringa per trasformarla in una sequenza di lettere ASCII
|
||||||
|
{
|
||||||
|
stringa = stringa.ToLower();//convertita in minuscolo per identificare palindromi case insensitive
|
||||||
|
|
||||||
|
//converto la stringa inserita da codifica Unicode a codifica ASCII
|
||||||
|
Encoding ascii = Encoding.ASCII;
|
||||||
|
Encoding unicode = Encoding.Unicode;
|
||||||
|
char[] chars = stringa.ToCharArray();
|
||||||
|
byte[] bytes = new byte[chars.Length];
|
||||||
|
|
||||||
|
for (int i = 0; i < chars.Length; i++) {
|
||||||
|
bytes[i] = Convert.ToByte(chars[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Encoding.Convert(unicode, ascii, bytes);
|
||||||
|
|
||||||
|
for (int i = 0; i < chars.Length; i++) {
|
||||||
|
chars[i] = Convert.ToChar(bytes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//i numeri nei seguenti cicli for sono caratteri non lettere in codifica ASCII e separano i vari blocchi di questi caratteri che contornano i blocchi con le lettere
|
||||||
|
//******************************************************************************************************************************************************************************//
|
||||||
|
for (int i = 0; i <= 47; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
for (int i = 58; i < 64; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
for (int i = 91; i < 96; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
for (int i = 123; i < 127; i++) {
|
||||||
|
stringa = stringa.Replace(Convert.ToString(Convert.ToChar(i)), "");
|
||||||
|
}
|
||||||
|
//******************************************************************************************************************************************************************************//
|
||||||
|
}
|
||||||
|
|
||||||
//la divisione serve per escludere la lettera che divide perfettamente a metà la parola con lettere dispari
|
//la divisione serve per escludere la lettera che divide perfettamente a metà la parola con lettere dispari
|
||||||
if (stringa.Length % 2 == 0) {
|
if (stringa.Length % 2 == 0) {
|
||||||
metà1 = stringa.Substring(0, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la prima e la converto in array di char per riordinarne le lettere
|
metà1 = stringa.Substring(0, stringa.Length / 2).ToCharArray(); //divido la stringa a metà, prendo la prima e la converto in array di char per riordinarne le lettere
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("strings_2")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("strings_2")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+97c65ade8e1a0e7e912b959c732d32df692d42e4")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+aaad7bb7066b87b0eb2479e7abcd851c0c2aafcd")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("strings_2")]
|
[assembly: System.Reflection.AssemblyProductAttribute("strings_2")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("strings_2")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("strings_2")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
049a95f073c2bbaacb9a0f60962811b08e9cd32894ba1b07148583ce8cae646e
|
8cd12be905f68b2aa3f6e4d50027e58bfbdf6f37fa6b04bf359c870c810d393c
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user