Calculadora de GPA
(GPA = promedio de calificaciones)
Eres un estudiante universitario estresado durante la semana final. En lugar de estudiar para los próximos exámenes, decide que es mejor determinar qué GPA tendrá al final del semestre. ¡De esta manera tiene datos para respaldar su decisión de quedarse despierto toda la noche para obtener esa A en el cálculo en lugar de una B para permanecer en la lista del decano!
Al ser un experto en informática, desea encontrar la mejor manera de determinar este GPA. ¡Por supuesto, la mejor manera es con el código más corto! Este es el código de golf , por lo que gana el código más corto en bytes.
Detalles
- La universidad a la que asiste utiliza un GPA básico escalado junto con horas de crédito.
- Una calificación de letra de A es 4.0, B es 3.0, C es 2.0, D es 1.0 y F es 0.0
- Su GPA es un GPA ponderado, por lo que una A en una clase de 4 horas de crédito cuenta 4 veces más que una A en una clase de 1 hora de crédito (consulte los ejemplos a continuación para obtener más explicaciones de peso)
- Las horas de crédito varían de 1-4
Su programa necesitará tener una lista de dos entradas de línea de comando, Calificación y Hora de crédito. Puede determinar la mejor manera de ingresarlos en su programa a través de la línea de comandos. No necesita preocuparse por demasiadas entradas, pero asegúrese de que su código pueda manejar un semestre de 19 horas de crédito.
- es decir, entrada: A 1 B 4 C 2 ...
Su programa debe generar el GPA, utilizando 3 dígitos (es decir, X.XX)
- Su promedio de calificaciones debe redondearse a dos decimales. Redondee de la forma que desee (piso, techo, base, etc.)
Ejemplos de entrada (Elija el que mejor funcione para su diseño)
- 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
O cualquiera de las combinaciones anteriores donde usa el formato de listar todas las calificaciones, luego sus horas de crédito:
- es decir, ABAA 3 4 1 1
Ejemplos
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
: para lograr esto, las personas necesitan agregar código adicional que no tiene nada que ver con el cálculo de GPA.Respuestas:
Jelly ,
1521 bytes (12 sin redondeo)+6 bytes para el formato estricto (casi seguro posible en menos pero es hora de dormir)
Un programa completo que toma las calificaciones y las horas de crédito respectivas que imprime el GPA calculado (Nota: el método de redondeo es al piso, según lo permitido en el OP).
Pruébalo en línea!
Sin redondeo para 12 bytes :
¿Cómo?
fuente
Python 3 , 66 bytes
-5 bytes gracias a Rod.
Pruébalo en línea!
fuente
69-ord(i)
no funciona()
, también puedes moverlo/sum(c)
para guardar 3 bytes llegando a 66 bytesPerl 5 ,
5753 + 2 (-an
) =5955 bytesPruébalo en línea!
Editar: intercambió la entrada para guardar 4 bytes
Formato de entrada: línea separada, créditos seguidos de calificación:
Ejemplo:
fuente
Python 2 , 69 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 39 bytes
Toma una lista de horas de crédito y luego una serie de calificaciones.
No funciona en TIO porque TIO usa el núcleo de Mathematica (que no quiere imprimir números arbitrarios de precisión)
fuente
Tr
N[(5-(LetterNumber@#2/. 6->5)).#/Tr@#,3]&
/.
.JavaScript (ES6), 72 bytes
Formato de entrada:
A1B3C2F3B4
Casos de prueba
Mostrar fragmento de código
fuente
search
vuelve más golfista queparseInt
?parseInt
probablemente se volvería más golfista con solo unas pocas calificaciones más compatibles. Sin embargo, un problema es la brecha entre F = 0 y D = 1.R , 64 bytes
Pruébalo en línea!
¡Gracias a user2390246 por corregir un error!
fuente
LETTERS[-5]
Java, 211 bytes
Formato de entrada: A1B3C2F3B4
Golfed
Sin pelar
Otra versión
Mi instinto me dijo que usar un formato de entrada diferente (ABCF1324) acortaría el código. Parece que no lo hizo. La siguiente versión tiene 234 bytes de longitud.
Golfed
Sin golf
fuente
Java 1.8 ,
287249 bytes-38 bytes gracias a Bumptious
Golfed
Sin golf
fuente
Julia 0.6 ,
46 4342 bytesPruébalo en línea!
Explicación
Formato de entrada
g
: vector de calificaciones;h
: vector de horas de créditog%h
: Redefinir%
operador.69-Int.(g)
: Convertir'F','D','C','B','A'
a-1,1,2,3,4
respectivamente para cada elemento de g.max.( ,0)
: Rango de sujeción a0:4
(elemento inteligente).fuente