Skip to content

Instantly share code, notes, and snippets.

@worthlesscog
Created April 29, 2012 19:17
Show Gist options
  • Save worthlesscog/2552820 to your computer and use it in GitHub Desktop.
Save worthlesscog/2552820 to your computer and use it in GitHub Desktop.
801 bytes
object Z{
val z="teen";val k=1000;val t=""::""::"twenty"::"thirty"::"forty"::"fifty"::"sixty"::"seventy"::"eighty"::"ninety"::Nil
val u=""::"one"::"two"::"three"::"four"::"five"::"six"::"seven"::"eight"::"nine"::"ten"::"eleven"::"twelve"::"thir"+z::"four"+z::"fif"+z::"six"+z::"seven"+z::"eight"+z::"nine"+z::Nil
def c(n:Int)={def c(n:Int,x:String*):String={if(n>0){val m=n%k;val r=m%100;val s=if(r<20)u(r)else t(r/10)+(if(u(r%10)=="")""else" "+u(r%10))
val h=if(m/100>0)u(m/100)+" hundred "else"";val j=if(h=="")s else h+(if(s=="")""else"and ")+s;c(n/k,x.tail:_*)+j+(if(j=="")""else x.head)}else""}
if(n>0){val f=c((n/k)*k,""," thousand "," million "," billion ");val r=c(n%k,"");f+(if(f==""||n%k>99)r else(if(r.isEmpty)""else"and "+r))}else"zero"}
def main(x:Array[String]):Unit={println(c(10201))}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment