10行python代碼實現約瑟夫問題

來源:互聯網
上載者:User

標籤:python   joseph   約瑟夫   

什麼是約瑟夫問題?

約瑟夫問題是一個有趣的數學遊戲,遊戲規則如下:

1、N個人圍成一個圈,編號從1開始,依次到N。

2、編號為M的遊戲參與者開始報數,報數從1開始,後面的人報數接龍,直到K為止,報數為K的人將出局。

3、出局者的下一個玩家接著從1開始報數,如此迴圈,直到剩下一個玩家時遊戲結束,這個玩家就是遊戲獲勝者。

那麼問題來了,哪個編號是遊戲獲勝者呢?

下面通過簡單的幾行python代碼來解決這個問題:

#!/usr/bin/env python# Joseph Problemdef joseph(total, begins, count):queue = range(1, total + 1)death = (begins + count - 2) % len(queue)for times in range(total - 1):print 'out: ', queue[death]del queue[death]death = (death + count -1) % len(queue)print 'survivor: ', queue[0]

joseph()函數中,參數total即上面提到的N,begins即M,count及K,每次迴圈報數out一個編號,最後剩下的survivor便是遊戲獲勝者。



10行python代碼實現約瑟夫問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.