두 셀 범위의 편차 계산

두 셀 범위의 편차 계산

내가하려는 일은 다음과 같습니다.

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.

관련 정보