Aiuta PPCG Claus a consegnare i suoi regali
Panoramica
PPCG Claus sta correndo tardi consegnando i suoi doni perché al giorno d'oggi abbiamo così tanti piccoli bambini strani. Questo rende molto più difficile per PPCG Claus portare tutti i regali nel posto giusto. La tua sfida è aiutarlo a scavare correttamente i suoi regali.
La complessità
Dato un elenco di nomi in maiuscolo che rappresentano i bambini che dovrebbe consegnare e un elenco di regali rappresentati da numeri, è necessario capire come distribuire i regali tra detti bambini. Ovviamente c'è un problema però ...
Oggi i bambini stanno diventando pignoli, se il bambino è un tipo strano (la prima iniziale è dispari in codice ASCII) vuole un regalo strano! Se è un tipo pari (la prima iniziale è pari al codice ASCII), ovviamente deve averne uno pari! Ogni bambino divisibile per 3, tuttavia, è un ragazzo cattivo e cattivo, quindi PPCG Claus deve ignorarli completamente per farli comportare l'anno prossimo. Per considerare il suo percorso un successo, deve consegnare tutti i regali a tutti i bambini che li meritano e non deve regalare a nessuno un bambino di troppo. Se un bambino riceve 3+ regali in più rispetto ai suoi coetanei, rischia di diventare un bambino cattivo l'anno prossimo, e non è giusto! Inoltre, se un bambino buono ricevesse un regalo quando un altro bambino buono non lo farebbe, anche quel bambino lo farebbe diventare malvagio.
Esempio
I bambini sono i seguenti:
Kids = ["Amy", "Betty", "Clyde", "Dave", "Francine"] = [A,B,C,D,F] = [65,66,67,68,70]
- Betty è la rovina dell'umanità, chiaramente in combutta con il numero 3.
- Amy e Clyde sono stati strani sin dalla nascita e non sopporterebbero di ricevere regali.
- Dave e Francine sono normali, persino, bambini; dovrebbero ricevere solo regali pari!
I regali sono i seguenti:
Presents = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
Un possibile output sarebbe:
[
['Amy',[1,3,5]],
['Betty',[]],
['Clyde',[7,9,11,13]],
['Dave',[2,4,6,8]],
['Francine',[10,12,14]]
]
Scenari di eccezione
Tuttavia, solo perché PPCG Claus è pronto e disponibile, non significa che PPCG Claus possa farlo. Ecco un elenco di scenari di eccezione in cui è necessario comunicare a PPCG Claus le cattive notizie con un messaggio di:
PPCGmas is cancelled!
I seguenti scenari comporteranno l'annullamento del Natale:
- Non ci sono bambini
[],[1,2,3]
- Bene, hanno dedotto.
- Non ci sono bambini buoni.
["Betty"],[1,2,3]
- Seriamente, scopa Betty.
- Non ci sono regali, o meno regali dei bravi bambini.
["Amy","Charles"],[]
- Uno o più non riceveranno regali.["Amy","Charles"],[1]
- Uno o più non riceveranno regali.
- Non ci sono regali pari / dispari per soddisfare tutti i bambini buoni.
["Amy","Dave"],[2,4,6]
- Amy è fregata.
Ecco un elenco di scenari che non dovrebbero influire su PPCGmas:
- Regali rimanenti (tutti i bambini devono ricevere la quantità massima di regali).
["Amy","Dave"],[2,4,6,8,10,12,14,7,9] = [["Amy",[7,9]],["Dave",[2,4,6,8]]]
Principali regole reiterate
- I bambini buoni sono pari o dispari, in base alla loro prima iniziale.
- I bambini cattivi hanno una prima iniziale completamente divisibile per 3.
- Tutti i bambini buoni devono ricevere almeno un regalo.
- Nessun bambino buono deve ricevere più di 2 regali in più di qualsiasi altro bambino buono.
- Se ci sono regali rimanenti, è necessario distribuirli al massimo, senza violare 4.
- I bambini cattivi non devono ricevere regali.
- Se QUALUNQUE di questi viene violato, è necessario eseguire l'output
PPCGmas is cancelled!
, esattamente.
Requisiti del formato I / O
- Il primo input deve essere una stringa delimitata da array / list / virgola di nomi completi, non solo la prima iniziale.
- Il 2o input deve essere una stringa delimitata da array / elenco / virgola di numeri interi positivi.
- L'output può essere qualsiasi denotazione di come hai distribuito i regali che ha senso; o
PPCGmas is Cancelled!
.
Criterio vincente: code-golf
TL; DR: Betty è un coglione, non competere.
3
? EDIT : Se uno dovrebbe "fregare Betty", perché è nella sfida?