import java.util.ArrayList;
import java.util.List;

public class MurniVsEfekSamping {
    // PURE: hasil hanya dihitung dari masukan, dunia luar tidak tersentuh
    static List<Integer> ambilGenap(List<Integer> sumber) {
        List<Integer> hasil = new ArrayList<>();
        for (int n : sumber) {
            if (n % 2 == 0) {
                hasil.add(n);
            }
        }
        return hasil;
    }

    // IMPURE: mengubah isi list milik pemanggil (side effect pada objek luar)
    static void hapusGanjil(List<Integer> target) {
        target.removeIf(n -> n % 2 != 0);
    }

    public static void main(String[] args) {
        List<Integer> data = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6));

        List<Integer> genap = ambilGenap(data);
        System.out.println("Hasil fungsi murni  : " + genap);
        System.out.println("data setelah murni  : " + data);

        hapusGanjil(data);
        System.out.println("data setelah impure : " + data);
    }
}
