Skip to content

Commit c70d383

Browse files
committed
1 parent 41a9ced commit c70d383

File tree

5 files changed

+271
-0
lines changed

5 files changed

+271
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import java.io.*;
2+
import java.nio.file.*;
3+
import java.util.*;
4+
import java.util.stream.*;
5+
6+
public class miguelex {
7+
public static List<Suscriptor> obtenerSuscriptoresActivos(String archivoCsv) throws IOException {
8+
List<Suscriptor> suscriptores = new ArrayList<>();
9+
10+
List<String> lines = Files.readAllLines(Paths.get(archivoCsv));
11+
lines.remove(0);
12+
13+
for (String line : lines) {
14+
String[] data = line.split(",");
15+
if (data[2].trim().equalsIgnoreCase("activo")) {
16+
suscriptores.add(new Suscriptor(data[0].trim(), data[1].trim()));
17+
}
18+
}
19+
20+
return suscriptores;
21+
}
22+
23+
public static List<Suscriptor> seleccionarGanadores(List<Suscriptor> suscriptores, int numeroGanadores) {
24+
if (suscriptores.size() < numeroGanadores) {
25+
return null;
26+
}
27+
28+
Collections.shuffle(suscriptores);
29+
return suscriptores.subList(0, numeroGanadores);
30+
}
31+
32+
public static void main(String[] args) throws IOException {
33+
String archivoCsv = "suscriptores.csv";
34+
List<Suscriptor> suscriptoresActivos = obtenerSuscriptoresActivos(archivoCsv);
35+
36+
if (suscriptoresActivos.size() > 0) {
37+
List<Suscriptor> ganadores = seleccionarGanadores(suscriptoresActivos, 3);
38+
if (ganadores != null) {
39+
System.out.println("Ganador de la suscripción: " + ganadores.get(0));
40+
System.out.println("Ganador del descuento: " + ganadores.get(1));
41+
System.out.println("Ganador del libro: " + ganadores.get(2));
42+
} else {
43+
System.out.println("No hay suficientes suscriptores activos para seleccionar 3 ganadores.");
44+
}
45+
} else {
46+
System.out.println("No hay suscriptores activos.");
47+
}
48+
}
49+
}
50+
51+
class Suscriptor {
52+
String id;
53+
String email;
54+
55+
public Suscriptor(String id, String email) {
56+
this.id = id;
57+
this.email = email;
58+
}
59+
60+
@Override
61+
public String toString() {
62+
return "ID: " + id + " | Email: " + email;
63+
}
64+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
const fs = require('fs');
2+
3+
function obtenerSuscriptoresActivos(archivoCsv) {
4+
const data = fs.readFileSync(archivoCsv, 'utf-8');
5+
const filas = data.split('\n').slice(1); // Saltar la primera fila (cabeceras)
6+
7+
const suscriptores = [];
8+
for (let fila of filas) {
9+
const [id, email, status] = fila.split(',');
10+
if (status.trim().toLowerCase() === 'activo') {
11+
suscriptores.push({ id: id.trim(), email: email.trim() });
12+
}
13+
}
14+
15+
return suscriptores;
16+
}
17+
18+
function seleccionarGanadores(suscriptores, numeroGanadores) {
19+
if (suscriptores.length < numeroGanadores) {
20+
return null;
21+
}
22+
23+
const ganadores = [];
24+
const indicesSeleccionados = new Set();
25+
26+
while (ganadores.length < numeroGanadores) {
27+
const indiceAleatorio = Math.floor(Math.random() * suscriptores.length);
28+
if (!indicesSeleccionados.has(indiceAleatorio)) {
29+
ganadores.push(suscriptores[indiceAleatorio]);
30+
indicesSeleccionados.add(indiceAleatorio);
31+
}
32+
}
33+
34+
return ganadores;
35+
}
36+
37+
const archivoCsv = 'suscriptores.csv';
38+
39+
const suscriptoresActivos = obtenerSuscriptoresActivos(archivoCsv);
40+
41+
if (suscriptoresActivos.length > 0) {
42+
const ganadores = seleccionarGanadores(suscriptoresActivos, 3);
43+
if (ganadores) {
44+
console.log("Ganador de la suscripción:", ganadores[0]);
45+
console.log("Ganador del descuento:", ganadores[1]);
46+
console.log("Ganador del libro:", ganadores[2]);
47+
} else {
48+
console.log("No hay suficientes suscriptores activos para seleccionar 3 ganadores.");
49+
}
50+
} else {
51+
console.log("No hay suscriptores activos.");
52+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
function obtenerSuscriptoresActivos($archivoCsv) {
3+
$suscriptores = [];
4+
5+
if (($handle = fopen($archivoCsv, "r")) !== FALSE) {
6+
fgetcsv($handle);
7+
8+
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
9+
$id = $data[0];
10+
$email = $data[1];
11+
$status = $data[2];
12+
13+
if (strtolower($status) === "activo") {
14+
$suscriptores[] = ['id' => $id, 'email' => $email];
15+
}
16+
}
17+
fclose($handle);
18+
}
19+
20+
return $suscriptores;
21+
}
22+
23+
function seleccionarGanadores($suscriptores, $numeroGanadores) {
24+
if (count($suscriptores) < $numeroGanadores) {
25+
return null;
26+
}
27+
28+
$ganadores = [];
29+
$indicesSeleccionados = [];
30+
31+
while (count($ganadores) < $numeroGanadores) {
32+
$indiceAleatorio = rand(0, count($suscriptores) - 1);
33+
34+
if (!in_array($indiceAleatorio, $indicesSeleccionados)) {
35+
$ganadores[] = $suscriptores[$indiceAleatorio];
36+
$indicesSeleccionados[] = $indiceAleatorio;
37+
}
38+
}
39+
40+
return $ganadores;
41+
}
42+
43+
$archivoCsv = 'suscriptores.csv';
44+
45+
$suscriptoresActivos = obtenerSuscriptoresActivos($archivoCsv);
46+
47+
if (count($suscriptoresActivos) > 0) {
48+
$ganadores = seleccionarGanadores($suscriptoresActivos, 3);
49+
50+
if ($ganadores) {
51+
echo "Ganador de la suscripción:\n";
52+
echo "ID: " . $ganadores[0]['id'] . " | Email: " . $ganadores[0]['email'] . "\n\n";
53+
54+
echo "Ganador del descuento:\n";
55+
echo "ID: " . $ganadores[1]['id'] . " | Email: " . $ganadores[1]['email'] . "\n\n";
56+
57+
echo "Ganador del libro:\n";
58+
echo "ID: " . $ganadores[2]['id'] . " | Email: " . $ganadores[2]['email'] . "\n\n";
59+
} else {
60+
echo "No hay suficientes suscriptores activos para seleccionar 3 ganadores.\n";
61+
}
62+
} else {
63+
echo "No hay suscriptores activos.\n";
64+
}
65+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import csv
2+
import random
3+
4+
def obtener_suscriptores_activos(archivo_csv):
5+
suscriptores = []
6+
with open(archivo_csv, newline='') as csvfile:
7+
reader = csv.reader(csvfile)
8+
next(reader)
9+
for row in reader:
10+
id_, email, status = row
11+
if status.strip().lower() == 'activo':
12+
suscriptores.append({'id': id_.strip(), 'email': email.strip()})
13+
return suscriptores
14+
15+
def seleccionar_ganadores(suscriptores, numero_ganadores):
16+
if len(suscriptores) < numero_ganadores:
17+
return None
18+
return random.sample(suscriptores, numero_ganadores)
19+
20+
archivo_csv = 'suscriptores.csv'
21+
22+
suscriptores_activos = obtener_suscriptores_activos(archivo_csv)
23+
24+
if suscriptores_activos:
25+
ganadores = seleccionar_ganadores(suscriptores_activos, 3)
26+
if ganadores:
27+
print(f"Ganador de la suscripción: {ganadores[0]}")
28+
print(f"Ganador del descuento: {ganadores[1]}")
29+
print(f"Ganador del libro: {ganadores[2]}")
30+
else:
31+
print("No hay suficientes suscriptores activos para seleccionar 3 ganadores.")
32+
else:
33+
print("No hay suscriptores activos.")
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import * as fs from 'fs';
2+
3+
interface Suscriptor {
4+
id: string;
5+
email: string;
6+
}
7+
8+
function obtenerSuscriptoresActivos(archivoCsv: string): Suscriptor[] {
9+
const data = fs.readFileSync(archivoCsv, 'utf-8');
10+
const filas = data.split('\n').slice(1); // Saltar la primera fila (cabeceras)
11+
12+
const suscriptores: Suscriptor[] = [];
13+
for (const fila of filas) {
14+
const [id, email, status] = fila.split(',');
15+
if (status.trim().toLowerCase() === 'activo') {
16+
suscriptores.push({ id: id.trim(), email: email.trim() });
17+
}
18+
}
19+
20+
return suscriptores;
21+
}
22+
23+
function seleccionarGanadores(suscriptores: Suscriptor[], numeroGanadores: number): Suscriptor[] | null {
24+
if (suscriptores.length < numeroGanadores) {
25+
return null;
26+
}
27+
28+
const ganadores: Suscriptor[] = [];
29+
const indicesSeleccionados = new Set<number>();
30+
31+
while (ganadores.length < numeroGanadores) {
32+
const indiceAleatorio = Math.floor(Math.random() * suscriptores.length);
33+
if (!indicesSeleccionados.has(indiceAleatorio)) {
34+
ganadores.push(suscriptores[indiceAleatorio]);
35+
indicesSeleccionados.add(indiceAleatorio);
36+
}
37+
}
38+
39+
return ganadores;
40+
}
41+
42+
const archivoCsv = 'suscriptores.csv';
43+
44+
const suscriptoresActivos = obtenerSuscriptoresActivos(archivoCsv);
45+
46+
if (suscriptoresActivos.length > 0) {
47+
const ganadores = seleccionarGanadores(suscriptoresActivos, 3);
48+
if (ganadores) {
49+
console.log("Ganador de la suscripción:", ganadores[0]);
50+
console.log("Ganador del descuento:", ganadores[1]);
51+
console.log("Ganador del libro:", ganadores[2]);
52+
} else {
53+
console.log("No hay suficientes suscriptores activos para seleccionar 3 ganadores.");
54+
}
55+
} else {
56+
console.log("No hay suscriptores activos.");
57+
}

0 commit comments

Comments
 (0)