Koodi tehtävään, seuraava blogikirjoitus
import java.util.*;
public class ArvontaSeuraaja {
public static void main(String[] args) {
// Simuloitu aineisto aiemmista arvonnoista (esim. haravan rivejä)
List<List<Integer>> historiallisetArvonnat = Arrays.asList(
Arrays.asList(1, 5, 12, 23, 34),
Arrays.asList(5, 12, 19, 23, 40),
Arrays.asList(1, 5, 8, 12, 23),
Arrays.asList(2, 5, 12, 25, 30)
);
// Analysoidaan, mitkä numerot seuraavat numeroa 5
int seurattavaNumero = 5;
Map<Integer, Integer> seuraajat = analysoiSeuraajat(historiallisetArvonnat, seurattavaNumero);
// Tulostetaan tulokset
System.out.println("Numeroa " + seurattavaNumero + " seuranneet numerot ja niiden yleisyys:");
seuraajat.forEach((numero, kerrat) ->
System.out.println("Numero " + numero + ": " + kerrat + " kertaa"));
}
/**
* Laskee kuinka monta kertaa kukin numero esiintyy kohdenumeron jälkeen samalla rivillä.
*/
public static Map<Integer, Integer> analysoiSeuraajat(List<List<Integer>> data, int kohde) {
Map<Integer, Integer> esiintymat = new HashMap<>();
for (List<Integer> rivi : data) {
// Lajitellaan rivi varmuuden vuoksi, jos kyseessä on nouseva järjestelmä
Collections.sort(rivi);
if (rivi.contains(kohde)) {
int indeksi = rivi.indexOf(kohde);
// Käydään läpi kaikki numerot, jotka tulevat kohdenumeron jälkeen rivillä
for (int i = indeksi + 1; i < rivi.size(); i++) {
int seuraaja = rivi.get(i);
esiintymat.put(seuraaja, esiintymat.getOrDefault(seuraaja, 0) + 1);
}
}
}
return esiintymat;
}
}