Kalkulator GPA
(GPA = średnia ocen)
Jesteś zestresowanym studentem podczas tygodnia finałów. Zamiast uczyć się do zbliżających się egzaminów, decydujesz, że najlepiej jest ustalić, jaki GPA będziesz mieć na koniec semestru. W ten sposób masz dane, aby poprzeć decyzję o pozostaniu przez całą noc, aby dostać A w rachunku zamiast B, aby pozostać na liście dziekana!
Będąc informatyką chcesz znaleźć najfajniejszy sposób na określenie tego GPA. Oczywiście najfajniejszym sposobem jest najkrótszy kod! To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
Detale
- Uczelnia, do której się wybierasz, korzysta z podstawowego GPA skalowanego wraz z godzinami kredytowania.
- Litera A to 4.0, B to 3.0, C to 2.0, D to 1.0, a F to 0.0
- Twój GPA jest GPA ważonym, więc A w klasie 4 godzin kredytowych liczy 4 razy więcej niż A w klasie 1 godziny kredytowej (więcej przykładów wyjaśniono poniżej)
- Godziny kredytu wahają się od 1-4
Twój program będzie musiał mieć listę dwóch danych wejściowych wiersza poleceń, oceny i godziny kredytu. Możesz określić najlepszy sposób wprowadzenia ich do swojego programu za pomocą wiersza poleceń. Nie musisz się martwić o zbyt wiele danych wejściowych, ale upewnij się, że Twój kod może obsłużyć 19-godzinny semestr kredytu.
- tj. Wejście: A 1 B 4 C 2…
Twój program musi wyprowadzać GPA, używając 3 cyfr (tj. X.XX)
- Twój GPA musi być zaokrąglony do dwóch miejsc po przecinku. Zaokrąglaj w dowolny sposób (podłoga, sufit, podstawa itp.)
Przykłady wprowadzania (wybierz, który z nich najlepiej pasuje do twojego projektu)
- 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
Lub dowolną z powyższych kombinacji, w których używasz formatu wyświetlania wszystkich ocen, a następnie ich godzin kredytowych:
- tj. ABAA 3 4 1 1
Przykłady
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
: aby to osiągnąć, ludzie muszą dodać dodatkowy kod, który nie ma nic wspólnego z obliczeniami GPA.Odpowiedzi:
Galaretka ,
1521 bajtów (12 bez zaokrąglania)+6 bajtów dla ścisłego formatowania (prawie na pewno możliwe w mniejszym, ale pora spania)
Pełny program uwzględniający oceny i odpowiednie godziny kredytowe, w którym drukowane są obliczone GPA (uwaga: metoda zaokrąglania jest do podłogi, jak dopuszcza się w PO).
Wypróbuj online!
Bez zaokrąglania dla 12 bajtów :
W jaki sposób?
źródło
Python 3 , 66 bajtów
-5 bajtów dzięki Rod.
Wypróbuj online!
źródło
69-ord(i)
nie działa()
, możesz także przesunąć,/sum(c)
aby zapisać 3 bajty, osiągając 66 bajtówPerl 5 ,
5753 + 2 (-an
) =5955 bajtówWypróbuj online!
Edycja: zamieniłem wejście, aby zapisać 4 bajty
Format wejściowy: oddzielone linie, kredyty i ocena:
Przykład:
źródło
Python 2 , 69 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 39 bajtów
Pobiera listę godzin kredytowych, a następnie szereg ocen.
Nie działa na TIO, ponieważ TIO używa jądra Mathematica (który nie chce drukować liczb o dowolnej dokładności)
źródło
Tr
N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
/.
.JavaScript (ES6), 72 bajty
Format wejściowy:
A1B3C2F3B4
Przypadki testowe
Pokaż fragment kodu
źródło
search
staje się bardziej golfistyparseInt
?parseInt
prawdopodobnie stałby się bardziej golfistą z kilkoma innymi obsługiwanymi ocenami. Jednym problemem jest jednak różnica między F = 0 a D = 1.R , 64 bajty
Wypróbuj online!
dzięki dla użytkownika2390246 za naprawienie błędu!
źródło
LETTERS[-5]
Java, 211 bajtów
Format wejściowy: A1B3C2F3B4
Grał w golfa
Nieklofowany
Inna wersja
Moje przeczucie powiedziało mi, że użycie innego formatu wejściowego (ABCF1324) skróci kod. Wygląda na to, że nie. Poniższa wersja ma 234 bajty.
Grał w golfa
Nie golfił
źródło
Java 1.8 ,
287249 bajtów-38 bajtów dzięki Bumptious
Grał w golfa
Nie golfił
źródło
Julia 0,6 ,
46 4342 bajtówWypróbuj online!
Wyjaśnienie
Format wejściowy
g
:: wektor ocen;h
: wektor godzin kredytowychg%h
: Przedefiniuj%
operatora.69-Int.(g)
: Konwersja'F','D','C','B','A'
do-1,1,2,3,4
, odpowiednio, dla każdego elementu g.max.( ,0)
: Zakres cęgów do0:4
(pod względem elementu).źródło