<p dir="ltr">Instead of looking at it as an estimate, you can look at it as a "summarized speed of all barbers".</p>
<p dir="ltr">It would let you know much time would it take to cut everyone before you. Afterwards you'd need to go through barbers and find the first one that would become available after this time-period.</p>
<p dir="ltr">Do you think this makes sense?</p>
<div class="gmail_quote">27 квіт. 2015 05:40 "Gregory Guthrie" <<a href="mailto:guthrie@mum.edu">guthrie@mum.edu</a>> пише:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Seems to me that an estimate won't help, one has to know exactly how much to skip over.<br>
<br>
I did this:<br>
   Find the lowest common multiple (lcm), and then from that the shortest cycle of services,<br>
   And then skip any multiple of those from the customer queue.<br>
<br>
sim :: Problem -> [Result]<br>
sim (n, ts) = serve tSkip (servers ts)<br>
    --  optimize; skip ahead over server cycles...<br>
    where tsLcm  = (foldl lcm $ head ts) $ tail ts<br>
          tCycle = sum $ map (div tsLcm) ts<br>
          tSkip  = n - (div n tCycle)*tCycle<br>
<br>
(Some fixup is needed for tSkip=0, one easy one is to force an extra cycle.)<br>
> ----------------------------------------------------------------------<br>
> Message: 1<br>
> Date: Sat, 18 Apr 2015 10:29:11 -0400<br>
> From: Doug McIlroy <<a href="mailto:doug@cs.dartmouth.edu">doug@cs.dartmouth.edu</a>><br>
> To: <a href="mailto:sourabh.s.joshi@gmail.com">sourabh.s.joshi@gmail.com</a><br>
> Cc: <a href="mailto:beginners@haskell.org">beginners@haskell.org</a><br>
> Subject: Re: [Haskell-beginners] GCJ 2015 - Round 1A Problem - Haircut<br>
> Message-ID: <<a href="mailto:201504181429.t3IETBfo025201@coolidge.cs.dartmouth.edu">201504181429.t3IETBfo025201@coolidge.cs.dartmouth.edu</a>><br>
> Content-Type: text/plain; charset=us-ascii<br>
><br>
> > Can someone tell me how I could have avoided or fixed this?<br>
><br>
> The trouble manifested as stack overflow on solving<br>
><br>
> > <a href="https://code.google.com/codejam/contest/4224486/dashboard#s=p1" target="_blank">https://code.google.com/codejam/contest/4224486/dashboard#s=p1</a><br>
><br>
> For efficiency, you'll probably need more cleverness in math than in Haskell. You can predict<br>
> an approximate start time for the Nth customer's service from the average per-customer<br>
> service time M, where 1/M = sum 1/M_k.<br>
> Starting from that estimate, one can skip over almost the entire service simulation.<br>
><br>
> Doug McIlroy<br>
><br>
><br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div>