Hilf PPCG Claus, seine Geschenke zu bringen
Überblick
PPCG Claus kommt hella spät und liefert seine Geschenke aus, weil wir heutzutage so viele seltsame kleine Kinder da draußen haben. Dies macht es für PPCG Claus sehr viel schwieriger, alle Geschenke an den richtigen Ort zu bringen. Ihre Herausforderung besteht darin, ihm zu helfen, seine Geschenke korrekt auszuliefern.
Die Komplexität
Ausgehend von einer Liste von Vornamen mit Großbuchstaben, die die Kinder darstellen, an die er liefern soll, und einer Liste von Geschenken, die durch Zahlen dargestellt werden, müssen Sie herausfinden, wie die Geschenke auf die Kinder verteilt werden. Natürlich gibt es einen Haken ...
Heutzutage werden Kinder wählerisch, wenn das Kind ein seltsamer Kerl ist (erste Initiale ist ASCII-Code ungerade), möchte es ein seltsames Geschenk! Wenn er ein gerader Kerl ist (erste Initiale ist sogar ASCII-Code), muss er offensichtlich einen geraden bekommen! Jedes Kind, das durch 3 teilbar ist, ist jedoch ein ungezogener, ungezogener Junge. Daher muss PPCG Claus sie vollständig ignorieren, damit sie sich nächstes Jahr verhalten. Um seine Route als erfolgreich zu betrachten, muss er allen Kindern, die sie verdienen, alle Geschenke aushändigen und darf keinem Kind zu viele Geschenke machen. Wenn ein Kind mehr als drei Geschenke bekommt, riskiert es, nächstes Jahr ein ungezogenes Kind zu werden, und das ist einfach nicht richtig! Auch wenn ein gutes Kind ein Geschenk erhalten würde, wenn ein anderes gutes Kind dies nicht tun würde, würde dies auch dieses Kind böse machen.
Beispiel
Die Kinder sind wie folgt:
Kids = ["Amy", "Betty", "Clyde", "Dave", "Francine"] = [A,B,C,D,F] = [65,66,67,68,70]
- Betty ist der Fluch der Menschheit, ganz klar mit der Nummer 3.
- Amy und Clyde sind seit ihrer Geburt verrückt und würden es hassen, selbst Geschenke zu erhalten.
- Dave und Francine sind normale Kinder. Sie sollten nur noch Geschenke erhalten!
Die Geschenke sind wie folgt:
Presents = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
Eine mögliche Ausgabe wäre:
[
['Amy',[1,3,5]],
['Betty',[]],
['Clyde',[7,9,11,13]],
['Dave',[2,4,6,8]],
['Francine',[10,12,14]]
]
Ausnahmeszenarien
Nur weil PPCG Claus bereit und willens ist, heißt das noch lange nicht, dass PPCG Claus es kann. Hier ist eine Liste von Ausnahmeszenarien, in denen Sie die schlechten Nachrichten an PPCG Claus mit einer Nachricht von:
PPCGmas is cancelled!
Die folgenden Szenarien führen dazu, dass Weihnachten abgesagt wird:
- Es gibt keine Kinder.
[],[1,2,3]
- Wellp, sie widmeten.
- Es gibt keine guten Kinder.
["Betty"],[1,2,3]
- Im Ernst, scheiß auf Betty.
- Es gibt keine Geschenke oder weniger Geschenke als gute Kinder.
["Amy","Charles"],[]
- Einer oder mehrere würden keine Geschenke erhalten.["Amy","Charles"],[1]
- Einer oder mehrere würden keine Geschenke erhalten.
- Es gibt keine ungeraden / geraden Geschenke, um alle guten Kinder zufrieden zu stellen.
["Amy","Dave"],[2,4,6]
- Amy ist fertig.
Hier ist eine Liste von Szenarien, die sich nicht auf PPCGmas auswirken sollten:
- Übrig gebliebene Geschenke (Alle Kinder sollten die maximale Anzahl an Geschenken erhalten).
["Amy","Dave"],[2,4,6,8,10,12,14,7,9] = [["Amy",[7,9]],["Dave",[2,4,6,8]]]
Hauptregeln wiederholt
- Gute Kinder sind entweder gerade oder ungerade, basierend auf ihrer ersten Initiale.
- Böse Kinder haben eine erste Initiale, die durch 3 vollständig teilbar ist.
- Alle guten Kinder müssen mindestens ein Geschenk erhalten.
- Kein gutes Kind darf mehr als 2 Geschenke erhalten als jedes andere gute Kind.
- Wenn Geschenke übrig bleiben sollen, müssen Sie diese maximal verteilen, ohne 4 zu verletzen.
- Böse Kinder dürfen überhaupt keine Geschenke erhalten.
- Wenn eine dieser Bedingungen verletzt wird, müssen Sie genau ausgeben
PPCGmas is cancelled!
.
Anforderungen an das E / A-Format
- Die erste Eingabe muss ein Array / eine Liste / eine durch Kommas getrennte Zeichenfolge mit vollständigen Namen sein, nicht nur die erste Initiale.
- Die 2. Eingabe muss ein Array / eine Liste / eine durch Kommas getrennte Zeichenfolge aus positiven Ganzzahlen sein.
- Die Ausgabe kann eine sinnvolle Angabe darüber sein, wie Sie die Geschenke verteilt haben. oder
PPCGmas is Cancelled!
.
Gewinnkriterium: Code-Golf
TL; DR: Betty ist ein Idiot, nimm nicht an Wettbewerben teil.
quelle
3
. EDIT : Wenn man Betty "verarschen" sollte, warum ist sie überhaupt in der Herausforderung?Antworten:
APL, 171 Bytes
Dies nimmt die Geschenke als linkes Argument, die Kinder als rechtes Argument und gibt eine Matrix zurück, in der die erste Spalte die Namen der Kinder und die zweite Spalte die Geschenke enthält, die sie erhalten.
Testfälle:
Ungolfed Version hier.
quelle
JavaScript (ES6),
525492454453 Byte-71 Bytes dank @Guedes -1 Bit dank @Jake Cobb
Probieren Sie es online!
Nicht Golf Version
Kann mehr Golf spielen, denke ich. Ich habe gerade eine Wurfübersetzung der nicht golfenen Version gemacht.
Dies ist jetzt kürzer als die Summe des CharCodes "santa" (115 + 97 + 110 + 116 + 97 = 535). Ja
quelle
C[0]
stattC.charCodeAt(0)
spart 11 Bytes. Wenn sich eine Eigenschaft mehrmals wiederholt, können Sie auch ihren Namen wie folgt speichernL='length'
undi[L]
anstelle von verwendeni.length
.P(["Amy", "Betty", "Clyde"],[1,2,3,4,5,6,7,8,9,10,11,12,13,14]);
Python 2,
334355354 Bytes21 Bytes verloren, um den Fall von nur geraden oder nur ungeraden Kindern zu behandeln.
1 Byte dank @TuukkaX gespeichert.
quelle
ord('A')%3==0
istFalse
aber1-ord('A')%3
ist-1
.%3<1
sollte arbeiten.Javascript (ES6),
218216 BytesDie Ausgabe (wenn es sich nicht um die Fehlerzeichenfolge handelt) ist ein Objekt, dessen Schlüssel die Namen der Kinder sind. Der Wert ist das Array der Geschenke, die das Kind erhält.
Zwei Bytes gespart, als mir klar wurde, dass ich zwei redundante Klammern hatte.
Ungolfed-Version:
quelle