alexey
BAN USERfunction QueryGenerator(queries) {
//calculate total of all scores
var sum = queries
.map(function(x){return x[1];})
.reduce(function(a,x) { return a+x;});
var score = {};
var scoreSum = 0;
return function getQuery() {
while (true) {
if (scoreSum === sum) {
//invalidate score
score = {};
scoreSum = 0;
}
var rand = Math.round(Math.random() * (queries.length - 1));
var query = queries[rand][0];
var freq = queries[rand][1];
if (score[query] === undefined) {
score[query] = 1;
scoreSum++;
return query;
}
else if (score[query] < freq) {
score[query]++;
scoreSum++;
return query;
}
}
}
}
var tickets = [
['MUC', 'LHR'],
['CDG', 'MUC'],
['SFO', 'SJC'],
['LHR', 'SFO'],
];
//enter first ticket
var itinerary = tickets.pop();
//repeat until all tickets are match
//(could become an endless loop)
while(tickets.length > 0) {
var ticket = tickets.pop();
var tFrom = ticket[0];
var tTo = ticket[1];
var c1 = itinerary[0];
var c2 = itinerary[itinerary.length-1];
//connected From of itinerary with To of ticket
if(c1 === tTo) {
itinerary.unshift(tFrom);
continue;
}
//connected To of itinerary with From of ticket
if(c2 === tFrom) {
itinerary.push(tTo);
continue;
}
//couldn't find matches, put back into list of tickets
tickets.unshift(ticket);
}
console.log('itinerary', itinerary);
static int[] Subsequence(int[] A)
{
int maxStart = 0;
int maxEnd = A.Length - 1;
int maxSum = 0;
int start = -1;
int end = 0;
int sum = 0;
for(int i = 0; i < A.Length; i++)
{
if(A[i] >= 0 && start < 0)
{
start = i; end = i; sum=A[i];
}
else if(A[i] >= 0 && start >= 0)
{
end = i; sum += A[i];
}
else if (A[i] < 0 && start >= 0)
{
if(sum > maxSum)
{
maxSum =sum;
maxStart= start;
maxEnd = end;
}
start = -1;
}
}
//last sum
if (start >= 0 && sum > maxSum)
{
maxSum = sum;
maxStart = start;
maxEnd = end;
}
return new int[]
{
maxSum,
maxStart,
maxEnd
};
}
- alexey July 01, 2015