Ajude o PPCG Claus a entregar seus presentes
Visão geral
PPCG Claus está atrasado na entrega de presentes porque hoje em dia temos tantos pequenos meninos estranhos por aí. Isso torna muito mais difícil para o PPCG Claus levar todos os presentes para o local correto. Seu desafio é ajudá-lo a entregar os presentes corretamente.
A complexidade
Dada uma lista de nomes em maiúscula representando as crianças para as quais ele deveria entregar e uma lista de presentes representados por números, você deve descobrir como distribuir os presentes entre as crianças mencionadas. Claro que há um problema ...
Hoje em dia as crianças estão ficando exigentes, se o garoto é um sujeito estranho (a primeira inicial é estranha com código ASCII), ele quer um presente estranho! Se ele é um companheiro par (a primeira inicial é o código ASCII mesmo), obviamente ele deve receber um par! Qualquer criança divisível por 3, no entanto, é um rapaz travesso, travesso, então o PPCG Claus deve ignorá-los completamente para fazê-los se comportar no próximo ano. Para considerar seu caminho um sucesso, ele deve entregar todos os presentes a todas as crianças que os merecem e não deve dar muitos presentes a nenhuma criança. Se uma criança recebe mais de três presentes do que seus pares, ela corre o risco de se tornar uma criança travessa no próximo ano, e isso não está certo! Além disso, se qualquer criança boa recebesse um presente quando outra criança boa não, isso também tornaria a criança má.
Exemplo
As crianças são as seguintes:
Kids = ["Amy", "Betty", "Clyde", "Dave", "Francine"] = [A,B,C,D,F] = [65,66,67,68,70]
- Betty é a ruína da humanidade, claramente em desacordo com o número 3.
- Amy e Clyde são esquisitos desde o nascimento e odeiam receber até presentes.
- Dave e Francine são normais, até crianças; eles devem receber apenas presentes!
Os presentes são os seguintes:
Presents = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
Uma saída possível seria:
[
['Amy',[1,3,5]],
['Betty',[]],
['Clyde',[7,9,11,13]],
['Dave',[2,4,6,8]],
['Francine',[10,12,14]]
]
Cenários de exceção
No entanto, apenas porque o PPCG Claus está pronto e disposto, não significa que o PPCG Claus possa. Aqui está uma lista de cenários de exceção em que você deve apresentar as más notícias ao PPCG Claus com uma mensagem de:
PPCGmas is cancelled!
Os seguintes cenários resultarão no cancelamento do Natal:
- Não há filhos.
[],[1,2,3]
- Wellp, eles deduziram.
- Não há bons filhos.
["Betty"],[1,2,3]
- Sério, foda-se Betty.
- Não há presentes, ou menos presentes do que bons filhos.
["Amy","Charles"],[]
- Um ou mais não receberiam presentes.["Amy","Charles"],[1]
- Um ou mais não receberiam presentes.
- Não há presentes ímpares / pares para satisfazer todos os bons filhos.
["Amy","Dave"],[2,4,6]
- Amy está ferrada.
Aqui está uma lista de cenários que não devem afetar o PPCGmas:
- Sobras de presentes (todas as crianças devem receber a quantidade máxima de presentes).
["Amy","Dave"],[2,4,6,8,10,12,14,7,9] = [["Amy",[7,9]],["Dave",[2,4,6,8]]]
Regras Principais Reiteradas
- Os bons filhos são pares ou ímpares, com base em sua primeira inicial.
- Filhos maus têm uma primeira inicial totalmente divisível por 3.
- Todas as crianças boas devem receber pelo menos um presente.
- Nenhuma criança boa deve receber mais de 2 presentes a mais do que qualquer outra criança boa.
- Se houver restos de presentes, você deve distribuí-los ao máximo, sem violar 4.
- Filhos maus não devem receber presentes.
- Se ALGUM deles for violado, você deve enviar
PPCGmas is cancelled!
exatamente.
Requisitos de formato de E / S
- A primeira entrada deve ser uma sequência de nomes completos, delimitada por vírgula / matriz / lista, e não apenas a primeira inicial.
- A segunda entrada deve ser uma cadeia de caracteres de lista / lista / delimitada por vírgulas de números inteiros positivos.
- A saída pode ser qualquer indicação de como você distribuiu os presentes que faz sentido; ou
PPCGmas is Cancelled!
.
Critério vencedor: code-golf
TL; DR: Betty é um idiota, não concorra.
3
? EDIT : Se alguém deveria "estragar a Betty", por que ela está no desafio?