Implement laptop allocation
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par examiner l’exercice préparatoire précédent visant à trouver les laptops possibles, puis utilisez les définitions indiquées de Person, Laptop et OperatingSystem comme point d’entrée pour allocate_laptops. La tâche est terminée lorsque chaque personne possède exactement un laptop et que la tristesse totale est minimisée, les systèmes d’exploitation non répertoriés étant comptés comme 100.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
In the prep, there was an exercise around finding possible laptops for a group of people.
Your exercise is to extend this to actually allocate laptops to the people.
Given these class definitions:
from dataclasses import dataclass
from enum import Enum
from typing import List
class OperatingSystem(Enum):
MACOS = "macOS"
ARCH = "Arch Linux"
UBUNTU = "Ubuntu"
@dataclass(frozen=True)
class Person:
name: str
age: int
# Sorted in order of preference, most preferred is first.
preferred_operating_system: List[OperatingSystem]
@dataclass(frozen=True)
class Laptop:
id: int
manufacturer: str
model: str
screen_size_in_inches: float
operating_system: OperatingSystem
Write a function with this signature:
def allocate_laptops(people: List[Person], laptops: List[Laptop]) -> Dict[Person, Laptop]:
Every person should be allocated exactly one laptop.
If we define "sadness" as the number of places down in someone's ranking the operating system the ended up with (i.e. if your preferences were [UBUNTU, ARCH, MACOS] and you were allocated a MACOS machine your sadness would be 2), we want to minimise the total sadness of all people. If we allocate someone a laptop with an operating system not in their preferred list, treat them as having a sadness of 100.
Maximum time in hours
3
How to submit
Submit a PR to this repo containing your function (and any supporting code).
- Langage dominant
- Shell
- Étoiles
- 0
- Forks
- 110
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de CodeYourFuture/Module-Tools
-
Complete the SDC starting survey Ouverte🏕 Priority Mandatory 📅 Sprint 4 Core Module-Tools Submit:None 🦔 Size Tiny
Difficulté 1/5 Moins d'une heure Accessibilité débutants 70/100
CodeYourFuture/Module-Tools#581 ·
-
Mentored Pair Programming Ouverte🏕 Priority Mandatory 🐇 Size Small 📅 Sprint 2 📅 Sprint 4 Module-Tools Recurring Submit:None
Difficulté 1/5 1-3 heures Accessibilité débutants 58/100
CodeYourFuture/Module-Tools#544 ·
-
Install a JDK Ouverte🏕 Priority Mandatory 📅 Sprint 4 Core Module-Tools Submit:None
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
CodeYourFuture/Module-Tools#480 ·
-
Write a general CV Ouverte🏕 Priority Mandatory 🐂 Size Medium 📅 Sprint 4 Core Module-Tools Submit:Slack
Difficulté 2/5 Une demi-journée Accessibilité débutants 45/100
CodeYourFuture/Module-Tools#137 ·
-
Prep Exercises Ouverte🏕 Priority Mandatory 📅 Sprint 5 🦑 Size Large Core Module-Tools Submit:PR
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
CodeYourFuture/Module-Tools#178 ·
Toutes les issues de CodeYourFuture/Module-Tools
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
bug easy help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
lacs-project/sysknife#503 ·
-
help wanted kind/documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
liquidmetal-dev/flintlock#1239 ·