sk5s 自主學習Time

作業五

說明:

輸入說明

共一行,該行包含 $N$ 個數字 $C_0 \dots C_{N_1}$ ,$1 \leq N \le 20$ ,代表目前序列中的車輛編號,每個編號間一個空白相隔。 保證 $C_0 \dots C_{N-1}$ 由不重複之連續正整數組成,且最小車輛編號必定為 $1$ 。

輸出說明

針對每筆測資,請輸出 successfail,代表當前順序是否可以讓所有人平安離開停車場。

成品及時展示:

主要程式

import requests
ret = requests.get('https://gist.githubusercontent.com/CloudeWu/beafd531151dc9938f3b3c4f16285b1d/raw/a5dd4cd8cb3b168fce275c33fe1ed51c007ad9d1/HW6_%25E6%25B8%25AC%25E8%25B3%2587.txt')
if not ret.ok:
    print('網路好像有點問題,晚點再試試看!')
else:
    testcases = [ [int(char) for char in line.split(' ')] for line in ret.text.split('\n')]

#params
printOutDetail = False
testCase = 2

def printDetail(text):
  global printOutDetail
  if printOutDetail:
    print(text)

testData = testcases[testCase-1].copy()
parking = []
outside = []
state = 2
newItem = 0
lowest = min(testData)
while ((len(parking) != 0 or len(testData) != 0) and state == 2):
  if len(testData) == newItem and len(parking) == 0:
    state = 1

  if len(parking) and parking[-1] == lowest:
    outside.append(parking[-1])
    printDetail(str(parking[-1])+" 號從停車場離開")
    lowest += 1
    parking.pop()
  elif len(testData) > newItem and testData[newItem] == lowest:
    outside.append(testData[newItem])
    printDetail(str(testData[newItem])+" 號直接離開")
    lowest += 1
    newItem += 1
  elif len(testData) > newItem:
    if len(parking) and min(parking) <= testData[newItem]:
      state = 0
    parking.append(testData[newItem])
    printDetail(str(testData[newItem])+" 號進入停車場")
    newItem += 1

if state == 0:
  print("fail")
else:
  print("success")