GPA Calculator
(Средний балл = средний балл)
Вы утомлены студентом колледжа во время финальной недели. Вместо того, чтобы готовиться к экзаменам, вы решаете, что лучше всего определить, какой средний балл у вас будет в конце семестра. Таким образом, у вас есть данные, подтверждающие ваше решение не ложиться спать всю ночь, чтобы получить А в Исчислении вместо В, чтобы остаться в списке Дина!
Будучи специалистом в области компьютерных наук, вы хотите найти самый крутой способ определить этот средний балл. Конечно, самый крутой способ - самый короткий код! Это код-гольф , поэтому выигрывает самый короткий код в байтах!
Детали
- Колледж, в который вы поступаете, использует базовый средний балл, рассчитанный вместе с кредитными часами.
- Буквенная оценка А - 4,0, В - 3,0, С - 2,0, D - 1,0, F - 0,0.
- Ваш средний балл - это взвешенный средний балл, поэтому A в классе с 4 кредитными часами в 4 раза больше, чем A в классе с 1 кредитным часом (более подробные объяснения приведены в примерах ниже)
- Кредитные часы варьируются от 1-4
Ваша программа должна иметь список из двух входов командной строки, Grade и Credit Hour. Вы можете определить лучший способ ввода их в вашу программу через командную строку. Вам не нужно беспокоиться о слишком большом количестве входных данных, но убедитесь, что ваш код может обработать семестр 19 кредитных часов.
- т.е. вход: A 1 B 4 C 2…
Ваша программа должна выводить GPA, используя 3 цифры (то есть X.XX)
- Ваш средний балл должен быть округлен до двух десятичных знаков. Закруглите как хотите (пол, потолок, основание и т. Д.)
Примеры ввода (выберите тот, который лучше всего подходит для вашего дизайна)
- A1B3C2F3B4
- A1 B3 C2 F3 B4
- A 1 B 3 C 2 F 3 B 4
- А, 1, B 3, C 2, F 3, B 4
- А1, В3, С2, F3, В4
Или любая из вышеперечисленных комбинаций, где вы используете формат перечисления всех оценок, а затем их кредитных часов:
- т.е. ABAA 3 4 1 1
Примеры
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
: чтобы достичь этого, люди должны добавить дополнительный код, который не имеет ничего общего с вычислением GPA.Ответы:
Желе ,
1521 байт (12 без округления)+6 байт для строгого форматирования (почти наверняка возможно за меньшее, но это время ложиться спать)
Полная программа с оценками и соответствующими кредитными часами, в которых выводится рассчитанный средний балл (Примечание: метод округления до минимума, как разрешено в ОП).
Попробуйте онлайн!
Без округления для 12 байтов :
Как?
источник
Python 3 , 66 байт
-5 байт благодаря Роду.
Попробуйте онлайн!
источник
69-ord(i)
не работает()
, также вы можете переместить,/sum(c)
чтобы сохранить 3 байта до 66 байтовPerl 5 ,
5753 + 2 (-an
) =5955 байтПопробуйте онлайн!
Редактировать: поменять местами ввод, чтобы сохранить 4 байта
Формат ввода: разделенная строка, за кредитами следует оценка:
Пример:
источник
Python 2 , 69 байт
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 39 байт
Занимает список кредитных часов, а затем ряд оценок.
Не работает на TIO, потому что TIO использует ядро Mathematica (которое не хочет печатать числа произвольной точности)
источник
Tr
N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
/.
.JavaScript (ES6), 72 байта
Формат ввода:
A1B3C2F3B4
Контрольные примеры
Показать фрагмент кода
источник
search
становится гольф-чемparseInt
?parseInt
, вероятно, станет игроком в гольф с еще несколькими поддерживаемыми оценками. Одной из проблем является разрыв между F = 0 и D = 1.R , 64 байта
Попробуйте онлайн!
спасибо пользователю 2390246 за исправление ошибки!
источник
LETTERS[-5]
Java, 211 байт
Формат ввода: A1B3C2F3B4
Golfed
Unglofed
Другая версия
Мой инстинктивный фрейлинг сказал мне, что использование другого формата ввода (ABCF1324) сделает код короче. Кажется, что нет. Версия ниже имеет длину 234 байта.
Golfed
Ungolfed
источник
Java 1,8 ,
287249 байт-38 байт благодаря Bumpious
Golfed
Ungolfed
источник
Юлия 0,6 ,
46 4342 байтаПопробуйте онлайн!
объяснение
Формат ввода
g
:: вектор оценок;h
: вектор кредитных часовg%h
: Переопределить%
оператора.69-Int.(g)
: Преобразовать'F','D','C','B','A'
в-1,1,2,3,4
соответственно для каждого элемента g.max.( ,0)
: Диапазон зажима до0:4
(поэлементно).источник