乙個分頁效果ruby版可作為面試題吧

2021-09-06 01:47:01 字數 3863 閱讀 4748

#coding:utf-8

total_pages=11

current_page=10

a=(1..total_pages).to_a

#«首頁 #1

#2 #3

#4 #5

#...

#11

#­尾頁»

#1/共11頁 #

#r=#if current_page-5>0

#  r<<"1"

#  r<<"..."+(current_page-3).to_s

#  r<#  r<#  r<#  if current_page+1<=total_pages

#    r<#  end

#  if current_page+2<==total_pages

#    r<#  end

#else

#  r.concat((1...current_page).to_a)

#end

#r<#if current_page+5<=total_pages

#  r<#  r<#  r<<"..."+(current_page+3).to_s

#else

#  r.concat(((current_page+1)..total_pages).to_a)

#end #

# ##puts r

#r=#r<#if current_page-2>0

#  r.unshift current_page-1

#  #end

#if current_page-5>0 and current_page+2<=total_pages

#  a[1..

#end

#puts a r=

if total_pages<=6

r.concat((1..total_pages).to_a)

else

if current_page-5>0

if current_page+2<=total_pages

a.delete_if

elsif current_page+1<=total_pages

a.delete_if

elsif current_page-1>0

a.delete_if

elsif current_page>0

a.delete_if

endend

endif a.first!=1

a.unshift "..."

a.unshift 1

endif a.last!=total_pages

a<<"..."

aputs a

我也是費了好久,快要penkui了,可以看到注釋的部分我也是很糊,另外也有對ruby的函式不熟悉,(這個是藉口,主要是腦子不好使)

效果參見ecshop的分頁效果,

實現如下效果

«首頁1...

1415

1617

18­尾頁»

17/共18頁

«首頁1...

1415

1617

18­尾頁»

18/共18頁

«首頁 1

2345...

18­尾頁»

1/共18頁

«首頁12345

6...

18­尾頁»

4/共18頁

«首頁1

...4

5 6

78...

18­尾頁»

6/共18頁

«首頁 1

­尾頁»

1/共1頁

之前blog有一篇有python寫的分頁,比這個簡單,可以算是這個的子集

最終的**

#coding:utf-8

total_pages=11

current_page=10

a=(1..total_pages).to_a

#«首頁

#1#2

#3#4

#5#...

#11#­尾頁»

#1/共11頁

# #r=

#if current_page-5>0

#  r<<"1"

#  r<<"..."+(current_page-3).to_s

#  r<#  r<#  r<#  if current_page+1<=total_pages

#    r<#  end

#  if current_page+2<==total_pages

#    r<#  end

#else

#  r.concat((1...current_page).to_a)

#end

#r<#if current_page+5<=total_pages

#  r<#  r<#  r<<"..."+(current_page+3).to_s

#else

#  r.concat(((current_page+1)..total_pages).to_a)

#end

#puts r

#r=#r<#if current_page-2>0

#  r.unshift current_page-1

#end

#if current_page-5>0 and current_page+2<=total_pages

#  a[1..

#end

#puts a

if total_pages>6

if current_page-5>0

if current_page+2<=total_pages

a.delete_if

elsif current_page+1<=total_pages

a.delete_if

elsif current_page-1>0

a.delete_if

elsif current_page>0

a.delete_if

endend

endif a.first!=1

a.unshift "..."

a.unshift 1

endif a.last!=total_pages

a<<"..."

aputs a

puts "----------"

pos=a.index(current_page)

def gen_link(page)

page=page.to_s

#拼接樣式輸出%q}

endr=

a.each_with_index do |elem,index|

page=elem

if elem=="..." and indexpage=a[a.index("...")+1]-1

endif elem=="..." and index>pos

page=a[a.rindex("...")-1]+1

endr#修改當前頁的樣式

r[pos]=%q

}if current_page==1

}r.unshift %q

r.unshift %q{}

else

page=current_page-1

}r.unshift %q

r.unshift %q{}

endif current_page==total_pages

}r<<%q

r<<%q

r<<%q

else

page=current_page+1

}r<< %q

r<<%q

endputs r

puts r.join("")

乙個面試題

題目是 假設乙個 搜尋引擎收錄了2 24首歌曲,並記錄了可收聽這些歌曲的2 30條url,但每首歌的url不超過2 10個。系統會定期檢查這些url,如果乙個url不可用則不出現在搜尋結果中。現在歌曲名和url分別通過整型的song id和url id唯一確定。對該系統有如下需求 1 通過song ...

乙個面試題

在不超過最右邊的數量的情況下任意組合,要求加起來不超過20280這個數字,但達成最接近的情況,現有一種方法為 1290 4 2990 5,差170,有沒有更接近20280的答案 資料如下 4900 13790 22990 5 意思是不能超過5次,但可以使用1次,2次,3次,4次,5次。2390 31...

乙個面試題

res fromkeys name password age print res print res print id res name id res password res name 666 print res 輸出 57496360 57496360 fromkeys 建立字典時,字典中所有的...