Défi relevé avec la permission de mon concours University Code Challenge
Depuis quelques années, le nombre d'élèves de mon école augmente régulièrement. D'abord, le nombre d'élèves a été augmenté par classe, mais il a ensuite fallu convertir des espaces pour que certains groupes y donnent des cours, comme les tribunes du gymnase ou, ce dernier cours, jusqu'à la salle des balais.
L'année dernière, les autorités académiques ont obtenu le budget pour construire un nouveau bâtiment et ont commencé les travaux. Enfin, ils ont terminé et le nouveau bâtiment peut déjà être utilisé, nous pouvons donc déménager (l'ancien bâtiment sera réhabilité et sera utilisé pour une autre fonction), mais il nous a rattrapés à mi-parcours. Le directeur veut savoir si le déménagement sera possible sans scinder ou rejoindre des groupes, ou que certains élèves doivent changer de groupe.
Défi
Compte tenu du nombre d'élèves des groupes actuels et des nouvelles salles de classe (capacité), affichez une valeur vraie s'il est possible d'affecter une classe différente, avec une capacité suffisante, à chacun des groupes actuels, ou une valeur de falsey sinon.
Cas de test
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
Remarques
- Vous pouvez prendre l'entrée dans n'importe quel format raisonnable
- Vous pouvez produire une valeur Truthy / Falsey (
1/0
,True/False
, etc ...) - code-golf
la source
g=[1,2,3], c=[1,1,2,3]
0
valeur valable pour les groupes ou les salles de classe?Réponses:
Brachylog , 4 octets
C'est toujours agréable de voir un défi et de savoir que le brachylog va battre tout le monde. Prend les classes actuelles en entrée et les nouvelles salles de classe en sortie; Il affichera vrai s'il trouve un moyen de s'adapter aux étudiants, faux sinon
Explication
Le code comporte 3 parties dont la commande n'a en fait aucune importance
Essayez-le en ligne!
la source
Pyth, 11 octets
Prend la contribution sous forme de liste de listes, la taille des classes d'abord, la taille des groupes ensuite. Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source
Gelée , 9 octets
Prend les salles de classe comme premier argument et les groupes comme deuxième argument.
Essayez-le en ligne!
Commenté
NB: C'est
Ṡ‘ḌẠ¬
beaucoup trop long. Mais je soupçonne que ce n'est pas la bonne approche de toute façon.la source
Japt , 9 octets
Essayez-le ou exécutez tous les cas de test sur TIO
Essayez-le ou exécutez tous les cas de test sur TIO
la source
2 - n
In Japt? De quel type de cas d'utilisation dispose-t-il pour justifier qu'il s'agit d'un code intégré de 1 octet?Í
est un raccourci pourn2<space>
et a été créé pour être utilisé avec des chaînes, les convertissant de base-2 en base-10 (un besoin assez courant). Cependant, lan
méthode, lorsqu'elle est appliquée à un nombre, soustrait ce nombre de l'argument de la méthode (par défaut =0
). Donc, ici, bien que la soustraction0
suffise pour trier le tableau dans l'ordre inverse, l'utilisation du raccourci me fait gagner un octetñn<space>
. J'aurais également pu l'utiliser lors du tri,V
mais cela n'aurait pas économisé d'octets car j'aurais toujours besoin d'un espace, au lieu de)
, pour fermer laí
méthode.Python 2 , 49 octets
Sorties par code de sortie, échoue pour une entrée fausse.
Essayez-le en ligne!
la source
MATL , 10 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Tenez compte des entrées
[20, 10, 30]
, à[20, 20, 50, 40]
titre d'exemple. La pile est représentée de bas en haut.la source
Haskell , 40 octets
Essayez-le en ligne!
la source
05AB1E ,
14128 octetsPort de @Sok réponse Pyth s » , alors assurez - vous de lui Upvote aussi bien!
Prend l'entrée comme une liste de listes, avec la liste de classe comme premier élément et la liste de groupe comme deuxième élément.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Ancienne réponse de 12 octets:
Prend d'abord la liste des classes, puis la liste des groupes.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
C # (Visual C # Interactive Compiler) ,
7774 octetsEssayez-le en ligne!
Code commenté:
la source
Haskell, 66 octets
Essayez-le en ligne!
la source
Outils Bash + GNU, 68 octets
69 octets
TIO
prend les chambres d'étudiant comme premier et deuxième argument sous forme de numéros de chaîne délimités par un retour à la ligne renvoie l'état de sortie 1 pour vrai ou 0 pour faux
la source
Perl 5
-pal
,6762 octets@NahuelFouilleul a économisé 5 octets avec un réarrangement et un grep
Essayez-le en ligne!
Version 67 octets
Prend la liste des tailles de classe séparées par des espaces sur la première ligne et la liste des tailles des salles séparées par des espaces sur la suivante.
la source
Lisp commun, 74 octets
(defun c(s r)(or(not(sort s'>))(and(sort r'>)(<=(pop s)(pop r))(c s r))))
Non minifié
Essaye-le
Notez que le tri mute définitivement la liste et pop redéfinit la variable sur l'élément suivant.
En effet, cela vérifie simplement récursivement que le plus grand groupe d'étudiants peut tenir dans la plus grande salle. Il existe 3 cas de base:
la source
Python 2 ,
716764 octetsEssayez-le en ligne!
la source
zip(...)
pour enregistrer 5 octets.Rétine 0.8.2 , 50 octets
Essayez-le en ligne!Le lien inclut une suite de tests. Prend deux listes de groupes et de salles (la suite de tests utilise
;
comme séparateur de liste). Explication:Convertissez en unaire.
Tri inversé de chaque liste séparément.
Ajoutez une virgule à chaque liste.
Vérifiez que chacun des numéros de la première liste peut correspondre au numéro approprié de la deuxième liste. Chaque fois
\3
contient les pièces précédemment appariées et le groupe suivant\2
doit donc pouvoir s'insérer dans la pièce suivante. Le(?>\3?)
gère le boîtier de la première chambre lorsqu'il n'y a pas encore de chambres précédentes.la source
charbon , 28 octets
Essayez-le en ligne!Le lien est vers la version détaillée du code. Prend une liste de listes de salles et de groupes et de sorties
-
si les salles peuvent accueillir les groupes. Explication:Répétez pendant qu'un groupe peut être affecté à une pièce.
Supprimez la plus grande salle et le plus grand groupe de leurs listes.
Vérifiez qu'il ne reste aucun groupe non alloué.
la source
JavaScript, 56 octets
Essayez-le
la source
7
et9
dans les classes de8
et10
.Perl 6 , 34 octets
Essayez-le en ligne!
Prend l'entrée sous la forme d'une liste de deux listes, les groupes et les salles de classe, et renvoie une jonction None qui peut être booléifiée à true / false.
Explication:
la source
Rubis , 57 octets
Essayez-le en ligne!
Prend
c
pour les cours,r
pour les chambres. Vérifie toutes les permutations des pièces au lieu d'utiliser le tri, car le tri inverse coûte trop d'octets. Cela semble quand même assez long ...la source
C # (Visual C # Interactive Compiler) ,
1059391828179777674 octetsCorrespond maintenant au score de dana!
Lance une erreur si faux, rien si vrai.
-12 octets grâce à @Destrogio!
Essayez-le en ligne!
Explication
la source
Java (OpenJDK 8) , 183 octets
Essayez-le en ligne!
Avec un petit conseil utile de Kevin Cruijssen et simplement un autre coup d'œil sur mon code moi-même, je peux diminuer mon score de 9% en remplaçant simplement trois mots anglais!
Java (OpenJDK 8) , 166 octets
Essayez-le en ligne!
la source
import java.util.*;
dans votre décompte d'octets. Vous pouvez cependant le jouer à 144 octets en Java 8, ou 140 en Java 10 en remplaçant leboolean
parvar
.true
/false
dans votre code,1>0
/0>1
sont des alternatives plus courtes . :)1/0
et je suppose que c'est bien dans ce cas, veuillez noter qu'en Java, contrairement à Python, JavaScript, C, etc. ne1/0
sont généralement pas considérés comme des sorties true / falsey valides . Et dans mon premier commentaire, j'ai mentionné une version de 144 octets . :) Bien que, il soit maintenant également invalide car il ne fonctionne pas pour le dernier cas de test, comme mentionné par @Shaggy .PowerShell , 80 octets
Essayez-le en ligne!
Script de test moins golfé:
la source
R , 65 octets
Essayez-le en ligne!
la source