2009-08-18 14 views
6

मुझे अपने प्रोग्राम में कुछ कोड चाहिए जो इनपुट के रूप में एक संख्या लेता है और इसे इसी पाठ में परिवर्तित करता है उदा। 745 से "सात सौ चालीस पांच"।मैं पर्ल में किसी संख्या को टेक्स्ट में कैसे परिवर्तित कर सकता हूं?

अब, मैं इसके लिए कोड लिख सकता हूं, लेकिन क्या कोई लाइब्रेरी या मौजूदा कोड मैं उपयोग कर सकता हूं?

+1

एक यूलर परियोजना समस्या, तु पर कार्य करना? – dala

+0

संबंधित: http://stackoverflow.com/questions/309884/code-golf-number-to-words –

उत्तर

17

perldoc से Lingua::EN::Numbers की:

use Lingua::EN::Numbers qw(num2en num2en_ordinal); 

my $x = 234; 
my $y = 54; 
print "You have ", num2en($x), " things to do today!\n"; 
print "You will stop caring after the ", num2en_ordinal($y), ".\n"; 

प्रिंट:

You have two hundred and thirty-four things to do today! 
You will stop caring after the fifty-fourth. 
1

आप कुछ इस तरह की कोशिश कर सकते हैं:

#!/usr/bin/perl 

use strict; 
use warnings; 

my %numinwrd = (
    0 => 'Zero', 1 => 'One', 2 => 'Two', 3 => 'Three', 4 => 'Four', 
    5 => 'Five', 6 => 'Six', 7 => 'Seven', 8 => 'Eight', 9 => 'Nine', 
); 

print "The number when converted to words is 745=>".numtowrd(745)."\n"; 

sub numtowrd { 
    my $num = shift; 
    my $txt = ""; 
    my @val = $num =~ m/./g; 

    foreach my $digit (@val) {  
    $txt .= $numinwrd{$digit} . " "; 
    } 

    return $txt; 
} 

उत्पादन होता है:

The number when converted to words is 745=>Seven Four Five 
+0

'@ val' से' $ txt' को परिवर्तित करने के लिए, '$ txt = join" करना आसान हो सकता है " , मानचित्र {$ numinwrd {$ _}} @ val', प्रभावी ढंग से अपने उप-लाइनर को बनाते हुए। इसके अलावा, यह समाधान 'सात सौ चालीस पांच 'का उत्पादन नहीं करता है। – amon

+0

यदि आप आउटपुट सात सौ चालीस पांच तक कर सकते हैं तो आप कोड दे सकते हैं – user1613245

संबंधित मुद्दे

 संबंधित मुद्दे