Advertisement
joshuamil

Slices of Pi

Dec 2nd, 2011
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <cfsetting requesttimeout=" 6000000">
  2.  
  3. <cfscript>
  4. function getPi(){
  5.     var _http = new http();
  6.     _http.setMethod("get");
  7.     _http.setUrl('http://newton.ex.ac.uk/research/qsystems/collabs/pi/pi6.txt');
  8.     var _txt = _http.send().getPrefix();
  9.     return Left(ReReplace(_txt.filecontent,"[^0-9\.]","","ALL"),1000000);
  10. }
  11.  
  12. function setQuery(p){
  13.     var q = QueryNew("number");
  14.    
  15.     for(var i=1;i<=Len(p);i++){
  16.         if(Mid(p,i,1)!="."){
  17.             QueryAddRow(q);
  18.             QuerySetCell(q,"number",Mid(p,i,1));
  19.         }
  20.     }
  21.    
  22.     var qoq = new Query(sql="SELECT number,COUNT(number) AS instance FROM q GROUP BY number",dbtype="query");
  23.     qoq.setAttributes(q = q);
  24.    
  25.     return qoq.execute().getResult();
  26. }
  27.  
  28. q = setQuery(getPi());
  29. </cfscript>
  30.  
  31.  
  32.  
  33. <cfoutput><html>
  34.   <head>
  35.     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
  36.     <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  37.     <script type="text/javascript">
  38.     google.load("visualization", "1", {packages:["corechart"]});
  39.     google.setOnLoadCallback(drawChart);
  40.     function drawChart() {
  41.      
  42.         var data = new google.visualization.DataTable();
  43.         data.addColumn('string', 'Name');
  44.         data.addColumn('number', 'Instances');
  45.         data.addRows(#q.RecordCount#);
  46.        
  47.         <cfloop query="q">
  48.         data.setValue(#val(q.currentRow-1)#, 0, '#number#');
  49.         data.setValue(#val(q.currentRow-1)#, 1, #val(((instance/1000000)*100))#);
  50.         </cfloop>
  51.        
  52.         var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  53.         chart.draw(data,
  54.             {
  55.                  width: 800
  56.                 ,height: 600
  57.                 ,chartArea: {width:'800',height:'500',left:'0',top:'10'}
  58.                 ,pieSliceText:'value'
  59.             }
  60.         );
  61.     }
  62.     </script>
  63.   </head>
  64.  
  65.   <body>
  66.     <h1>Pi by the Slice</h1>Each slice represents the instances of a number in Pi up to 1,000,000 places.
  67.     <div id="chart_div"></div>
  68.   </body>
  69. </html></cfoutput>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement