-3

リストのリストの下部に表示するページのリンクをどのように決定するかを理解しようとしています。90 ページの結果があるとします。常に 1 ページと 90 ページへのリンクを設定し、可能であれば現在のページの左右に 3 ~ 4 ページのリンクを設定したいと考えています。

[] - 現在のページを示します

ページ 1: [1] 2 3 4 5 6 7 8 9 ... 90

ページ 2: 1 [2] 3 4 5 6 7 8 9 ... 90

20ページ: 1 ... 17 18 19 [20] 21 22 23 ... 90

ロジックが分からなくて困っています。したがって、次の入力を与えます: total_number of pages と現在のページ、表示するページのリストを生成します。私は perl を使用していますが、別の言語の例でも問題ありません。

4

1 に答える 1

0

このようなものがあなたに合うはずです。

use strict;
use warnings;

use feature 'say';

use constant MARGIN => 3;

say join ', ', page_numbers(2, 90);
say join ', ', page_numbers(30, 90);
say join ', ', page_numbers(88, 90);

sub page_numbers {

  my ($this, $total) = @_;

  my $min = $this <= MARGIN + 1 ? 2 : $this - MARGIN;
  my $max = $this >= $total - (MARGIN + 1) ? $total - 1 : $this + MARGIN;

  return 1, $min..$max, $total;
}

出力

1, 2, 3, 4, 5, 90
1, 27, 28, 29, 30, 31, 32, 33, 90
1, 85, 86, 87, 88, 89, 90
于 2012-12-06T04:49:14.597 に答える