Cuente las desviaciones en dos rangos de celdas.

Cuente las desviaciones en dos rangos de celdas.

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.sho ruby ~/Desktop/script.rb.

información relacionada