Herausforderung Mit freundlicher Genehmigung von meinem University Code Challenge Contest
Seit einigen Jahren wächst die Anzahl der Schüler an meiner Schule stetig. Zuerst wurde die Anzahl der Schüler durch das Klassenzimmer erhöht, aber dann mussten einige Räume für einige Gruppen umgebaut werden, um dort Unterricht zu erteilen, wie zum Beispiel die Turnhallenstände oder, in diesem letzten Kurs, bis zum Besenraum.
Letztes Jahr erhielten die akademischen Behörden das Budget für den Bau eines neuen Gebäudes und begannen mit den Arbeiten. Endlich sind sie fertig und das neue Gebäude kann bereits genutzt werden, sodass wir umziehen können (das alte Gebäude wird saniert und für eine andere Funktion genutzt), aber es hat uns auf halber Strecke erwischt. Der Direktor möchte wissen, ob der Umzug ohne Aufteilung oder Beitritt zu Gruppen möglich ist oder ob einige Schüler die Gruppe wechseln müssen.
Herausforderung
Geben Sie unter Berücksichtigung der Anzahl der Schüler der aktuellen Gruppen und der neuen Klassenräume (Kapazität) einen Wahrheitswert aus, wenn es möglich ist, jeder der aktuellen Gruppen einen anderen Klassenraum mit ausreichender Kapazität zuzuweisen, oder andernfalls einen Falschwert.
Testfälle
Input: groups of students => [10, 20, 30], classrooms capacity => [31, 12, 20]
Output: True
Input: groups of students => [10, 20, 30], classrooms capacity => [100, 200]
Output: False
Input: groups of students => [20, 10, 30], classrooms capacity => [20, 20, 50, 40]
Output: True
Input: groups => [30, 10, 30, 5, 100, 99], classrooms => [40, 20, 50, 40, 99, 99]
Output: False
Input: groups => [], classrooms => [10, 10, 10]
Output: True
Input: groups => [10, 10, 10], classrooms => []
Output: False
Input: groups => [], classrooms => []
Output: True
Input: groups => [10, 1], classrooms => [100]
Output: False
Input: groups => [10], classrooms => [100, 100]
Output: True
Input: groups => [1,2,3], classrooms => [1,1,2,3]
Output: True
Anmerkungen
- Sie können die Eingabe in jedem vernünftigen Format vornehmen
- Sie können die Ausgabe jeder truthy / Falsey Wert (
1/0
,True/False
, etc ...) - Code-Golf
quelle
g=[1,2,3], c=[1,1,2,3]
0
ein gültiger Wert für Gruppen oder Klassenzimmer?Antworten:
Brachylog , 4 Bytes
Es ist immer schön, eine Herausforderung zu sehen und zu wissen, dass Brachylog jeden schlagen wird. Verwendet aktuelle Klassen als Eingabe und neue Klassenräume als Ausgabe. Es wird true ausgegeben, wenn es einen Weg findet, den Schülern zu entsprechen, andernfalls false
Erläuterung
Der Code besteht aus 3 Teilen, von denen die Reihenfolge eigentlich keine Rolle spielt
Probieren Sie es online!
quelle
Pyth, 11 Bytes
Nimmt die Eingabe als Liste von Listen vor, wobei die Klassengröße an erster Stelle und die Gruppengröße an zweiter Stelle steht. Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .
quelle
Gelee , 9 Bytes
Nimmt die Klassenräume als erstes Argument und die Gruppen als zweites Argument.
Probieren Sie es online!
Kommentiert
NB: Das
Ṡ‘ḌẠ¬
ist viel zu lang. Aber ich vermute, dass dies sowieso nicht der richtige Ansatz ist.quelle
Japt , 9 Bytes
Probieren Sie es aus oder führen Sie alle Testfälle unter TIO aus
Probieren Sie es aus oder führen Sie alle Testfälle unter TIO aus
quelle
2 - n
In Japt eingebaut? Welche Art von Anwendungsfällen muss es rechtfertigen, dass es sich um ein 1-Byte-Builtin handelt?Í
ist eine Abkürzung fürn2<space>
und wurde für die Verwendung mit Zeichenfolgen erstellt, die von Zahlen zur Basis 2 in Zahlen zur Basis 10 konvertiert wurden (ein recht häufiger Bedarf).n
Wenn die Methode jedoch auf eine Zahl angewendet wird, subtrahiert sie diese Zahl vom Argument der Methode (Standard =0
). Obwohl das Subtrahieren von hier0
ausreichen würde, um das Array in umgekehrter Reihenfolge zu sortieren, erspart mir die Verwendung der Verknüpfung ein Byte mehrñn<space>
. Ich hätte es auch beim Sortieren verwenden können,V
aber es hätte keine Bytes gespeichert, da ich)
zum Schließen derí
Methode immer noch ein Leerzeichen anstelle von benötige .Python 2 , 49 Bytes
Ausgabe per Exit-Code, Fehler bei falscher Eingabe.
Probieren Sie es online!
quelle
MATL , 10 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Betrachten Eingänge
[20, 10, 30]
,[20, 20, 50, 40]
als Beispiel. Der Stapel wird von unten nach oben angezeigt.quelle
Haskell , 40 Bytes
Probieren Sie es online!
quelle
05AB1E ,
14128 BytesPort of @Soks Pyth-Antwort , also stelle sicher, dass du ihn auch positiv bewertest!
Nimmt die Eingabe als Liste von Listen auf, wobei die Klassenzimmerliste als erstes Element und die Gruppenliste als zweites Element dient.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Alte 12-Byte-Antwort:
Nimmt zuerst die Klassenliste und dann die Gruppenliste.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
C # (Visual C # Interactive Compiler) ,
77 bis74 ByteProbieren Sie es online!
Kommentierter Code:
quelle
Haskell, 66 Bytes
Probieren Sie es online!
quelle
Bash + GNU-Tools, 68 Bytes
69 Bytes
TIO
Nimmt Studentenzimmer als erstes und zweites Argument als durch Newline begrenzte Zeichenfolgenummern und gibt den Beendigungsstatus 1 für true oder 0 für false zurück
quelle
Perl 5
-pal
,6762 Bytes@NahuelFouilleul sparte 5 Bytes mit einer Neuanordnung und einem Grep
Probieren Sie es online!
67-Byte-Version
Nimmt die durch Leerzeichen getrennte Liste der Klassengrößen in der ersten Zeile und die durch Leerzeichen getrennte Liste der Raumgrößen in der nächsten Zeile.
quelle
Common Lisp, 74 Bytes
(defun c(s r)(or(not(sort s'>))(and(sort r'>)(<=(pop s)(pop r))(c s r))))
Nicht minimiert
Probier es aus
Beachten Sie, dass sort die Liste permanent verändert und pop die Variable erneut an das nächste Element bindet.
Tatsächlich wird nur rekursiv überprüft, ob die größte Studentengruppe in den größten Raum passt. Es gibt 3 Basisfälle:
quelle
Python 2 ,
716764 BytesProbieren Sie es online!
quelle
zip(...)
, um 5 Bytes zu sparen.Retina 0,8,2 , 50 Bytes
Probieren Sie es online! Link enthält Testsuite. Nimmt zwei Listen von Gruppen und Räumen auf (Testsuite wird
;
als Listentrennzeichen verwendet). Erläuterung:In Unary konvertieren.
Sortieren Sie jede Liste einzeln um.
Fügen Sie jeder Liste ein Komma hinzu.
Stellen Sie sicher, dass jede der Nummern in der ersten Liste mit der entsprechenden Nummer in der zweiten Liste übereinstimmt. Jedes Mal
\3
enthält die zuvor übereinstimmenden Räume und die nächste Gruppe muss\2
daher in der Lage sein, in den nächsten Raum zu passen. Der(?>\3?)
behandelt den Fall des ersten Raums, wenn noch keine vorherigen Räume vorhanden sind.quelle
Kohle , 28 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erstellt eine Liste mit Listen von Räumen und Gruppen und gibt aus,
-
ob die Räume die Gruppen aufnehmen können. Erläuterung:Wiederholen Sie diesen Vorgang, während eine Gruppe einem Raum zugewiesen werden kann.
Entfernen Sie den größten Raum und die größte Gruppe von ihren Listen.
Stellen Sie sicher, dass keine nicht zugewiesenen Gruppen mehr vorhanden sind.
quelle
JavaScript, 56 Bytes
Versuch es
quelle
7
und9
in Klassen von8
und10
.Perl 6 , 34 Bytes
Probieren Sie es online!
Nimmt Eingaben als Liste von zwei Listen, den Gruppen und den Klassenzimmern, und gibt eine None Junction zurück, die auf true / false gesetzt werden kann.
Erläuterung:
quelle
Ruby , 57 Bytes
Probieren Sie es online!
Nimmt
c
für Klassen,r
für Räume. Überprüft alle Permutationen von Räumen, anstatt sort zu verwenden, da die umgekehrte Sortierung zu viele Bytes kostet. Sieht aber trotzdem ziemlich lang aus ...quelle
C # (Visual C # Interactive Compiler) ,
1059391828179777674 ByteJetzt entspricht die Punktzahl von Dana!
Wirft einen Fehler, wenn er falsch ist, nichts, wenn er wahr ist.
-12 Bytes dank @Destrogio!
Probieren Sie es online!
Erläuterung
quelle
Java (OpenJDK 8) , 183 Byte
Probieren Sie es online!
Mit einem kleinen hilfreichen Rat von Kevin Cruijssen und einem weiteren Blick auf meinen Code kann ich meine Punktzahl um ganze 9% senken, indem ich nur drei englische Wörter ersetze!
Java (OpenJDK 8) , 166 Byte
Probieren Sie es online!
quelle
import java.util.*;
in Ihre Byteanzahl einbeziehen. Sie können jedoch Golf es zu 144 Bytes in Java 8 oder 140 in Java 10 durch das Ersetzenboolean
mitvar
.true
/false
in Ihrem Code,1>0
/0>1
sind kürzere Alternativen . :)1/0
in diesem Fall in Ordnung ist, beachten Sie bitte, dass in Java im Gegensatz zu Python JavaScript, C usw.1/0
normalerweise nicht als gültige Wahrheits- / Falschausgabe angesehen werden . Und in meinem ersten Kommentar erwähnte ich eine 144-Byte-Version . :) Obwohl es jetzt auch ungültig ist, weil es nicht für den letzten Testfall funktioniert, wie von @Shaggy erwähnt .PowerShell , 80 Byte
Probieren Sie es online!
Weniger Golf-Testskript:
quelle
R , 65 Bytes
Probieren Sie es online!
quelle