約瑟夫生死者小遊戲

2021-09-12 07:36:06 字數 2239 閱讀 7139

"""

30 個人在一條船上,超載,需要 15 人下船。

於是人們排成一隊,排隊的位置即為他們的編號。

報數,從 1 開始,數到 9 的人下船。

如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?

"""people = list(range(30))

while len(people) > 15:

i = 1

while i < 9:

i += 1

print('號下船了'.format(people.pop(0)))

"""

2019/3/10 0:15 自己實現

思路:1.首先思索:若讓你去解決,思路是什麼,具體實現步驟又是什麼?

a.共30人,15人需下船,則需迴圈操作15次,每次從1數到9,便讓一人下船

b.每次操作,過程基本類似:確定起始索引(不包括),往後數9人,數到9的那人索引值標記為-1

控制索引迴圈讀取:每次數數時,首先判斷起始索引,若起始索引為最後乙個元素,數的下一人索引是多少?---->0

被標記需要下船者的處理:起始索引是多少?那往後數乙個人,他的索引應該是index + 1,若值為-1,則略過不統計

2.將步驟讓電腦去模擬實現

python 約瑟夫生者死者小遊戲

30 個人在一條船上,超載,需要 15 人下船。

於是人們排成一隊,排隊的位置即為他們的編號。

報數,從 1 開始,數到 9 的人下船。

如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?

1,2,3,4,5,6,7,8,9(),10,11,12,13,14,15,16,17,18(),19,20,21,22,23,24,25,26,27(),28,29,30

執行結果:

共30人,編號:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]

編號:9 下船了

編號:18 下船了

編號:27 下船了

編號:6 下船了

編號:16 下船了

編號:26 下船了

編號:7 下船了

編號:19 下船了

編號:30 下船了

編號:12 下船了

編號:24 下船了

編號:8 下船了

編號:22 下船了

編號:5 下船了

編號:23 下船了

倖存者編號: [1, 2, 3, 4, 10, 11, 13, 14, 15, 17, 20, 21, 25, 28, 29]

"""index = -1

peples = [i for i in range(1, 31)] # 索引編號[1,30]

print('共30人,編號:%s' % peples)

for i in range(15): # 操作15次,15人下船

count = 0 # 每輪初始化個數0,往後數9個人

while true: # 迴圈次數未知,需數9個人

# 這個判斷必須放在前面,若放在後面,peples[index + 1]可能越界異常

# 若從該位置(不包括)開始數9人,數的第乙個人索引應該是0,故設定索引為-1

if index == len(peples) - 1:

index = -1

# 從該位置數,數的第乙個數索引下標應該是index + 1,若為-1(需下船),則跳過(索引還需累加)

if peples[index + 1] == -1:

index += 1

continue

index += 1

count += 1

if count == 9: # 本輪已經數到9人,停止

break

peples[index] = -1 # 將需要下船的索引值設定為-1(不刪除)

print('編號:%d 下船了' % (index + 1))

peples2 = [item for item in peples if item != -1]

print('倖存者編號:', peples2)

執行結果:

約瑟夫生者死者小遊戲

30 個人在一條船上,超載,需要 15 人下船。於是人們排成一隊,排隊的位置即為他們的編號。報數,從 1 開始,數到 9 的人下船。如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?include int c 0 int i 1 int j 0 int a 30 int b 30 i...

Python 約瑟夫生者死者小遊戲

問題描述 30 個人在一條船上,超載,需要 15 人下船。於是人們排成一隊,排隊的位置即為他們的編號。報數,從 1 開始,數到 9 的人下船。如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?解決思路 給30個人編號1 30,每個人的初值都是1 在船上 i代表他們的編號,j代表被扔下...

C語言 約瑟夫生者死者小遊戲

個人認為這種小的程式設計題是非常考驗思維能力和程式設計能力的,同時還能提公升程式設計能力和體驗程式設計的樂趣!題目 30 個人在一條船上,超載,需要 15 人下船。於是人們排成一隊,排隊的位置即為他們的編號。報數,從 1 開始,數到 9 的人下船。如此迴圈,直到船上僅剩 15 人為止,問都有哪些編號...