<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=IpscLoadBalancing</id>
	<title>IpscLoadBalancing - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=IpscLoadBalancing"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=IpscLoadBalancing&amp;action=history"/>
	<updated>2026-05-15T16:05:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=IpscLoadBalancing&amp;diff=32578&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=IpscLoadBalancing&amp;diff=32578&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;b.py Load Balancing&lt;br /&gt;
 June Kim &amp;amp;lt;juneaftn@hanmail.net&amp;amp;gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 from __future__ import generators&lt;br /&gt;
 import unittest, shlex&lt;br /&gt;
 from cStringIO import StringIO&lt;br /&gt;
 &lt;br /&gt;
 def doAll(aString):&lt;br /&gt;
     lines=parseLines(aString)&lt;br /&gt;
     for eachLine in lines:&lt;br /&gt;
         yield getRounds(eachLine)&lt;br /&gt;
         &lt;br /&gt;
 def parseLines(aString):&lt;br /&gt;
     stream=StringIO(aString)&lt;br /&gt;
     lexer=shlex.shlex(stream)&lt;br /&gt;
     numOfElements=int(lexer.get_token())&lt;br /&gt;
     total=[]&lt;br /&gt;
     while 1:&lt;br /&gt;
         thisLine=[]&lt;br /&gt;
         for i in range(numOfElements):&lt;br /&gt;
             thisLine.append(int(lexer.get_token()))&lt;br /&gt;
         yield thisLine&lt;br /&gt;
         numOfElements=lexer.get_token()&lt;br /&gt;
         if numOfElements==&amp;#039;-&amp;#039;:&lt;br /&gt;
             break&lt;br /&gt;
         else:&lt;br /&gt;
             numOfElements=int(numOfElements)&lt;br /&gt;
 &lt;br /&gt;
 def getSum(aList):&lt;br /&gt;
     return reduce(lambda x,y:x+y,aList,0)&lt;br /&gt;
 &lt;br /&gt;
 class BalancingImpossibleException(Exception):&lt;br /&gt;
     pass&lt;br /&gt;
 &lt;br /&gt;
 def getAvg(aList):&lt;br /&gt;
     sum=getSum(aList)&lt;br /&gt;
     if sum % len(aList):&lt;br /&gt;
         raise BalancingImpossibleException&lt;br /&gt;
     return sum/len(aList)&lt;br /&gt;
 &lt;br /&gt;
 def getRounds(aList,aDebug=0):&lt;br /&gt;
     try:&lt;br /&gt;
         avg=getAvg(aList)&lt;br /&gt;
     except BalancingImpossibleException:&lt;br /&gt;
         return -1&lt;br /&gt;
     listLen=len(aList)&lt;br /&gt;
     totalSum=getSum(aList)&lt;br /&gt;
     last=0;leftSum=0;rightSum=totalSum&lt;br /&gt;
     for i in range(listLen):&lt;br /&gt;
         rightSum-=aList[i]        &lt;br /&gt;
         last=min(leftSum-avg*i,rightSum-avg*(listLen-i-1),last)&lt;br /&gt;
         leftSum+=aList[i]&lt;br /&gt;
     return -last                  &lt;br /&gt;
 &lt;br /&gt;
             &lt;br /&gt;
     &lt;br /&gt;
 class TestLoadBalancing(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.l=[[[6,0,9],4],&lt;br /&gt;
                 [[0,9,6],5],&lt;br /&gt;
                 [[0,6,9],5],&lt;br /&gt;
                 [[2,3,5,6],3],&lt;br /&gt;
                 [[0,1,4,3],3],&lt;br /&gt;
                 [[16,17,15, 0,20, 1, 1, 2],23],&lt;br /&gt;
                 [[16,17,15, 1,19, 1, 1, 2],23],&lt;br /&gt;
                 [[16,17,15,10,10, 1, 1, 2],23],&lt;br /&gt;
                 [[16,17,15,11, 9, 1, 1, 2],23],&lt;br /&gt;
                 [[16,17,15,12, 8, 1, 1, 2],24],&lt;br /&gt;
                 [[16,17,15,13, 7, 1, 1, 2],25],&lt;br /&gt;
                 [[16,17,15,20, 0, 1, 1, 2],32],&lt;br /&gt;
                 [[16, 1,15,20, 0, 1,17, 2],16],&lt;br /&gt;
                 [[16, 1,15, 0,20, 1,17, 2], 7],                &lt;br /&gt;
                 [[17,18,16,21, 1, 2, 2, 3],32],&lt;br /&gt;
                 [[0,0,100,0,0,0,0,0,0,0],70],&lt;br /&gt;
                 [[0,0, 99,1,0,0,0,0,0,0],69],&lt;br /&gt;
                 [[0,1,3,5,333,5,3,1,0],147 ],&lt;br /&gt;
                 [[5,1,4,2,3,3,2,4,1,5,0,6],3],&lt;br /&gt;
                 [[9,0,8,1,7,2,6,3,5,4,4,5,3,6,2,7,1,8,0,9],-1],&lt;br /&gt;
                 [[17,9,4],7],&lt;br /&gt;
                 [[6,94,3303,6921,94,105,8,7,77,4084,8,7,98,6,4,\&lt;br /&gt;
                   974,3,10,6,0,90,23],7459],&lt;br /&gt;
                ]&lt;br /&gt;
     def testGetRounds(self):&lt;br /&gt;
         for data,answer in self.l:&lt;br /&gt;
             actual=getRounds(data)&lt;br /&gt;
             self.assertEquals(answer,actual)&lt;br /&gt;
 &lt;br /&gt;
     def testParseLine(self):&lt;br /&gt;
         data=&amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
 3&lt;br /&gt;
 0 1&lt;br /&gt;
 3&lt;br /&gt;
 &lt;br /&gt;
 2&lt;br /&gt;
 5 1&lt;br /&gt;
 &lt;br /&gt;
 -1&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
         expected=[[0,1,3],[5,1]]&lt;br /&gt;
         self.assertEquals(expected,list(parseLines(data)))&lt;br /&gt;
         &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;:&lt;br /&gt;
     unittest.main(argv=(&amp;#039;&amp;#039;,&amp;#039;-v&amp;#039;))&lt;br /&gt;
 &lt;br /&gt;
 ##################################################&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;runb.py Runner for b.py&lt;br /&gt;
 June Kim &amp;amp;lt;juneaftn@hanmail.net&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 python runb.py &amp;amp;lt;inputfile&amp;amp;gt; &amp;amp;lt;outputfile&amp;amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 import b,sys&lt;br /&gt;
 &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;:&lt;br /&gt;
     f=open(sys.argv[1])&lt;br /&gt;
     fout=open(sys.argv[2],&amp;#039;wt&amp;#039;)&lt;br /&gt;
     bgen=b.doAll(f.read())&lt;br /&gt;
     for each in bgen:&lt;br /&gt;
         print each&lt;br /&gt;
         fout.write(&amp;quot;%s\n&amp;quot;%each)&lt;br /&gt;
     f.close()&lt;br /&gt;
     fout.close()&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ##################################################&lt;br /&gt;
 ## B1&lt;br /&gt;
 ##&lt;br /&gt;
 ## 147&lt;br /&gt;
 ## 3&lt;br /&gt;
 ## -1&lt;br /&gt;
 ## 7459&lt;br /&gt;
 ## 7&lt;br /&gt;
 ## 8564&lt;br /&gt;
 #################################################&lt;br /&gt;
 ## B2&lt;br /&gt;
 ##&lt;br /&gt;
 ## 107829&lt;br /&gt;
 ## 24286&lt;br /&gt;
 ## 167437&lt;br /&gt;
 ##################################################&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>