Skip to content

Instantly share code, notes, and snippets.

@jeffque
Last active March 23, 2024 03:06
Show Gist options
  • Save jeffque/24f733f766d78b154574a891034fd847 to your computer and use it in GitHub Desktop.
Save jeffque/24f733f766d78b154574a891034fd847 to your computer and use it in GitHub Desktop.
Exercício em Java para trabalhar modelagem de dados

Um pequeno exercício Java para trabalhar modelagem de dados.

A fila

Você precisa saber se o SLA de atendimento está sendo atendido e, se não está, quantos pacientes na fila foram atendidos depois do SLA.

Você receberá um único array de EVENTOS, ordenado pela ordem cornológica de acontecimento. Cada evento contém as seguintes informações:

  • tipo do evento (entrada ou atendimento)
  • momento do eventos (em minutos)
  • nome da pessoa (considere que toda pessoa tem um nome único)
    • para o caso de entrada: tempo em minutos coridos desde o começo do atendimento que, se não for atendido, vai estourar o SLA

Considere o tempo zero como sendo o início. Sua tarefa é listar os nomes de todos os pacientes que tiveram o SLA ofendido (não importa a ordem), ou escrever "não houve ofensas ao SLA hoje" no caso de não tiver nenhum paciente com SLA ofendido.

É considerado que o SLA do paciente foi ofendido se, entre ele entrar e sair, se passou um tempo maior do que o SLA previsto para ele.

Exemplos

Exemplo 1

Entrada

E 6 jorge 180
A 180 jorge

Saída

não houve ofensas ao SLA hoje

Exemplo 2

Entrada

E 6 jorge 150
E 10 matheus 200
A 170 matheus
A 180 jorge

Saída

jorge

Exemplo 3

Entrada

E 0 ben 10
A 10 ben
E 11 tenninson 100
E 11 benjamin 90
E 90 button 90
A 100 benjamin
A 120 tenninson
E 150 pikachu 50
A 190 button
A 195 pikachu

Saída

tenninson
button

Dicas

Use stream.

Você não precisa lidar com I/O, estabeleça como se povoa o objeto que e mande o povoamento para eles.

Aumente o desafio

No lugar de receber uma lista receba um Supplier. O retorno nulo indicaria fim da entrada.

Garantias do problema

Não é possível que uma pessoa seja atendida antes de entrar.

Toda pessoa que entrar vai ser atendida.

Uma mesma pessoa só vai ser atendida uma única vez

Nomes vão atender a seguinte regex: [A-Za-z][A-Za-z0-9_]*

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment