[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

[MacPerl] Speaking of Pi



#!perl -w

# Speaking of Pi (speaking_of_pi.plx)
# How to Speak Pi to any precision!
# Thanks to Creede Lambard for supplying Pi to more
# precison than I'm actually using.
#
# "Fred" seems to be the best voice for this.

use Mac::Speech;

$speaker = "Fred";

$speech = <<INTRO ;
    I can speak Pie up to 512 signifigant digits.
    How many digits do you wish me to speak?
INTRO

&give_speech;

$pi_length = MacPerl::Ask('How Many digits do you wish me to speak?');
$double_len = (2 * $pi_length);

$pi = <<EOS ;
3.1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7 9 5 0 2 8
8 4 1 9 7 1 6 9 3 9 9 3 7 5 1 0 5 8 2 0 9 7 4 9 4 4 5 9 2 3 0 7 8 1 6
4 0 6 2 8 6 2 0 8 9 9 8 6 2 8 0 3 4 8 2 5 3 4 2 1 1 7 0 6 7 9 8 2 1 4
8 0 8 6 5 1 3 2 8 2 3 0 6 6 4 7 0 9 3 8 4 4 6 0 9 5 5 0 5 8 2 2 3 1 7
2 5 3 5 9 4 0 8 1 2 8 4 8 1 1 1 7 4 5 0 2 8 4 1 0 2 7 0 1 9 3 8 5 2 1
1 0 5 5 5 9 6 4 4 6 2 2 9 4 8 9 5 4 9 3 0 3 8 1 9 6 4 4 2 8 8 1 0 9 7
5 6 6 5 9 3 3 4 4 6 1 2 8 4 7 5 6 4 8 2 3 3 7 8 6 7 8 3 1 6 5 2 7 1 2
0 1 9 0 9 1 4 5 6 4 8 5 6 6 9 2 3 4 6 0 3 4 8 6 1 0 4 5 4 3 2 6 6 4 8
2 1 3 3 9 3 6 0 7 2 6 0 2 4 9 1 4 1 2 7 3 7 2 4 5 8 7 0 0 6 6 0 6 3 1
5 5 8 8 1 7 4 8 8 1 5 2 0 9 2 0 9 6 2 8 2 9 2 5 4 0 9 1 7 1 5 3 6 4 3
6 7 8 9 2 5 9 0 3 6 0 0 1 1 3 3 0 5 3 0 5 4 8 8 2 0 4 6 6 5 2 1 3 8 4
1 4 6 9 5 1 9 4 1 5 1 1 6 0 9 4 3 3 0 5 7 2 7 0 3 6 5 7 5 9 5 9 1 9 5
3 0 9 2 1 8 6 1 1 7 3 8 1 9 3 2 6 1 1 7 9 3 1 0 5 1 1 8 5 4 8 0 7 4 4
6 2 3 7 9 9 6 2 7 4 9 5 6 7 3 5 1 8 8 5 7 5 2 7 2 4 8 9 1 2 2 7 9 3 8
1 8 3 0 1 1 9 4 9 1 2 9 8 3 3 6 7 3 3 6 2 4 4 0 6 5 6 6 4 3 0 8 6 0 2
1 3 9 4 9 4 6 3
EOS

if ($double_len < 1024) {
        $speak_pi = substr( $pi , 0, $double_len);
        $speech = "Pie is equal to approximately: $speak_pi";
        &give_speech;
    } else {
        $speech = "I'm sorry, I can't speak Pie to that precision";
        &give_speech;
}

sub give_speech {
    if (! $speaker) { $speaker = "Fred" }
    $voice = $Voice{$speaker};
    $channel = NewSpeechChannel($voice) or die $^E;
        SpeakText($channel, $speech) || die $^E;
        while (SpeechBusy()) {}
        DisposeSpeechChannel($channel);
        $speech=$speaker="";
}

#  Even more digits of Pi if you want them!
#3.141592653589793238462643383279502884197169399375105820974944592307816406
2862
#  
089986280348253421170679821480865132823066470938446095505822317253594081284
8
#  
111745028410270193852110555964462294895493038196442881097566593344612847564
8
#  
233786783165271201909145648566923460348610454326648213393607260249141273724
5
#  
870066063155881748815209209628292540917153643678925903600113305305488204665
2
#  
138414695194151160943305727036575959195309218611738193261179310511854807446
2
#  
379962749567351885752724891227938183011949129833673362440656643086021394946
3
#  
952247371907021798609437027705392171762931767523846748184676694051320005681
2
#  
714526356082778577134275778960917363717872146844090122495343014654958537105
0
#  
792279689258923542019956112129021960864034418159813629774771309960518707211
3
#  
499999983729780499510597317328160963185950244594553469083026425223082533446
8
#  
503526193118817101000313783875288658753320838142061717766914730359825349042
8
#  
755468731159562863882353787593751957781857780532171226806613001927876611195
9
#  092164201989


# Fungal Parataxonomy                   Mycology Information (Mycoinfo)
# Webmaster, Staff Writer      **The World's First Mycology E-Journal**   
# <mailto:webmaster@mycoinfo.com>            <http://www.mycoinfo.com/> 
#
# First they ignore you. Then they laugh at you. Then they fight you.
# Then you win.                                     --Mohandas Gandhi


===== Want to unsubscribe from this list?
===== Send mail with body "unsubscribe" to macperl-request@macperl.org