普通に switch かなと思って書いてから、解説をみた。ほー、C++ のそれを「連想記憶」と呼ぶかねぇと思ったけど、 まぁ、なるほど。
C# では System.Collections.Generic の Dictionary を使う。
Haskell で同じことするのは面倒かなぁと思って、 一度はパタンマッチ版を書いてみたのだけど、 折角タプルに対する lookup が Prelude にあるのだから、それを使って書き直してみた。 >>= や flip を使い慣れているわけではないので、慣れていこう。
言語によって getLine だったり ReadLine だったりするのは、ちょっとしんどいなぁ。
ちゃんと VSCode とか使うか*1。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char d[128];
d['A'] = 'T'; d['T'] = 'A'; d['C'] = 'G'; d['G'] = 'C';
char c;
cin >> c;
cout << d[c] << endl;
}
using System.Collections.Generic;
using static System.Console;
class Atcoder
{
public static void Main()
{
var d = new Dictionary<string, string>()
{{"A", "T"}, {"T", "A"}, {"C", "G"}, {"G", "C"}};
WriteLine(d[ReadLine()]);
}
}
import Data.Maybe
main = getLine >>= putStrLn . fromJust . d
where d = flip lookup [("A", "T"), ("T", "A"), ("C", "G"), ("G", "C")]