2 人の相性度は? (EPOCH@まつやま - 本選 3)

前回の AWK Users JP :: 素因数分解 (EPOCH@まつやま - 本選 2) に続いて 3 問目で、「2 人の相性度は?」という問題です。 本選第 1 ステージの問題 (PDF) の 3 問目になります。

文字列と番号の関連付けはプログラムで書いても難しいというわけではないのですが、ここでは単純に連想配列に格納しておきます。

#! /usr/local/bin/gawk -f
# epoch_problem_H3.awk
# 2 人の相性度は?
# usage: gawk -f epoch_problem_H3.awk file

BEGIN {
    num["a"] = 1;
    num["b"] = 2;
    num["c"] = 3;
    num["d"] = 4;
    num["e"] = 5;
    num["f"] = 6;
    num["g"] = 7;
    num["h"] = 8;
    num["i"] = 9;
    num["j"] = 10;
    num["k"] = 11;
    num["l"] = 12;
    num["m"] = 13;
    num["n"] = 14;
    num["o"] = 15;
    num["p"] = 16;
    num["q"] = 17;
    num["r"] = 18;
    num["s"] = 19;
    num["t"] = 20;
    num["u"] = 21;
    num["v"] = 22;
    num["w"] = 23;
    num["x"] = 24;
    num["y"] = 25;
    num["z"] = 26;
}

NR % 2 == 1 {
    name1 = tolower($0);
}

NR % 2 == 0 {
    name2 = tolower($0);

    name = name1 name2;

    score = 0;
    for (i = 1; i <= length(name); i++) {
        score = score + num[substr(name, i, 1)];
    }

    print score % 11;
}

特に難しいとこともないと思いますので、実行してみます。

$ cat epoch_problem_H3.txt
Alice
Bob

$ gawk -f epoch_problem_H3.awk epoch_problem_H3.txt
5

少しだけ awk らしいプログラムにしてみました。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png