*** Veckouppgifter 1 för Z *** Alla uppgifter löser man genom att skriva klart metoder i kodskelettet, Lab5_skel, se kommentarer i detta. Ni behöver aldrig kontrollera indata, användaren skriver alltid rätt. Redovisas allt genom att demo-köras för handledare. TIPS: Uppgifterna 3)-6) kan använda färdiga metoder från String Uppgifter 1.) Collatz conjecture Länken beskriver en talsekvens som alltid slutar på 1. Se http://en.wikipedia.org/wiki/Collatz_conjecture Skriv ett program som läser in två tal n > 2 och m > n och skriver ut *alla* sekvenser som genereras av talen i intervallet [n, m). Exempel: Input n > 23 Input m > 34 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 24, 12, 6, 3, 10, 5, 16, 8, 4, 2, 1 25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 30, 15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 32, 16, 8, 4, 2, 1 33, 100, 50, 25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 ----------------------------------------------------------------------------------------------- 2) Skapa en kommandoradsmeny med valen p, r och q (q avslutar menyn (metoden)). Vid valen r och p görs en inläsning och en utskift av den inlästa strängen. Kommandoraden skall byggas med while och switch-satser. Exempel > r Input text > qwerty qwerty > p Input text > asdfgh asdfgh > q (program avslutat) ---------------------------------------------------------------------------------------------------- 3) Skriv en metod som givet en sträng (en svensk mening) översätter denna till rövarspråket Se http://sv.wikipedia.org/wiki/R%C3%B6varspr%C3%A5ket ------------------------------------------------------------------------------------------ 4) Skriv en metod som givet en sträng (en svensk mening) översätter denna till Pig Latin http://sv.wikipedia.org/wiki/Pig_Latin Metoden skall använda en boolesk hjälpmetod som avgör om ett tecken är en vokal eller inte. -------------------------------------------------------------------------------------------- 5) Modifiera kommandoradsmenyn så att metoderna från 3) och 4) anropas då man väljer "r" respektive "p" Vid valen läser man in en mening på svenska som skrivs ut översatt till röverspråket eller Pig latin. -------------------------------------------------------------------------------------------- 6) Vi startar med strängen "MI". Kan man genom att upprepade gånger, i valfri ordning, applicera reglerna nedan transformera strängen till "MU"? T.ex. "MI", (applicera reglerna) 1,2,2,3,1,4,2,3,4,4,2,3 ... ger detta "MU"? Regler 1. Lägg till U till en sträng som slutar på I. Exampel: MI blir MIU. 2. Fördubbla strängen efter M (ändra Mx till Mxx). Exampel: MIU blir MIUIU. 3. Ersätt alla III med ett U. Exampel: MUIIIU blir MUUU. 4. Ta bor alla UU. Exempel: MUUU blir MU. Skriv en metod som "provar allt" genom att testa alla kombinationer av reglerna. Spara resultaten i ett fält av strängar (max =256+1). Bryt ner metoden i undermetoder, en metod för varje regel. Programmet genererar alla strängar och går därefter igenom alla och söker efter MU. Om MU hittas skriver programmet ut "FOUND!" (ni kan skriva ut de genererade strängarna också, som nedan) Exempel 0 : MI 1 : MIU 2 : MII 3 : MI 4 : MI 5 : MIU 6 : MIUIU 7 : MIU 8 : MIU 9 : MIIU 10 : MIIII 11 : MII 12 : MII 13 : MIU 14 : MII 15 : MI 16 : MI 17 : MIU 18 : MII 19 : MI 20 : MI 21 : MIU 22 : MIUIU 23 : MIU 24 : MIU 25 : MIUIU 26 : MIUIUIUIU 27 : MIUIU 28 : MIUIU 29 : MIU 30 : MIUIU 31 : MIU ... ... inget MU än .....