GPA Calculator
(GPA = Moyenne pondérée cumulative)
Vous êtes un étudiant stressé pendant la semaine des finales. Au lieu d'étudier pour vos examens à venir, vous décidez qu'il est préférable de déterminer quel GPA vous aurez à la fin du semestre. De cette façon, vous avez des données pour confirmer votre décision de rester éveillé toute la nuit pour obtenir ce A en calcul au lieu d'un B pour rester sur la liste du doyen!
Étant un majeur en informatique, vous voulez trouver le moyen le plus cool de déterminer ce GPA. Bien sûr, le moyen le plus cool est avec le code le plus court! C'est le code-golf , donc le code le plus court en octets gagne!
Détails
- Le collège que vous fréquentez utilise un GPA de base échelonné avec des heures de crédit.
- Une note de lettre A est un 4,0, B est 3,0, C est 2,0, D est 1,0 et F est 0,0
- Votre GPA est un GPA pondéré, donc un A dans une classe de 4 heures compte 4 fois plus qu'un A dans une classe de 1 heure (voir les exemples ci-dessous pour plus d'explications sur le poids)
- Les heures de crédit vont de 1 à 4
Votre programme devra avoir une liste de deux entrées de ligne de commande, Grade et Credit Hour. Vous pouvez déterminer la meilleure façon de les saisir dans votre programme via la ligne de commande. Vous n'avez pas à vous soucier de trop d'entrées, mais assurez-vous que votre code peut gérer un semestre de 19 crédits.
- ie Entrée: A 1 B 4 C 2…
Votre programme doit sortir le GPA, en utilisant 3 chiffres (c'est-à-dire X.XX)
- Votre GPA doit être arrondi à deux décimales. Arrondissez comme bon vous semble (sol, plafond, base, etc…)
Exemples d'entrée (choisissez celui qui convient le mieux à votre conception)
- A1B3C2F3B4
- A1 B3 C2 F3 B4
- A 1 B 3 C 2 F 3 B 4
- A, 1, B, 3, C, 2, F, 3, B, 4
- A1, B3, C2, F3, B4
Ou l'une des combinaisons ci-dessus où vous utilisez le format de liste de toutes les notes, puis leurs heures de crédit:
- c'est-à-dire ABAA 3 4 1 1
Exemples
Input - A 3 B 4 A 1 A 1
Output - 3.56
Explanation: (4.0 * 3 + 3.0 * 4 + 4.0 * 1 + 4.0 * 1)/(3+4+1+1) = 3.555556 rounded off to 3.56
Input - A 4 F 2 C 3 D 4
Output - 2.00
Explanation: (4.0 * 4 + 0.0 * 2 + 2.0 * 3 + 1.0 * 4)/(4+2+3+4) = 2 rounded off to 2.00
Your GPA needs to be rounded to two decimal places
: pour y parvenir, les gens doivent ajouter du code supplémentaire qui n'a rien à voir avec le calcul GPA.Réponses:
Gelée ,
1521 octets (12 sans arrondi)+6 octets pour le formatage strict (presque certainement possible en moins mais c'est l'heure du coucher)
Un programme complet prenant les notes et les heures de crédit respectives qui imprime le GPA calculé (Remarque: la méthode d'arrondi est au plancher, comme le permet le PO).
Essayez-le en ligne!
Sans arrondi pour 12 octets :
Comment?
la source
Python 3 , 66 octets
-5 octets grâce à Rod.
Essayez-le en ligne!
la source
69-ord(i)
ne fonctionne pas()
, vous pouvez également déplacer le/sum(c)
pour enregistrer 3 octets atteignant 66 octetsPerl 5 ,
5753 + 2 (-an
) =5955 octetsEssayez-le en ligne!
Modifier: permuté l'entrée pour économiser 4 octets
Format d'entrée: ligne séparée, crédits suivis de la note:
Exemple:
la source
Python 2 , 69 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 39 octets
Prend une liste d'heures de crédit, puis une chaîne de notes.
Ne fonctionne pas sur TIO car TIO utilise le noyau Mathematica (qui ne veut pas imprimer de nombres de précision arbitraires)
la source
Tr
N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
/.
, cependant.JavaScript (ES6), 72 octets
Format d'entrée:
A1B3C2F3B4
Cas de test
Afficher l'extrait de code
la source
search
devient-il plus golfeurparseInt
?parseInt
deviendrait probablement golfeur avec seulement quelques notes supplémentaires prises en charge. Un problème est cependant l'écart entre F = 0 et D = 1.R , 64 octets
Essayez-le en ligne!
merci à user2390246 pour corriger un bug!
la source
LETTERS[-5]
Java, 211 octets
Format d'entrée: A1B3C2F3B4
Golfé
Unglofed
Autre version
Mon intuition m'a dit que l'utilisation d'un format d'entrée différent (ABCF1324) rendrait le code plus court. Il semble que non. La version ci-dessous est longue de 234 octets.
Golfé
Non golfé
la source
Java 1,8 ,
287249 octets-38 octets grâce à Bumptious
Golfé
Non golfé
la source
Julia 0,6 ,
46 4342 octetsEssayez-le en ligne!
Explication
Format d'entrée
g
:: vecteur de notes;h
: vecteur d'heures de créditg%h
: Redéfinir%
opérateur.69-Int.(g)
: Convertir'F','D','C','B','A'
en-1,1,2,3,4
respectivement pour chaque élément de g.max.( ,0)
: Plage de serrage à0:4
(par élément).la source