Price fraction: Difference between revisions
Content added Content deleted
(→{{header|Perl 6}}: take a more readable brute force approach, for some definition of brute) |
(→{{header|Perl 6}}: Added ternary/conditional-based solution) |
||
Line 830: | Line 830: | ||
while prompt("value: ") -> $value { |
while prompt("value: ") -> $value { |
||
say @price[ $value * 100 ] // note "Out of range"; |
say @price[ $value * 100 ] // note "Out of range"; |
||
}</lang> |
|||
Yet another approach is to use the conditional operator to encode the table. |
|||
This allows each endpoint to be written once, avoiding duplication. |
|||
<lang perl6>sub price_fraction ( Num $n where { $^n >= 0 and $^n <= 1 } ) { |
|||
( $n < 0.06 ) ?? 0.10 |
|||
!! ( $n < 0.11 ) ?? 0.18 |
|||
!! ( $n < 0.16 ) ?? 0.26 |
|||
!! ( $n < 0.21 ) ?? 0.32 |
|||
!! ( $n < 0.26 ) ?? 0.38 |
|||
!! ( $n < 0.31 ) ?? 0.44 |
|||
!! ( $n < 0.36 ) ?? 0.50 |
|||
!! ( $n < 0.41 ) ?? 0.54 |
|||
!! ( $n < 0.46 ) ?? 0.58 |
|||
!! ( $n < 0.51 ) ?? 0.62 |
|||
!! ( $n < 0.56 ) ?? 0.66 |
|||
!! ( $n < 0.61 ) ?? 0.70 |
|||
!! ( $n < 0.66 ) ?? 0.74 |
|||
!! ( $n < 0.71 ) ?? 0.78 |
|||
!! ( $n < 0.76 ) ?? 0.82 |
|||
!! ( $n < 0.81 ) ?? 0.86 |
|||
!! ( $n < 0.86 ) ?? 0.90 |
|||
!! ( $n < 0.91 ) ?? 0.94 |
|||
!! ( $n < 0.96 ) ?? 0.98 |
|||
!! 1.00 |
|||
; |
|||
} |
|||
while prompt("value: ") -> $value { |
|||
last if $value ~~ /exit|quit/; |
|||
say price_fraction(+$value); |
|||
}</lang> |
}</lang> |
||