题解 | #MP3光标位置#
MP3光标位置
https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
def function2(songlist, cur_window, cur_song, commands): commands = list(commands[::-1]) while commands: command = commands.pop() if cur_window[cur_song] == songlist[0] and command == 'U': cur_window = songlist[-4:] cur_song = 3 elif cur_window[cur_song] == songlist[-1] and command == 'D': cur_window = songlist[:4] cur_song = 0 elif cur_song == 0 and cur_window[cur_song] != songlist[0] and command == 'U': cur_window = [x-1 for x in cur_window] cur_song = 0 elif cur_song == 3 and cur_window[cur_song] != songlist[-1] and command == 'D': cur_window = [x+1 for x in cur_window] cur_song = 3 elif cur_song in [1, 2, 3] and command == 'U': cur_song -= 1 elif cur_song in [0, 1, 2] and command == 'D': cur_song += 1 return [cur_window, cur_song] def function1(songlist, cur_window, cur_song, commands): commands = list(commands[::-1]) while commands: command = commands.pop() if cur_song == 0 and command == 'U': cur_song = len(songlist) - 1 elif cur_song == len(songlist) - 1 and command == 'D': cur_song = 0 elif cur_song in range(1, len(songlist)) and command == 'U': cur_song -= 1 elif cur_song in range(0, len(songlist)-1) and command == 'D': cur_song += 1 return [cur_window, cur_song] while True: try: n = int(input()) commands = input() songlist = [i for i in range(1, n+1)] cur_window = songlist[:4] if n >= 4 else songlist cur_song = 0 if len(songlist) < 4: cur_window, cur_song = function1(songlist, cur_window, cur_song, commands) elif len(songlist) >= 4: cur_window, cur_song = function2(songlist, cur_window, cur_song, commands) cur_window_str = '' for i in range(len(cur_window)): if i == 0: cur_window_str = str(cur_window[i]) else: cur_window_str = cur_window_str + ' ' + str(cur_window[i]) print(cur_window_str) print(cur_window[cur_song]) except: break