普通に 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")]