Tesztmegoldások
Codecool
Adott egy egyre növekvő téglarakás. A kérdés, hogy a 10. téglarakás hány téglából fog állni?
-
Egyre növekvő téglarakás című fejezet
Csakis papír és toll segítségével állapítsuk, hogy hány olyan kétjegyű szám van, ahol az egyik számjegy több, mint a másik?
-
Hány számjegy avagy mennyi digit? - II. című fejezet
Forrás - Source: codereview.stackexchange.com
5 doors are closed. In the first pass, I open all of them. In the second pass, I toggle every second door. In the third pass, I toggle every third door. I continue this until I have completed the 5th pass. Find all the doors that will remain open after 5 passes.
Adott 5 zárt ajtó egy átjáróban. Az 1. átkeléskor kinyitom az összeset, a 2. átkeléskor bezárom minden másodikat, a 3. átkeléskor bezárom minden harmadikat. Ezt ötször csinálom meg (tehát az átkelések száma = ajtók száma). Hány ajtó marad nyitva az 5. kör után?
A fenti angol nyelvű feltételmegadás szerintem nem teljes, mert zárt ajtó esetén azt újból ki kell nyitnunk. Ha jól emlékszem, a Codecool-szöveg ezt a feltételt tartalmazta, bár elképzelhető, hogy ettől a feltételek kissé különböztek. Mindenesetre az angol nyelvű szöveg Java-implementációja a következő (forrás: codereview.stackexchange.com):
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
int passes = 5;
HashMap<Integer, Boolean> doors = new HashMap<Integer,
Boolean>();
int i = 0;
//Open all doors as default in the start
while(i < passes){
doors.put(i, false);
i++;
}
for(int j = 1; j <= passes; j++){
for(int k = j - 1; k < passes; k +=
j)
doors.put(k, !(doors.get(k)));
}
for(int l = 0; l < passes; l++){
System.out.println("The door number
"+(l + 1)+" is "+(doors.get(l) == true ? "Opened" : "Closed"));
}
}
}
Végeredmény:
The door number 1 is Opened
The door number 2 is Closed
The door number 3 is Closed
The door number 4 is Opened
The door number 5 is Closed
Látható volt egy flowchart (folyamatábra). A kérdés, hogy mennyi lesz az algoritmus végeredménye?
public class Main {
public static void main(String[] args) {
int N = 5;
int F = 1;
do{
F = F * N;
N--;
}while(N != 0);
System.out.println (F);
}
}
Végeredmény:
120