N_WORDS = 1024*768/32
fb = new int[100][N_WORDS]
for (j:0..99){
for (i:0..N_WORDS-1) fb[j][i] = random()
}
distance = makeProxy(Integer.getMethod("bitCount", [int]))
function sim(f1,f2){
d = 0
for (i:0..N_WORDS-1) d += distance(f1[i]^f2[i])
d
}
function sim(f1,f2, min){
d = 0
for (i:0..N_WORDS-1) {
d += distance(f1[i]^f2[i])
if (d > min) return d
}
d
}
function findOne(f0, buffers){
idx = 0
min = sim(f0, buffers[0])
for (i: 1.. size(buffers)-1){
f = buffers[i]
m = sim(f0, f, min)
if (m < min){
min = m
idx = i
}
}
idx
}
s=currentTimeMillis()
println(findOne(fb[0], fb[1..])+1, "th image")
println((currentTimeMillis()-s), " msec")
tomatsu #1742() [ Pnuts ] Rating0/0=0.00
N_WORDS = 1024*768/32 fb = new int[100][N_WORDS] for (j:0..99){ for (i:0..N_WORDS-1) fb[j][i] = random() } distance = makeProxy(Integer.getMethod("bitCount", [int])) function sim(f1,f2){ d = 0 for (i:0..N_WORDS-1) d += distance(f1[i]^f2[i]) d } function sim(f1,f2, min){ d = 0 for (i:0..N_WORDS-1) { d += distance(f1[i]^f2[i]) if (d > min) return d } d } function findOne(f0, buffers){ idx = 0 min = sim(f0, buffers[0]) for (i: 1.. size(buffers)-1){ f = buffers[i] m = sim(f0, f, min) if (m < min){ min = m idx = i } } idx } s=currentTimeMillis() println(findOne(fb[0], fb[1..])+1, "th image") println((currentTimeMillis()-s), " msec")Rating0/0=0.00-0+
[ reply ]