human.pl: 204 strokes
shuffle.pl: 51 strokes
select.pl: 55 strokes
------------------------
total: 310 strokes
####
human.pl:
print map{$$_[0]}sort{$$b[1]!~/\D/<=>$$a[1]!~/\D/||(grep$_,map{$_>@$b?1:($@=($$a
[$_]!~/\D/&&length$$a[$_]<=>length$$b[$_])||$$a[$_]cmp$$b[$_])?$@:0}1..@$a)[0]}s
ort{@$b<=>@$a}map{[$_,split/(\d+|\n)/,lc]}<>
shuffle.pl:
print map{$n=rand@x;@x[$n,-1]=@x[-1,$n];pop@x}@x=<>
select.pl:
@x=<>;print map{$n=rand@x;@x[$n,-1]=@x[-1,$n];pop@x}0,1
####
human.pl: 189 strokes
shuffle.pl: 33 strokes
select.pl: 37 strokes
------------------------
total: 259 strokes
####
human.pl:
print map{$$_[0]}sort{$$b[1]!~/\D/<=>$$a[1]!~/\D/||(grep$_,map{$,=$$a[$_];$_>@$b
||($,!~/\D/&&length$,<=>length$$b[$_])||$,cmp$$b[$_]}1..@$a)[0]}sort{@$b<=>@$a}
map{[$_,split/(\d+|\n)/,lc]}<>
This passes, but doesn't look right. It does cut 15 strokes, though:
print map{$$_[0]}sort{$$b[1]!~/\D/<=>$$a[1]!~/\D/||(grep$_,map{$,=$$a[$_];$_>@$b
||($,!~/\D/&&length$,<=>length$$b[$_])||$,cmp$$b[$_]}1..@$a)[0]}map{[$_,split/(\
d+|\n)/,lc]}<>
shuffle.pl:
print map{splice@x,rand@x,1}@x=<>
select.pl:
@x=<>;print map{splice@x,rand@x,1}0,1
####
human.pl: 185 strokes
####
human.pl:
print map$$_[0],sort{$$b[1]!~/\D/<=>$$a[1]!~/\D/||(grep$_,map$_>@$b||(($*=$$a[$_
])!~/\D/&&length$*<=>length$$b[$_])||$*cmp$$b[$_],1..@$a)[0]}sort{@$b<=>@$a}map[
$_,split/(\d+|\n)/,lc],<>
####
human.pl: 159 strokes
####
human.pl:
print map$$_[0],sort{(grep$_,map$_>@$b||((!grep/\D/,$*=$$a[$_],$_=$$b[$_])&&leng
th$*<=>length)||$*cmp$_,1..@$a)[0]}sort{@$b<=>@$a}map[$_,split/(\d+|\n)/,lc],<>
####
human.pl: 137 strokes
####
human.pl:
print map$$_[0],sort{(grep$_,map{((!grep/\D/,$*=$$a[$_],$_=$$b[$_])&&length$*<=>
length)||$*cmp$_}1..@$a)[0]}map[$_,split/(\d+|\n)/,lc],<>