2つのセル範囲の偏差を数える

2つのセル範囲の偏差を数える

私がやろうとしていることは次のとおりです:

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

各生徒の回答を最初の行の回答と比較して、正解を数えるにはどうすればよいでしょうか。回答を入力してテストのスコアを計算できるようにしたいです。

答え1

以下は、フォーマットせずに同じ文字の数だけを出力するシェル スクリプトです。

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

結果を等幅テーブルとしてフォーマットする Ruby バージョンは次のとおりです。

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

スクリプトを TextEdit (プレーン テキスト モード) で保存し、 または などのコマンドを使用してターミナルから実行できbash ~/Desktop/script.shますruby ~/Desktop/script.rb

関連情報