Esto es lo que estoy tratando de hacer:
Correct answers: A C A B D B ...
Student: Answers: Score:
-------- -------- ------
Charlie A. A D A B D C ... 4/6
George B. A C A B D D ... 5/6
¿Cómo se cuentan las respuestas correctas comparando las respuestas de cada estudiante con las respuestas de la primera fila? Quiero poder calcular la puntuación de las pruebas ingresando las respuestas.
Respuesta1
Aquí hay un script de shell que simplemente imprime la cantidad de mismos caracteres sin realizar ningún formato:
#!/bin/bash
solutions="ACABDB"
input="Charlie A.,ADABDC
George B.,ACABDD"
IFS=$'\n'
for line in $input; do
name=${line%,*}
answers=${line#*,}
correct=0
for i in $(seq ${#solutions}); do
[ ${answers:$i:1} == ${solutions:$i:1} ] && ((correct++))
done
echo "$line,$correct"
done
Y una versión de Ruby que formatea los resultados como una tabla monoespaciada:
solutions = "ACABDB"
"Charlie A.,ADABDC
George B.,ACABDD".split("\n").each { |line|
name, answer = line.split(",")
correct = 0
(0...solutions.length).each { |i|
correct += 1 if answer[i] == solutions[i]
}
puts "#{"%-17s" % name}#{"%-20s" % answer.split("").join(" ")}#{correct}/#{solutions.length}"
}
Puede guardar los scripts con TextEdit (en modo de texto sin formato) y luego ejecutarlos desde Terminal con algo como bash ~/Desktop/script.sh
o ruby ~/Desktop/script.rb
.