added sol for feladat 1
This commit is contained in:
@@ -9,48 +9,249 @@ namespace Program
|
||||
{
|
||||
class Program
|
||||
{
|
||||
public static List<Doboz> Boxes = new List<Doboz>();
|
||||
//public static List<List<char>> Boxes = new List<List<char>>();
|
||||
public static List<List<(char, bool)>> Boxes = new List<List<(char, bool)>>();
|
||||
static void Main(string[] args)
|
||||
{
|
||||
string path = "../../../forrasok/dobozok.txt";
|
||||
var AllBoxes = File.ReadAllText(path).ToCharArray();
|
||||
|
||||
foreach (var item in AllBoxes)
|
||||
//TaskA(AllBoxes);
|
||||
TaskBWithDefectiveBoxes(AllBoxes);
|
||||
|
||||
}
|
||||
/*
|
||||
static void TaskA(char[] AllBoxes)
|
||||
{
|
||||
Boxes.Clear();
|
||||
|
||||
foreach (char character in AllBoxes)
|
||||
{
|
||||
Doboz doboz = new Doboz(item);
|
||||
foreach (var box in Boxes)
|
||||
bool shouldIAddIt = true;
|
||||
|
||||
foreach (var location in Boxes)
|
||||
{
|
||||
if (doboz.Type == 'A')
|
||||
if (CanContain(location.Last(), character))
|
||||
{
|
||||
location.Add(character);
|
||||
shouldIAddIt = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (box.Type == 'A' && box.Children == null)
|
||||
{
|
||||
if (doboz.Type == 'B' || doboz.Type == 'C')
|
||||
{
|
||||
box.AddChildren(doboz);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (box.Type == 'B' && box.Children == null)
|
||||
{
|
||||
if (doboz.Type == 'C')
|
||||
{
|
||||
box.AddChildren(doboz);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Boxes.Add(doboz);
|
||||
|
||||
if (shouldIAddIt)
|
||||
{
|
||||
Boxes.Add(new List<char> { character });
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in Boxes)
|
||||
Console.WriteLine($"Task A: Minimum number of wrapped packages: {Boxes.Count}");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
static void TaskBWithDefectiveBoxes(char[] AllBoxes)
|
||||
{
|
||||
Boxes.Clear();
|
||||
int maxActiveLocations = 0;
|
||||
int aCount = 0;
|
||||
int bCount = 0;
|
||||
|
||||
foreach (char character in AllBoxes)
|
||||
{
|
||||
item.PrintBoxContent();
|
||||
bool shouldIAddIt = true;
|
||||
bool isDefective = false;
|
||||
|
||||
if (character == 'A')
|
||||
{
|
||||
aCount++;
|
||||
if (aCount % 25 == 0)
|
||||
{
|
||||
isDefective = true;
|
||||
}
|
||||
}
|
||||
else if (character == 'B')
|
||||
{
|
||||
bCount++;
|
||||
if (bCount % 25 == 0)
|
||||
{
|
||||
isDefective = true;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var location in Boxes)
|
||||
{
|
||||
if (CanContain(location.Last(), (character, isDefective)))
|
||||
{
|
||||
location.Add((character, isDefective));
|
||||
shouldIAddIt = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldIAddIt)
|
||||
{
|
||||
Boxes.Add(new List<(char, bool)> { (character, isDefective) });
|
||||
}
|
||||
|
||||
// Remove wrapped locations (those containing 'C')
|
||||
Boxes.RemoveAll(location => location.Any(box => box.Item1 == 'C'));
|
||||
Boxes.RemoveAll(location => location.Any(box => box.Item1 == 'B' && box.Item2 == true));
|
||||
|
||||
maxActiveLocations = Math.Max(maxActiveLocations, Boxes.Count);
|
||||
}
|
||||
|
||||
Console.WriteLine($"Task B with Defective Boxes: Maximum number of active packing locations: {maxActiveLocations}");
|
||||
}
|
||||
|
||||
static bool CanContain((char, bool) outer, (char, bool) inner)
|
||||
{
|
||||
char outerType = outer.Item1;
|
||||
bool outerDefective = outer.Item2;
|
||||
char innerType = inner.Item1;
|
||||
bool innerDefective = inner.Item2;
|
||||
|
||||
if (outerType == 'A')
|
||||
{
|
||||
if (outerDefective)
|
||||
{
|
||||
return innerType == 'C';
|
||||
}
|
||||
else
|
||||
{
|
||||
return innerType == 'B' || innerType == 'C';
|
||||
}
|
||||
}
|
||||
if (outerType == 'B')
|
||||
{
|
||||
if (outerDefective)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return innerType == 'C';
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
static void TaskB(char[] AllBoxes)
|
||||
{
|
||||
Boxes.Clear();
|
||||
int maxActiveLocations = 0;
|
||||
|
||||
foreach (char character in AllBoxes)
|
||||
{
|
||||
bool shouldIAddIt = true;
|
||||
|
||||
foreach (var location in Boxes)
|
||||
{
|
||||
if (CanContain(location.Last(), character))
|
||||
{
|
||||
location.Add(character);
|
||||
shouldIAddIt = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldIAddIt)
|
||||
{
|
||||
Boxes.Add(new List<char> { character });
|
||||
}
|
||||
|
||||
// Remove wrapped locations (those containing 'C')
|
||||
Boxes.RemoveAll(location => location.Contains('C'));
|
||||
|
||||
maxActiveLocations = Math.Max(maxActiveLocations, Boxes.Count);
|
||||
}
|
||||
|
||||
Console.WriteLine($"Task B: Maximum number of active packing locations: {maxActiveLocations}");
|
||||
}
|
||||
|
||||
static bool CanContain(char outer, char inner)
|
||||
{
|
||||
if (outer == 'A' && (inner == 'B' || inner == 'C'))
|
||||
return true;
|
||||
if (outer == 'B' && inner == 'C')
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
static void Feladat2(string path, char[] AllBoxes)
|
||||
{
|
||||
foreach (var character in AllBoxes)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
static void Feladat1(string path, char[] AllBoxes)
|
||||
{
|
||||
|
||||
foreach (char character in AllBoxes)
|
||||
{
|
||||
if (character == 'A')
|
||||
{
|
||||
Boxes.Add(new List<char> { 'A' });
|
||||
continue;
|
||||
}
|
||||
|
||||
bool shouldIAddIt = false;
|
||||
int counter = 0;
|
||||
foreach (var hely in Boxes)
|
||||
{
|
||||
if (character == 'B')
|
||||
{
|
||||
if (!hely.Contains('B') && !hely.Contains('C'))
|
||||
{
|
||||
hely.Add('B');
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (character == 'C')
|
||||
{
|
||||
if (!hely.Contains('C'))
|
||||
{
|
||||
hely.Add('C');
|
||||
break;
|
||||
}
|
||||
}
|
||||
counter++;
|
||||
}
|
||||
|
||||
if (counter == Boxes.Count)
|
||||
{
|
||||
shouldIAddIt = true;
|
||||
}
|
||||
|
||||
if (shouldIAddIt)
|
||||
{
|
||||
Boxes.Add(new List<char> { character });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach (var item in Boxes)
|
||||
{
|
||||
foreach (char character in item)
|
||||
{
|
||||
Console.Write($"{character}");
|
||||
}
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
Console.WriteLine($"1. feladat a: {Boxes.Count}");
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user