naranja #5274(2008/01/12 07:39 GMT) [ D ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import std.stdio; T[] classify(T)(T[] xs){ if(xs.length < 3){ return []; } int[T] h; foreach(e; xs){ if(h.length == 3){ break; } h[e]++; } if(h.length == 1){ return [xs[0]]; } else if(h.length == 2 && h.values.sort[0] == 1){ int minorKeyIndex = h[h.keys[0]] > h[h.keys[1]]; int majorKeyIndex = !minorKeyIndex; return [h.keys[minorKeyIndex], h.keys[majorKeyIndex]]; } return []; } void main(){ writefln(classify([1, 1, 1, 1])); // [1] writefln(classify([1, 2, 1, 1, 1])); // [2 1] writefln(classify([1, 2, 1, 2, 1])); // [] writefln(classify([1, 2, -1, 0, 3])); // [] }
Rating0/0=0.00-0+
[ reply ]
naranja
#5274()
[
D
]
Rating0/0=0.00
全部の要素が同じ値である:その値からなる 1 要素の配列
一つだけ仲間はずれがある:順に仲間はずれの値と多数派の値からなる 2 要素の配列
その他:要素なしの配列
Rating0/0=0.00-0+
[ reply ]