////zie Blackboard voor opdrachten uitleg //Palindrome checker. //Schrijf een methode (Paldindroom) die gegeven een string bekijkt of het een palindroom betreft. //Leestekens, spaties en case (kleine of hooddletters) moet je negeren. //gebruik 1 Stack en 1 Queue. //tip: itereer 1 keer door de string! //De voorbeeld palindromen: http://home.wxs.nl/~avdw3b/palindr.html public bool Palindroom(string input) { IStack <char> s = StackFactory.CreateStack <char>(); IQueue <char> q = QueueFactory.CreateQueue <char>(); throw new NotImplementedException(); }
////zie Blackboard voor opdrachten uitleg //Palindrome checker. //Schrijf een methode (Paldindroom) die gegeven een string bekijkt of het een palindroom betreft. //Leestekens, spaties en case (kleine of hooddletters) moet je negeren. //gebruik 1 Stack en 1 Queue. //tip: itereer 1 keer door de string! //De voorbeeld palindromen: http://home.wxs.nl/~avdw3b/palindr.html public bool Palindroom(string input) { List <char> ignore = new List <char> { ' ', '.', ',', '\'' }; IStack <char> s = StackFactory.CreateStack <char>(); IQueue <char> q = QueueFactory.CreateQueue <char>(); if (input == null) { return(false); } input = input.ToLower(); foreach (char karakter in input) { if (!ignore.Contains(karakter)) { s.Push(karakter); q.Enqueue(karakter); } } if (s.Count == 0) { return(false); } for (int i = 0; i < s.Count; i++) { if (s.Pop() != q.Dequeue()) { return(false); } } return(true); }
////zie Blackboard voor opdrachten uitleg //Opgave 2. Er staan k mensen in een rij (queue). //De mensen worden in volgorde genummerd van 1,2,3,...,k //als je vooraankomt bij het loket wordt je in tweeën gesplitst en sluit je achteraan. //wie wordt als nummer n behandelt (staat vooraan in de rij). //je moet dus n-1 mensen behandelen, en dan staat de n-de vooraan in de rij //Optioneel: je kan dit ook uitrekenen zonder gebruik te maken van een queue // er bestaat een formule om dit in een keer uitterekenen geven n en k. // De optionele vraag is, bedenk deze formule en maak hiervoor een programma. //Voorbeeld //k = 4, n = 3 (test1) //q = 1 2 3 4 n=1 ==> 1 //q = 2 3 4 1 1 n=2 ==> 2 //q = 3 4 1 1 2 2 n=3 ==> 3 (antwoord) //k = 4, n = 5 (test2) //q = 4 1 1 2 2 3 3 n=4 ==> 4 //q = 1 1 2 2 3 3 4 4 n=5 ==> 1 (antwoord) //q = 1 2 2 3 3 4 4 1 1 n=6 ==> 1 //etc public int DoubleQueueProblem(int k, int n) { IQueue <int> people = QueueFactory.CreateQueue <int>(); for (int i = 0; i < k; i++) { people.Enqueue(i + 1); } for (int i = 1; i < n; i++) { int getal = people.Dequeue(); people.Enqueue(getal); people.Enqueue(getal); } return(people.Dequeue()); }
////zie Blackboard voor opdrachten uitleg //Opgave 2. Er staan k mensen in een rij (queue). //De mensen worden in volgorde genummerd van 1,2,3,...,k //als je vooraankomt bij het loket wordt je in tweeën gesplitst en sluit je achteraan. //wie wordt als nummer n behandelt (staat vooraan in de rij). //je moet dus n-1 mensen behandelen, en dan staat de n-de vooraan in de rij //Optioneel: je kan dit ook uitrekenen zonder gebruik te maken van een queue // er bestaat een formule om dit in een keer uitterekenen geven n en k. // De optionele vraag is, bedenk deze formule en maak hiervoor een programma. //Voorbeeld //k = 4, n = 3 (test1) //q = 1 2 3 4 n=1 ==> 1 //q = 2 3 4 1 1 n=2 ==> 2 //q = 3 4 1 1 2 2 n=3 ==> 3 (antwoord) //k = 4, n = 5 (test2) //q = 4 1 1 2 2 3 3 n=4 ==> 4 //q = 1 1 2 2 3 3 4 4 n=5 ==> 1 (antwoord) //q = 1 2 2 3 3 4 4 1 1 n=6 ==> 1 //etc public int DoubleQueueProblem(int k, int n) { IQueue <int> people = QueueFactory.CreateQueue <int>(); throw new NotImplementedException(); }