Menu
Coddy logo textTech

Resumen: Procesamiento de datos

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 45 de 68.

challenge icon

Desafío

Fácil

Recibirás tres entradas: una lista de nombres de empleados separados por comas, una lista de sus correspondientes horas de trabajo de la semana separadas por comas y un umbral de horas mínimas. La primera entrada contiene nombres en el formato Alice,Bob,Charlie,Diana,Eve, la segunda entrada contiene las horas como números en el formato 45,32,50,28,40, y la tercera entrada es el umbral de horas mínimas como un número (ejemplo: 35).

Lee las tres entradas y conviértelas en los arreglos apropiados. Crea un arreglo asociativo combinado donde los nombres de los empleados sean las llaves y sus horas de trabajo sean los valores. Luego, realiza las siguientes operaciones utilizando funciones de arreglo de orden superior:

  1. Usa array_filter() con una función de callback personalizada para mantener solo a los empleados que trabajaron en o por encima del umbral de horas mínimas.
  2. Usa array_map() con una función de callback personalizada para calcular el pago por horas extras de los empleados filtrados (las horas extras son cualquier hora por encima de 40, pagadas a 1.5 veces la tarifa de $25 por hora para las horas regulares).
  3. Usa array_reduce() con una función de callback personalizada para calcular el pago total por horas extras de todos los empleados filtrados.

Imprime los resultados en el siguiente formato:

  • Primero, imprime el nombre de cada empleado calificado y su pago por horas extras en líneas separadas en el formato Name: $Amount (redondeado a 2 decimales).
  • Finalmente, imprime el pago total por horas extras en el formato Total: $Amount (redondeado a 2 decimales).

Detalles del cálculo:

  • Horas regulares (hasta 40): $25 por hora
  • Horas extras (más de 40): $37.50 por hora (tarifa de 1.5x)
  • Si un empleado trabajó 40 horas o menos, su pago por horas extras es $0.00

Formato de entrada:

  • Primera línea: Nombres de empleados separados por comas (ejemplo: Alice,Bob,Charlie,Diana,Eve)
  • Segunda línea: Horas de trabajo separadas por comas como números (ejemplo: 45,32,50,28,40)
  • Tercera línea: Umbral de horas mínimas como un número (ejemplo: 35)

Salida esperada: Cada empleado calificado con su pago por horas extras en líneas separadas, seguido por el pago total por horas extras, todos los montos formateados a 2 decimales.

Pruébalo tú mismo

<?php
// Leer entradas
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// Convertir horas a enteros
$hours = array_map('intval', $hours);

// Crear un array asociativo combinando nombres y horas
$employees = array_combine($names, $hours);

// TODO: Escribe tu código a continuación
// 1. Usa array_filter() para mantener a los empleados que trabajaron el mínimo de horas o más
// 2. Usa array_map() para calcular el pago de horas extras para los empleados filtrados
// 3. Usa array_reduce() para calcular el pago total de horas extras

// Mostrar los resultados
// Imprimir el pago de horas extras de cada empleado calificado
// Imprimir el pago total de horas extras

?>

Todas las lecciones de Lógica y Flujo