Contar las desviaciones en dos rangos de células

1

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 al comparar las respuestas de cada alumno con las respuestas en la primera fila? Quiero poder calcular el puntaje de las pruebas ingresando las respuestas.

jgaryellison
fuente
¿Están las respuestas en sus propias células? Cuantas respuestas hay
Paul

Respuestas:

0

Aquí hay un script de shell que solo imprime el número de los mismos caracteres sin hacer 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 da formato a 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 plano) y luego ejecutarlos desde la Terminal con algo como bash ~/Desktop/script.sh o ruby ~/Desktop/script.rb.

Lri
fuente