Files
BAI/BAI1/Program.cs
KaseToatz1337 58ebd8c8b8 fix 1st thingy
2024-10-03 15:32:25 +02:00

161 lines
5.2 KiB
C#

using System;
using System.Collections.Generic;
namespace BAI
{
public class BAI_Afteken1
{
/// ------------------------------------------------------------
/// <summary>
/// Filtert een lijst. Hierbij worden alle elementen die maar
/// 1x voorkomen verwijderd
/// </summary>
/// <param name="lijst">De lijst die wordt doorlopen
/// (wordt in functie veranderd)</param>
/// ------------------------------------------------------------
public static void Opdr1FilterList(List<int> lijst)
{
Dictionary<int, int> positions = [];
for (int i = 0; i < lijst.Count; i++)
{
if (positions.TryGetValue(lijst[i], out _))
{
positions[lijst[i]] = -1;
}
else
{
positions[lijst[i]] = i;
}
}
for (int i = 0; i < lijst.Count;)
{
if (positions[lijst[i]] != -1)
{
lijst.RemoveAt(i);
}
else
{
i++;
}
}
}
/// ------------------------------------------------------------
/// <summary>
/// Maakt een queue van de getallen 1 t/m 50 (in die volgorde
/// toegevoegd)
/// </summary>
/// <returns>Een queue met hierin 1, 2, 3, .., 50</returns>
/// ------------------------------------------------------------
public static Queue<int> Opdr2aQueue50()
{
Queue<int> queue = new();
for (int i = 1; i <= 50; i++)
{
queue.Enqueue(i);
}
return queue;
}
/// ------------------------------------------------------------
/// <summary>
/// Haalt alle elementen uit een queue. Voegt elk element dat
/// deelbaar is door 4 toe aan een stack
/// </summary>
/// <param name="queue">De queue die uitgelezen wordt</param>
/// <returns>De stack met hierin de elementen die deelbaar zijn
/// door 4</returns>
/// ------------------------------------------------------------
public static Stack<int> Opdr2bStackFromQueue(Queue<int> queue)
{
Stack<int> stack = new();
while (queue.TryDequeue(out int value))
{
if (value % 4 == 0)
{
stack.Push(value);
}
}
return stack;
}
/// ------------------------------------------------------------
/// <summary>
/// Maakt een stack met hierin unieke random getallen</summary>
/// <param name="lower">De ondergrens voor elk getal (inclusief)</param>
/// <param name="upper">De bovengrens voor elk getal (inclusief)</param>
/// <param name="count">Het aantal getallen</param>
/// <returns>De stack met unieke random getallen</returns>
/// ------------------------------------------------------------
public static Stack<int> Opdr3RandomNumbers(int lower, int upper, int count)
{
Stack<int> stack = new();
Dictionary<int, bool> exists = [];
Random random = new();
int next;
for (int i = 0; i < count;)
{
next = random.Next(lower, upper + 1);
if (!exists.ContainsKey(next))
{
stack.Push(next);
exists[next] = true;
i++;
}
}
return stack;
}
/// ------------------------------------------------------------
/// <summary>
/// Drukt een IEnumerable (List, Stack, Queue, ..) van getallen
/// af naar de Console
/// <param name="enu">De IEnumerable om af te drukken</param>
/// ------------------------------------------------------------
static void PrintEnumerable(IEnumerable<int> enu)
{
foreach (int i in enu)
{
Console.Write($"{i} ");
}
Console.WriteLine();
}
static void Main(string[] args)
{
List<int> list;
Queue<int> queue;
Stack<int> stack;
Console.WriteLine();
Console.WriteLine("=== Opdracht 1 : FilterList ===");
list = new List<int>() { 1, 3, 5, 7, 3, 8, 9, 5 };
PrintEnumerable(list);
Opdr1FilterList(list);
PrintEnumerable(list);
Console.WriteLine();
Console.WriteLine("=== Opdracht 2 : Stack / Queue ===");
queue = Opdr2aQueue50();
PrintEnumerable(queue);
stack = Opdr2bStackFromQueue(queue);
PrintEnumerable(stack);
Console.WriteLine();
Console.WriteLine("=== Opdracht 3 : Random number ===");
stack = Opdr3RandomNumbers(100, 150, 10);
PrintEnumerable(stack);
stack = Opdr3RandomNumbers(10, 15, 6);
PrintEnumerable(stack);
stack = Opdr3RandomNumbers(10_000, 50_000, 40_001);
}
}
}