Names to numbers: Difference between revisions
m
→{{header|Wren}}: Minor tidy
m (→{{header|Quackery}}: small tweak) |
m (→{{header|Wren}}: Minor tidy) |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 10:
{{trans|Nim}}
<
‘two’ = 2,
‘three’ = 3,
Line 93:
L(name) names
print(‘#20’.format(nameToNum(name))‘ = ’name)</
{{out}}
Line 116:
=={{header|Common Lisp}}==
A counterpart to (format t "~R" ...).
<
(:use cl))
Line 310:
(format t "~a => ~a => ~a~%" number word (parse word))))
test-numbers))
(values))</
Running the test procedure:
<
number => (format t "~R" number) => (parse (format t "~R" number))
0 => zero => 0
Line 337:
-2 => negative two => -2
0 => zero => 0
; No value</
=={{header|D}}==
This uses the D module from the Number names task.
{{trans|Python}}
<
std.range, number_names;
Line 408:
auto num = txt.bigIntFromWords;
writefln("%12d <%s> %s", n, (n == num) ? "==" : "??", txt);
}</
{{out}}
<pre>This shows <==> for a successful round trip, <??> otherwise:
Line 440:
{{libheader| System.Math}}
{{Trans|Kotlin}}
<syntaxhighlight lang="delphi">
program Names_to_numbers;
Line 586:
Names.free;
Readln;
end.</
{{out}}
<pre> 0 = none
Line 605:
=={{header|Factor}}==
This solution parses number names in the same format that Factor's existing <code>number>text</code> word outputs. Meaning that for numbers under 10^66, <code>number>text</code> and <code>text>number</code> ought to be inverses of each other.
<
math.parser multiline peg peg.ebnf sequences sequences.deep ;
Line 737:
[ dup text>number "%s => %u\n" printf ] each ;
names-to-numbers-demo</
{{out}}
<pre>
Line 766:
=={{header|Go}}==
{{trans|Kotlin}}
<
import (
Line 908:
}
}
}</
{{out}}
Line 931:
=={{header|Haskell}}==
{{trans|Common Lisp}}
<
type Symbol = (String, Integer)
Line 1,052:
("zero":[]) -> 0
("negative":wx') -> negate $ parse illions wx'
wx' -> parse illions wx'</
=={{header|J}}==
Define the verb usinv to convert number names to numbers.
File number_names.ijs contains the code of [[Number_names#J|number names project]].
<syntaxhighlight lang="j">
NB. standard profile defines tolower and delete extra blanks.
load'number_names.ijs'
NB. replace J's stdlib 'cut' with a variant which supports multi-character delimiters
cut =: #@:[ }.&.> [ (E. <;.1 ]) ,
Line 1,074 ⟶ 1,075:
M +/ .*+/"1 ,"2 (([: (* 100 ^ 2 ~: #) (#EN100)|EN100&i.)&>)D
)
</syntaxhighlight>
<pre>
(-: [&.(us :.usinv))0
Line 1,089 ⟶ 1,090:
'''Works with gojq, the Go implementation of jq'''
<
if cond then . else msg | error end;
Line 1,190 ⟶ 1,191:
tests[]
| "\(nameToNum|lpad(17)) = \(.)"</
{{out}}
Exactly as for [[#Wren|Wren]].
=={{header|Julia}}==
<
"six", "seven", "eight", "nine"]
const teentext = ["eleven", "twelve", "thirteen", "fourteen",
Line 1,307 ⟶ 1,308:
println(txt, " => ", texttointeger(txt))
end
</
<pre>
One Hundred and One Dalmatians => 101 Dalmatians
Line 1,333 ⟶ 1,334:
=={{header|Kotlin}}==
<
val names = mapOf<String, Long>(
Line 1,440 ⟶ 1,441:
)
for (name in names) println("${"%20d".format(nameToNum(name))} = $name")
}</
{{out}}
Line 1,463 ⟶ 1,464:
=={{header|Nim}}==
{{trans|Kotlin}}
<
const Names = {"one": 1u64,
Line 1,571 ⟶ 1,572:
for name in names:
echo ($nametoNum(name)).align(20), " = ", name</
{{out}}
Line 1,591 ⟶ 1,592:
=={{header|Perl}}==
<
use warnings;
use feature 'say';
use utf8;
binmode STDOUT, ':utf8';
my $phrases_with_numbers = <<'END';
Line 1,705 ⟶ 1,708:
say $_ . ' --> ' . numify($_) for grep { $_ } split "\n", $phrases_with_numbers;
say $_ . ' --> ' . comma numify($_) for grep { $_ } split "\n", $pure_numbers;</
<pre>One Hundred and One Dalmatians --> 101 dalmatians
Two Thousand and One: A Space Odyssey --> 2001 : a space odyssey
Line 1,732 ⟶ 1,735:
=={{header|Phix}}==
Uses [[Number_names#Phix|Number_names]] as an executable library.
<!--<syntaxhighlight lang="phix">(phixonline)-->
<span style="color: #000080;font-style:italic;">--
-- demo\rosetta\Names_to_numbers.exw
-- ---------------------------------
--</span>
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">include</span> <span style="color: #000000;">demo</span><span style="color: #0000FF;">\</span><span style="color: #000000;">rosetta</span><span style="color: #0000FF;">\</span><span style="color: #000000;">Number_names</span><span style="color: #0000FF;">.</span><span style="color: #000000;">exw</span>
<span style="color: #008080;">constant</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">tokens</span><span style="color: #0000FF;">,</span><span style="color: #000000;">tokvals</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">columnize</span><span style="color: #0000FF;">({{</span><span style="color: #008000;">"zero"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"one"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"two"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"three"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"four"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"five"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"six"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"seven"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"eight"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">8</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"nine"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">9</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"ten"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">10</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"eleven"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">11</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"twelve"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">12</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"thirteen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">13</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"fourteen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">14</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"fifteen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">15</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"sixteen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">16</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"seventeen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">17</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"eighteen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">18</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"nineteen"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">19</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"twenty"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">20</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"thirty"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">30</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"forty"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">40</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"fifty"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">50</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"sixty"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">60</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"seventy"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">70</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"eighty"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">80</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"ninety"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">90</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"hundred"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">100</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"thousand"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1e3</span><span style="color: #0000FF;">},</span>
<span style="color: #0000FF;">{</span><span style="color: #008000;">"million"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1e6</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"billion"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1e9</span><span style="color: #0000FF;">},{</span><span style="color: #008000;">"trillion"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1e12</span><span style="color: #0000FF;">}})</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">parse</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">substitute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #008000;">","</span><span style="color: #0000FF;">,</span><span style="color: #008000;">""</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">substitute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" and "</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">substitute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"-"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">words</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">words</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #008000;">"invalid"</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">negmul</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">hund</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]==</span><span style="color: #008000;">"minus"</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">negmul</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span>
<span style="color: #000000;">words</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..$]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">total</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">words</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #000000;">tokens</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]!=</span><span style="color: #008000;">"point"</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #008000;">"invalid"</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">total</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">hund</span>
<span style="color: #000000;">hund</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">tens</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">10</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">words</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">words</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">],</span><span style="color: #000000;">tokens</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #008000;">"invalid"</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">tokvals</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">></span><span style="color: #000000;">9</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #008000;">"invalid"</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">total</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">/</span><span style="color: #000000;">tens</span>
<span style="color: #000000;">tens</span> <span style="color: #0000FF;">*=</span> <span style="color: #000000;">10</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">exit</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">tokvals</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;"><</span><span style="color: #000000;">100</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">hund</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">k</span>
<span style="color: #008080;">elsif</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">100</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">hund</span> <span style="color: #0000FF;">*=</span> <span style="color: #000000;">k</span>
<span style="color: #008080;">else</span>
<span style="color: #000000;">total</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">hund</span><span style="color: #0000FF;">*</span><span style="color: #000000;">k</span>
<span style="color: #000000;">hund</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">negmul</span><span style="color: #0000FF;">*(</span><span style="color: #000000;">total</span><span style="color: #0000FF;">+</span><span style="color: #000000;">hund</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">samples</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">atom</span> <span style="color: #000000;">si</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">samples</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">spell</span><span style="color: #0000FF;">(</span><span style="color: #000000;">si</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">abs</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parse</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)-</span><span style="color: #000000;">si</span><span style="color: #0000FF;">)<</span><span style="color: #000000;">1e-6</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"<==> "</span><span style="color: #0000FF;">&</span><span style="color: #000000;">s</span>
<span style="color: #008080;">else</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"???? "</span><span style="color: #0000FF;">&</span><span style="color: #000000;">s</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%18s %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">smartp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">si</span><span style="color: #0000FF;">),</span><span style="color: #000000;">s</span><span style="color: #0000FF;">})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #0000FF;">{}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">wait_key</span><span style="color: #0000FF;">()</span>
<!--</syntaxhighlight>-->
{{Out}}
<pre style="font-size: 8px">
Line 1,844 ⟶ 1,851:
<small>Note: This example and [[Number_names#Python]] need to be kept in sync</small>
<
def int_from_words(num):
Line 1,896 ⟶ 1,903:
num = int_from_words(txt)
print('%12i <%s> %s' % (n, '==' if n == num else '??', txt))
print('')</
{{out}}
<pre>##
Line 1,936 ⟶ 1,943:
Finally, the compiled nest is executed with <code>do</code>.
<
[ 2 + ] is two ( --> n )
[ 3 + ] is three ( --> n )
[ 4 + ] is four ( --> n )
[ 5 + ] is five ( --> n )
[ 6 + ] is six ( --> n )
[ 7 + ] is seven ( --> n )
[ 8 + ] is eight ( --> n )
[ 9 + ] is nine ( --> n )
[ 10 + ] is ten ( --> n )
[ 11 + ] is eleven ( --> n )
[ 12 + ] is twelve ( --> n )
[ 13 + ] is thirteen ( --> n )
[ 14 + ] is fourteen ( --> n )
[ 15 + ] is fifteen ( --> n )
[ 16 + ] is sixteen ( --> n )
[ 17 + ] is seventeen ( --> n )
[ 18 + ] is eighteen ( --> n )
[ 19 + ] is nineteen ( --> n )
[ 20 + ] is twenty ( --> n )
[ 30 + ] is thirty ( --> n )
[ 40 + ] is forty ( --> n )
[ 50 + ] is fifty ( --> n )
[ 60 + ] is sixty ( --> n )
[ 70 + ] is seventy ( --> n )
[ 80 + ] is eighty ( --> n )
[ 90 + ] is ninety ( --> n )
[
[ 1000 * ] is thousand ( n --> n )
[ thousand thousand ] is million ( n --> n )
[ thousand million ] is billion ( n --> n )
[ 0 0 ] is {{ ( --> n n )
[ + 0 ] is , ( n n --> n n )
[ $ "{{ " swap
witheach
[ dup char , = if
[ dip space join ]
join ]
$ " }}" join
Line 1,990 ⟶ 1,993:
else
[ nested join ] ]
do ] is name->number ( $ --> n )
$ "one billion, two hundred and thirty four million, five hundred and sixty seven thousand, eight hundred and ninety"
name->number echo</
{{out}}
Line 2,003 ⟶ 2,006:
Extension of the [[Number_names#Racket | number to names]] code:
<
#lang racket
Line 2,068 ⟶ 2,071:
(printf "~s <-> ~a\n" n eng)
(printf "Fail: ~s -> ~a -> ~s\n" n eng n2)))
</syntaxhighlight>
{{out}}
Line 2,087 ⟶ 2,090:
(formerly Perl 6)
{{trans|Perl}}
<syntaxhighlight lang="raku"
One Hundred and One Dalmatians
Two Thousand and One: A Space Odyssey
Line 2,178 ⟶ 2,181:
say $_ ~ ' --> ' ~ .&numify for $phrases-with-numbers.split("\n").grep: *.so;
say $_ ~ ' --> ' ~ .&numify.&comma for $pure-numbers.split("\n").grep: *.so;</
{{out}}
<pre>One Hundred and One Dalmatians --> 101 dalmatians
Line 2,207 ⟶ 2,210:
This solution uses "Number names" from [[Number_names#Ruby | here]]
{{trans|Python}}
<
def int_from_words(num)
Line 2,237 ⟶ 2,240:
end
negmult * (total + small)
end</
Examples:
<
raise unless n == int_from_words(wordify(n))
end
Line 2,263 ⟶ 2,266:
break if n==0
n /= -10
end</
{{out}}
Line 2,298 ⟶ 2,301:
=={{header|Sidef}}==
{{trans|Perl}}
<
static nums = Hash.new(
Line 2,368 ⟶ 2,371:
str.gsub!(/\b(\d{2}) (\d{2})\b/, {|a,b| (a.to_i * 100) + b.to_i});
str.gsub!(regex[10], {|a| a.split(' ').map{.to_i}.sum });
}</
Usage:
<
say "#{line.chomp.dump} --> #{names_to_number(line).dump}";
}</
Sample:
Line 2,393 ⟶ 2,396:
=={{header|Tcl}}==
{{works with|Tcl|8.6}}
<
proc name2num name {
set words [regexp -all -inline {[a-z]+} [string tolower $name]]
Line 2,444 ⟶ 2,447:
}
return [expr {$sign * [tcl::mathop::+ {*}$groups]}]
}</
Demonstrating/testing (based on [[#Perl|Perl]] code's samples):
<
"Seventy-two dollars"
"Seventy two dollars"
Line 2,487 ⟶ 2,490:
foreach s $samples {
puts "$s => [name2num $s]"
}</
{{out}}
<pre>
Line 2,535 ⟶ 2,538:
{{libheader|Wren-fmt}}
Wren's built in Num type can only deal accurately with integers up to 16 digits long (plus or minus 2 ^ 53) so without resorting to BigInt (which would be overkill here) we can only deal with numbers up to nine quadrillion or so.
<
import "./pattern" for Pattern
import "./fmt" for Fmt
var names = {
"one": 1,
Line 2,634 ⟶ 2,637:
"minus nine quadrillion, one hundred thirty-seven"
]
for (name in tests) Fmt.print("$17d = $s", nameToNum.call(name), name)</
{{out}}
Line 2,655 ⟶ 2,658:
=={{header|zkl}}==
<
"nine","ten","eleven","twelve","thirteen","fourteen","fifteen",
"sixteen","seventeen","eighteen","nineteen","twenty",
Line 2,684 ⟶ 2,687:
}
minus*(total + hund)
}</
<
" one hundred and fifty-five thousand and nineteen",
"one thousand, nine hundred and eighty-four","Nineteen Eighty-Four",
Line 2,694 ⟶ 2,697:
"six million, seven hundred and sixty-six thousand and twenty-seven")){
println("\"%s\" is %,d".fmt(s,stringToNumber(s)));
}</
{{out}}
<pre>
|