Abweichungen in zwei Zellbereichen zählen

Abweichungen in zwei Zellbereichen zählen

Ich versuche Folgendes zu tun:

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

Wie zählt man die richtigen Antworten, indem man die Antworten jedes einzelnen Schülers mit den Antworten in der ersten Zeile vergleicht? Ich möchte die Punktzahl der Tests berechnen können, indem ich die Antworten eingebe.

Antwort1

Hier ist ein Shell-Skript, das einfach die Anzahl der gleichen Zeichen ausgibt, ohne eine Formatierung vorzunehmen:

#!/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

Und eine Ruby-Version, die die Ergebnisse als Monospace-Tabelle formatiert:

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}"
}

Sie können die Skripte mit TextEdit speichern (im Nur-Text-Modus) und sie dann vom Terminal aus mit etwas wie bash ~/Desktop/script.shoder ausführen ruby ~/Desktop/script.rb.

verwandte Informationen