Name: Anonymous 2009-05-14 1:34
Post some boring code so I can go to sleep.
import java.math.BigInteger;
import java.util.TimerTask;
import java.util.Timer;
public class CountSheep extends TimerTask {
private static java.math.BigInteger num = java.math.BigInteger.ONE;
private static String[] mantissa = {"zero", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
private static String[] exponent = {"", "thousand", "million", "billion", "trillion", "quadrillion",
"quintillion", "sexillion", "septillion", "octillion", "nonillion", "decillion",
"undecillion", "duodecillion", "tredecillion","quattuordecillion", "quindecillion", "sexdecillion",
"septdecillion", "octodecillion", "novemdecillion", "vigintillion", "unvigintillion", "duovigintillion",
"trevigintillion", "quattuorvigintillion", "quinvigintillion", "sexvigintillion", "septvigintillion", "octovigintillion",
"novemvigintillion", "trigintillion", "untrigintillion", "duotrigintillion", "tretrigintillion", "quattuortrigintillion",
"quintrigintillion", "sextrigintillion", "septtrigintillion", "octotrigintillion", "novemtrigintillion", "quadragintillion",
"unquadragintillion", "duoquadragintillion", "trequadragintillion", "quattuorquadragintillion", "quinquadragintillion", "sexquadragintillion",
"septquadragintillion", "octoquadragintillion", "novemquadragintillion", "quinquagintillion", "unquinquagintillion", "duoquinquagintillion",
"trequinquagintillion", "quattuorquinquagintillion", "quinquinquagintillion", "sexquinquagintillion", "septquinquagintillion",
"octoquinquagintillion",
"novemquinquagintillion", "sexagintillion", "unsexagintillion", "duosexagintillion", "tresexagintillion", "quattuorsexagintillion",
"quinsexagintillion", "sexsexagintillion", "septsexagintillion", "octosexagintillion", "novemsexagintillion", "septuagintillion",
"unseptuagintillion", "duoseptuagintillion", "treseptuagintillion", "quattuorseptuagintillion", "quinseptuagintillion", "sexseptuagintillion",
"septseptuagintillion", "octoseptuagintillion", "novemseptuagintillion", "octogintillion", "unoctogintillion", "duooctogintillion",
"treoctogintillion", "quattuoroctogintillion", "quinoctogintillion", "sexoctogintillion", "septoctogintillion", "octooctogintillion",
"novemoctogintillion", "nonagintillion", "unnonagintillion", "duononagintillion", "trenonagintillion", "quattuornonagintillion",
"quinnonagintillion", "sexnonagintillion", "septnonagintillion", "octononagintillion", "novemnonagintillion", "centillion"};
private static String[] tens = {"twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"};
private static String bigIntToEnglish(BigInteger b) {
StringBuilder s = new StringBuilder();
for(int i=0; i<exponent.length; i++) {
BigInteger n = BigInteger.valueOf(1000).pow(i);
if(n.compareTo(b)>0) {
n = BigInteger.valueOf(1000).pow(i-1);
BigInteger m = b.divide(n);
BigInteger r = b.subtract(m.multiply(n));
int a = m.intValue() / 100;
int c = m.intValue() % 100;
if(a>0) {
s.append(mantissa[a]+" hundred");
if(c>0) s.append(" and ");
}
if(c>0) {
if(c<20) s.append(mantissa[c]);
else for(int j=0; j<tens.length; j++) {
if(30 + 10*j > c) {
s.append(tens[j]);
if(c%10!=0) s.append(" "+mantissa[c%10]);
break;
}
}
}
s.append(" "+exponent[i-1]);
if(!r.equals(BigInteger.ZERO)) s.append(" "+bigIntToEnglish(r));
return s.toString();
}
}
return "Overflow";
}
public void run() {
String s = bigIntToEnglish(num);
System.out.println(Character.toUpperCase(s.charAt(0))+s.substring(1)+"sheep.");
num = num.add(BigInteger.ONE);
}
public static void main(String[] args) {
new Timer().scheduleAtFixedRate(new CountSheep(),0,100);
}
}