Chinaunix

标题: perl snake算法 [打印本页]

作者: simon_stone    时间: 2015-09-17 15:48
标题: perl snake算法
数组@array = ([1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]);
起点为[1,1], ($xmin,$ymin,$xmax,$ymax) = (1,1,3,3);
对该数组进行snake排序,结果为@array1 =  ([1,1],[1,2],[1,3],[2,3],[2,2],[2,1],[3,1],[3,2],[3,3])
请教下,这个排序子过程应该怎么写?

作者: simon_stone    时间: 2015-09-17 16:08
求助,有没有好心人帮忙提供代码,或者给点思路。
作者: ynchnluiti    时间: 2015-09-17 19:13
你这不是已经排好序了吗。
  1. print "[$_->[0], $_->[1]]\n" for
  2.        sort { "$a->[0]$a->[1]" <=> "$b->[0]$b->[1]" } @array;
复制代码

作者: rubyish    时间: 2015-09-18 05:17
shibushi:
  1. #!/usr/bin/perl

  2. my @a = (
  3.     [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 2, 1 ], [ 2, 2 ], [ 2, 3 ],
  4.     [ 3, 1 ], [ 3, 2 ], [ 3, 3 ]
  5. );

  6. sub snake {
  7.     my @sort = (
  8.         sub { sort { $a->[1] <=> $b->[1] } @_ },
  9.         sub { sort { $b->[1] <=> $a->[1] } @_ }
  10.     );
  11.     my %h;
  12.     push @{ $h{ $_->[0] } }, $_ for @_;
  13.     map $sort[ $|-- ]->( @{ $h{$_} } ), sort { $a <=> $b } keys %h;
  14. }

  15. my @s = snake @a;


复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2