Language Nemerle
(english numerals)
| Date: | 06/20/06 |
| Author: | Vermicious Knid |
| URL: | n/a |
| Comments: | 0 |
| Info: | n/a |
| Score: |
using System;
def capitalize = s => Char.ToUpper(s[0]).ToString() + s.Substring(1);
def numeral(n)
{
assert(n <= 99);
def tens = array["twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"];
def nums = array["no more", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve"];
def teens = array["thir", "four", "fif", "six", "seven", "eigh", "nine"];
if (n < 13)
nums[n]
else if (n < 20)
teens[n - 13] + "teen"
else
tens[(n / 10) - 2] + (if ((n % 10) > 0) " " + nums[n % 10] else "")
}
def beers(n)
{
| 0 => "no more bottles of beer"
| 1 => "one more bottle of beer"
| _ => $"$(numeral(n)) bottles of beer"
}
def onTheWall = n => $"$(beers(n)) on the wall, $(beers(n)).\n";
def passAround(n)
{
| 0 => $"Go to the store and buy some more, $(beers(99)) on the wall.\n"
| _ => $"Take one down and pass it around, $(beers(n-1)) on the wall.\n"
}
$[99, 98 .. 0].Iter(n => Console.WriteLine(capitalize(onTheWall(n)) + passAround(n)))
Download Source | Write Comment
Alternative Versions
| Version | Author | Date | Comments | Rate |
|---|---|---|---|---|
| ext. methods and foreach | Vermicious Knid | 06/20/06 | 0 | |
| up-to-date version | Vermicious Knid | 06/20/06 | 0 | |
| 3 | caminoix | 09/13/05 | 2 |
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments