AOJ 1152 Organize Your Train part II
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1142&lang=jp
D言語らしいコードが書けた
mutableじゃないとreverseできない(当たり前)とかimmutableだと~が使えない(なんでだろう?)で引っかかった
例えば,下の解答の一部で
char[] v = str[0..i].dup; char[] u = str[i..$].dup; ans[v~u] = true;
とするとコンパイラに怒られる.
以下解答
import std.stdio; import std.string; import std.conv; import std.algorithm; import std.range; void main(){ for(int m = to!int(chomp(readln())); m>0; m--){ bool[string] ans; string str = chomp(readln()); for(int i = 0; i <= str.length; i++){ char[] v = str[0..i].dup; char[] u = str[i..$].dup; string w = v.idup; string x = u.idup; string y = v.reverse.idup; string z = u.reverse.idup; ans[w~x] = true; ans[x~w] = true; ans[y~z] = true; ans[z~y] = true; ans[w~z] = true; ans[y~x] = true; ans[z~w] = true; ans[x~y] = true; } writeln(ans.length); } }
[追記]
連想配列の添字はimmutableでないといけないことを教えていただきました