in reply to Vietnamese Numbers
You were having a problem for dealing with the digit '0'. You were parsing '101' as '1 times 100, 0 times 10, and 1', and the '0 times 10' was emitted as "vietnamese for zero" followed by "vietnamese for ten", resulting in "muoi".use strict; use warnings 'all'; my %numbers = ( 0, '', 1, 'mot', 2, 'hai', 3, 'ba', 4, 'bon', 5, 'nam', 6, 'sau', 7, 'bay', 8, 'tam', 9, 'chin', 10, 'muoi', 100, 'tram', 1000, 'ngan' ); sub translate { my $number = $_[0]; my @output = (); if (defined($numbers{$number})) { my $text_version = $numbers{$number}; print "$text_version \n"; } else { my $reverse_number = reverse($number); my $places = 1; my @digits = split ('', $reverse_number); foreach my $digit (@digits) { next unless $digit; if ($places == 1) { push (@output, $numbers{$digit}); } else { push (@output, $numbers{$places}); unless ($number < 20) { push (@output, $numbers{$digit}); } } } continue { $places *= 10; } @output = reverse(@output); print "@output \n"; } }
Abigail
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Vietnamese Numbers
by Cody Pendant (Prior) on Aug 01, 2002 at 23:42 UTC |