szamolgato-szamizalo.pl
changeset 0 624a9ab34425
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/szamolgato-szamizalo.pl	Wed May 07 16:25:00 2014 +0200
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+#
+# Szamolgato v1.0, 99/10/13
+#  (c)1999 peter 'grin' gervai
+#
+# kiirja egy szam erteket betukkel
+#
+
+$n=$ARGV[0] + 0;
+print "$n = ",&betukre($n),"\n";
+#print &betukre($n),"\n";
+
+
+sub betukre {
+    my $n = shift;
+
+    my @SZAM = ( 'nulla','egy','kettő','három','négy','öt','hat','hét','nyolc','kilenc' );
+    my @TIZES= ( '','tizen','huszon','harminc','negyven','ötven','hatvan','hetven','nyolcvan','kilencven' );
+    
+    #my @HATVANY=( 'száz','ezer','millió','milliárd', 'billió', 'billiárd','trillió', 
+   # 		'trilliárd', 'kvadrillió', 'kvadrilliárd',  );
+   # my @EXP   = ( 2,     3,     6,       9,           12,      15,        18 );
+
+
+	my @HATVANY = qw( száz ezer );
+	my @EXP = ( 2, 3 );
+	#                                                                     \/ idaig tart a szamabrazolas :)
+	my @hatvanyok1 = qw( milli billi trilli kvadrilli kvintilli szextilli 
+		szeptilli oktilli nonilli decilli undecilli bidecilli tridecilli kvadecilli kvintdecilli szexdecilli );
+	for my $i ( 1..16 ) {
+		push @HATVANY, $hatvanyok1[$i-1] . 'ó';
+		push @EXP, $i*6;
+		push @HATVANY, $hatvanyok1[$i-1] . 'árd';
+		push @EXP, $i*6+3;
+	}
+
+	push @HATVANY, 'googol';
+	push @EXP, 100;
+
+	push @HATVANY, 'centillió';
+	push @EXP, 600;
+
+	# 1 googolplex = 10^googol = 10^(10^100)
+
+    my $out = "";
+    
+    for( my $hatv=$#HATVANY; $hatv>=0; $hatv-- ) {
+        # 10^$hatv az alap
+        my $hatv_num = $EXP[$hatv];
+        my $alap = "1e$hatv_num" + 0;
+        if( $n>=$alap ) {
+            my $resz = int($n / $alap);
+            $out .= '-' if $out ne '';
+            $out = $out . &betukre($resz) . $HATVANY[$hatv];
+            $n -= $resz * $alap;
+        }
+    }
+
+    if( $n > 99 ) {
+        $out .= '-' if $out ne '';
+        $out .= "SOK";
+    } elsif( $n > 9 ) {
+        $out .= '-' if $out ne '';
+        if( $n==10 ) {
+            $out .= 'tíz';
+        } elsif( $n==20 ) {
+            $out .= 'húsz';
+        } else {
+            my $tizen = int( $n / 10);
+            $out .= $TIZES[$tizen] unless $tizen==0;
+            my $egyen = $n - ($tizen * 10);
+            $out .= $SZAM[$egyen] unless $egyen==0;
+        }
+    } elsif( $n > 0 ) {
+        $out .= '-' if $out ne '';
+        $out .= $SZAM[$n];
+    }
+
+    return $out;
+}
+