連想配列再び
授業さぼってしまって暇なので…
import std.c.stdio; void main(){ int[char[]] h0; h0["sa"] = 1; h0["tsu"] = 2; h0["ga"] = 3; h0["i"] = 1; h0.write(); char[][int] h1; h1 = h0.invert(); h1.write(); h1.delete_if( (int i, char[] c){ return (i == 3)&&(c == "ga"); } ); h1.write(); } void write(int[char[]] h){ foreach (char[] c, int i; h){ printf("(%.*s : %d) ", c, i); } printf("\n"); } void write(char[][int] h){ foreach (int i, char[] c; h){ printf("(%d : %.*s) ", i, c); } printf("\n"); } U[T] invert(T, U)(T[U] hash){ U[] keys = hash.keys; T[] values = hash.values; U[T] temp; for (int i = 0; i < keys.length; i++){ temp[values[i]] = keys[i]; } return temp; } void delete_if(V, K, F)(inout V[K] hash, F f){ foreach (K k, V v; hash){ if (f(k, v)){ hash.remove(k); } } }
(sa : 1) (i : 1) (ga : 3) (tsu : 2) (1 : i) (2 : tsu) (3 : ga) (1 : i) (2 : tsu)
お前SATSUGAI言いたかっただけじゃないのかと。SATSUGAIせよ!SATSUGAIせよ!GO TO DMC!
あ、DMCとDMDは似ている。
デトロイト・メタル・D language。
嘘です。