Anything can be done on one line ... if the line is
just long enough. Possibly you are looking for something
like this:
my @x = (4, 4, 2);
my $pref = 'XX';
my @y = map {my $chunk=$_; map{sprintf("$pref%02d:",$chunk).$_}1..$x[$
+chunk-1]}1..@x;
The Sidhekin
print "Just another Perl ${\(trickster and hacker)}," | [reply] [Watch: Dir/Any] [d/l] [select] |
#! /usr/local/bin/perl -w
use strict;
my @x = ( 4, 4, 2 );
my @y;
my $i = -1;
#56 chars with whitespace removed.
@y = map {sprintf("XX%02d:%d",!$_?++$i:$i,$_)} map {0..$_} @x;
foreach (@y)
{
print ">$_\n";
}
I'm afraid I can't offer useful advice on your algorithm at this time. I think I see what you are trying to accomplish and this approach seems reasonable enough to me.
Good luck,
{NULE}
--
http://www.nule.org
P.S. I know this wasn't a golfing question, but I'm just in that kind of mood. I've never tried golfing before so be easy on me. :) | [reply] [Watch: Dir/Any] [d/l] |
| [reply] [Watch: Dir/Any] |
Ok. :-)
Underlying goal is data conversion. I'm processing the output from a (paper) scanning system and trying to convert it into something that's acceptable to our back-end input system. The original paper contains a bunch of mark-sense boxes (think of an SAT or similar test) and just produces a number related to the number of the box.
So, for example, an individual block (bunch of mark sense boxes) will appear in the input data as: "EFD1=1,5,10,".
The (4, 4, 2) refers to the actualy physical layout of those mark-sense boxes. So there are two rows of 4 boxes and one row of 2. In the above case (1,5,10), that means that the first box of the first two rows were marked as well as the second box of the last row.
The 1,5,10 needs to be translated to what they actually "mean", so 1,5,10, needs to turn into (EF01:0, EF02:0, EF03:1). My original idea was to just build an array and index into there (1-1, 5-1, 10-1) and pick out the "right" answer.
The algorithm question that started all this was on better ways to build that array (although, now that you mention it, suggestions on better ways to do this whole thing will also be appreciated :-).
| [reply] [Watch: Dir/Any] [d/l] |