GPA-Rechner
(GPA = Notendurchschnitt)
Sie sind ein gestresster Student während der Abschlusswoche. Anstatt für die bevorstehenden Prüfungen zu studieren, ist es am besten zu bestimmen, welche GPA Sie am Ende des Semesters haben werden. Auf diese Weise haben Sie Daten, um Ihre Entscheidung zu bestätigen, die ganze Nacht wach zu bleiben, damit dieses A in Calculus anstelle eines B auf der Liste des Dekans bleibt!
Als Informatik-Hauptfach möchten Sie den coolsten Weg finden, um diesen GPA zu bestimmen. Am coolsten ist natürlich der kürzeste Code! Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Einzelheiten
- Das College, an das Sie gehen, verwendet einen Basis-GPA, der zusammen mit den Kreditstunden skaliert wird.
- Ein Buchstabengrad von A ist 4,0, B ist 3,0, C ist 2,0, D ist 1,0 und F ist 0,0
- Ihr GPA ist ein gewichteter GPA. Ein A in einer 4-Kredit-Stunden-Klasse zählt also viermal so viel wie ein A in einer 1-Kredit-Stunden-Klasse.
- Kredit-Stunden reichen von 1-4
Ihr Programm muss eine Liste mit zwei Befehlszeilen-Eingaben haben, Grade und Credit Hour. Sie können über die Befehlszeile bestimmen, wie Sie diese am besten in Ihr Programm eingeben können. Sie müssen sich nicht um zu viele Eingaben kümmern, sondern müssen sicherstellen, dass Ihr Code ein Semester mit 19 Kreditstunden bewältigen kann.
- dh Eingang: A 1 B 4 C 2…
Ihr Programm muss die GPA mit 3 Ziffern ausgeben (dh X.XX)
- Ihr GPA muss auf zwei Dezimalstellen gerundet werden. Rund nach Belieben (Boden, Decke, Sockel usw.)
Eingabebeispiele (Wählen Sie das für Ihr Design am besten geeignete aus)
- 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
Oder eine der oben genannten Kombinationen, bei denen Sie das Format der Auflistung aller Noten und ihrer Kreditstunden verwenden:
- dh ABAA 3 4 1 1
Beispiele
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
: Um dies zu erreichen, müssen Benutzer zusätzlichen Code hinzufügen, der nichts mit der GPA-Berechnung zu tun hat.Antworten:
Jelly ,
1521 Bytes (12 ohne Rundung)+6 Bytes für die strikte Formatierung (mit ziemlicher Sicherheit in kürzerer Zeit, aber es ist Schlafenszeit)
Ein vollständiges Programm, das die Noten und die jeweiligen Kreditstunden aufnimmt und den berechneten GPA druckt (Hinweis: Die Rundungsmethode ist, wie im OP zulässig, auf den Mindestbetrag zu runden).
Probieren Sie es online!
Mit keiner Rundung für 12 Bytes :
Wie?
quelle
Python 3 , 66 Bytes
-5 Bytes dank Rod.
Probieren Sie es online!
quelle
69-ord(i)
funktioniert nicht()
, Sie können auch das verschieben/sum(c)
, um 3 Bytes zu sparen und 66 Bytes zu erreichenPerl 5 ,
5753 + 2 (-an
) =5955 BytesProbieren Sie es online!
Bearbeiten: vertauscht die Eingabe, um 4 Bytes zu sparen
Eingabeformat: zeilenweise getrennt, Credits gefolgt von der Note:
Beispiel:
quelle
Python 2 , 69 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 39 Byte
Nimmt eine Liste von Kreditstunden und dann eine Reihe von Noten.
Funktioniert nicht mit TIO, da TIO den Mathematica-Kernel verwendet (der keine Zahlen mit willkürlicher Genauigkeit drucken möchte)
quelle
Tr
N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
/.
.JavaScript (ES6), 72 Byte
Eingabeformat:
A1B3C2F3B4
Testfälle
Code-Snippet anzeigen
quelle
search
Ab wann wird Golfer alsparseInt
?parseInt
würde wahrscheinlich mit nur ein paar mehr unterstützten Noten Golfspieler werden. Ein Problem ist jedoch die Lücke zwischen F = 0 und D = 1.R , 64 Bytes
Probieren Sie es online!
danke an user2390246 für die behebung eines fehlers!
quelle
LETTERS[-5]
Java, 211 Bytes
Eingabeformat: A1B3C2F3B4
Golf gespielt
Ungeplündert
Andere Version
Mein Bauchweh sagte mir, dass die Verwendung eines anderen Eingabeformats (ABCF1324) den Code kürzer machen würde. Es scheint so, als ob es nicht so wäre. Die folgende Version ist 234 Byte lang.
Golf gespielt
Ungolfed
quelle
Java 1.8 ,
287249 Bytes-38 Bytes dank Bumptious
Golf gespielt
Ungolfed
quelle
Julia 0,6 ,
46 4342 BytesProbieren Sie es online!
Erläuterung
Eingabeformat::
g
Vektor der Noten;h
: Vektor der Kreditstundeng%h
:%
Operator neu definieren.69-Int.(g)
: Konvertieren'F','D','C','B','A'
zu-1,1,2,3,4
für jedes Element von G ist.max.( ,0)
: Klemmbereich bis0:4
(elementweise).quelle