Whilst my answer is longer, I think you will find it simulates a 7 segment display a little closer, and it has a larger, more readable font.
This one weighs in at 299 characters, excluding line breaks.
sub f{ $i=$_[0];$i=~s/(\d)\./$1|'@'/eg;@c=split//,"\brew\$]m.k{%\177o"; for$a(0..8){for$l(split//,$i){$x=ord$c[ord($l&"?")-45];print do{ if($a%4){$q=($x>>($a>4)*3)&6;($q&2?"|":" ")." ".($q&4?"|":" ") ." ";}else{($x>>($a>>2)*3&1?" ----- ":" "x7). ($a==8&&(($l&"@")eq"@")?" X ":" ");}}}print"\n";}} f(-123.04); f(56789);
And the output is:
----- -----
| | | | |
| | | | |
| | | | |
----- ----- ----- -----
| | | |
| | | |
| | | |
----- ----- X
----- ----- ----- ----- ----- -----
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
----- ----- ----- -----
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
----- ----- ----- ----- -----
Not bad for a first golf attempt? :-)
In reply to Ah, but what about correct display of the decimal point?
by mugwumpjism
in thread (Golf) LED Sign
by tadman
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |