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.
Tips: Uppgifterna 3 tom 6 kan använda färdiga metoder från
String
.
Den här uppgiften handlar om Collatz conjecturen. 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)
.
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
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.
> r
Input text > qwerty
qwerty
> p
Input text > asdfgh
asdfgh
> q
(program avslutat)
Skriv en metod som givet en sträng (en svensk mening) översätter denna till rövarspråket.
Skriv en metod som givet en sträng (en svensk mening) översätter denna till Pig latin. Metoden skall använda en boolesk hjälpmetod som avgör om ett tecken är en vokal eller inte.
Modifiera kommandoradsmenyn så att metoderna från uppgifter 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.
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:
U
till en sträng som slutar på I
. Exempel: MI
blir MIU
.
M
(ändra Mx
till Mxx
). Exempel: MIU
blirMIUIU
.
III
med ett U
. Exampel: MUIIIU
blir MUUU
.
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). Fundera på om vi kan hitta MU
över huvudtaget. Om inte förklara i några meningar varför inte.
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 .....