Dela upp lista i dellistor
Hej, jag har en lista som jag vill dela upp i flera dellistor. Nedan följer exempel på hur storleken på dellistorna ska se ut givet ett heltal vi stoppar in i metoden:
1. Input, list = {1, 2, 3, 4, 5} -> partition(list, 3) ska ge sublistor av storlek 1, 2, 2 (i den ordningen)
(Här ger min kod sublistor av storlek 1, 1, 3)
2. Input, list = {1, 2, 3, 4, 5} -> partition(list, 2) ska ge sublistor av storlek 2, 3 (i den ordningen)
3. Input, list = {1, 2, 3, 4, 5, 6, 7} -> partition(list, 3) ska ge sublistor av storlek 2, 2, 3 (i den ordnignen)
Min kod löser fall 2 och 3 men inte 1 så uppenbarligen har jag inte förstått mönstret. Någon som har förslag på hur jag ska göra?
(Ska tillägga att jag är helt ny på programmering så om jag bryter mot best practice eller andra konventioner så får ni gärna upplysa mig om det)
Tack på förhand!
Mvh
List<List<Integer>> partition(List<Integer> ints, int n) {
List<List<Integer>> result = new ArrayList<>();
List<Integer> current = new ArrayList<>();
try {
int start = 0; int stop = 0; int part = ints.size() / n;
for (int i = 0; i < n; i++) {
if (i == n - 1) {
start = i * part;
stop = ints.size();
} else {
start = i * part;
stop = (i + 1) * part;
}
for (int j = start; j < stop; j++) {
current.add(ints.get(j));
}
result.add(new ArrayList(current));
current.clear();
}
} catch (Exception e){
out.println("Invalid input");
}
return result;
}
Ska man alltså komma på mönstret själv också? Jag tycker det ser ut som att man gör så många listor som talet man har gett, så lika stora som möjligt, och med de kortare listorna först.
Jag kan inte kolla koden just nu.
Ja det antar jag för ingen har explicit sagt vilket mönster det följer. Men jag tolkar det precis som du tolkar det: sublistorna så lika i storlek som möjligt med dom kortare först. Lyckas bara inte komma på hur jag ska implementera detta i koden, så det är det jag behöver hjälp med :)
Om du gör uppgift 1 för hand, hur gör du då?
Vet inte om jag är säker på hur du menar men just i den sekvensen ser det ut som man startar med t.ex 5%2 och sen tar
ints.size() - (5%2) för att sen generera de två sublistorna av storlek 2.
Men det är inte kompatibelt med att 7an styckas upp i 2, 2, 3. Det här är säkert väldigt lätt men lyckas inte komma på hur den generella uppdelningen ser ut för att generera listor på detta sätt med den ordningen och de storlekarna
Det är ofta så att det är lättare att tänka ut hur ett program ska lösa uppgiften om man har löst den helt utan dator för några olika fall.
Vilka längder kan komma ifråga för dellistorna?