1. 程式人生 > >瘋狂遊戲2019暑期實習生在線筆試(原創)

瘋狂遊戲2019暑期實習生在線筆試(原創)

star 面積 NPU 遊戲 正方 start 變化 pri state

第一題:

題目描述:
輸入一個大於1的整數n
對1到n的所有數字進行編碼:
①其中遇到3的倍數輸出 Fizz
②其中遇到5的倍數輸出 Buzz
③其中遇到3和5的倍數輸出 FizzBuzz

輸入樣例1:5
輸出樣例1:
1
2
Fizz
4
Buzz

輸入樣例2:100
輸出樣例2:
技術分享圖片
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz
91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
View Code

處理程序:

 1 # *** 數據輸入 *** #
 2 n = int(input())
 3 # *** 數據處理 *** #
 4 for i in range(1, n+1):
 5     if i%3 == 0 and i%5 == 0:
 6         print(FizzBuzz)
 7     elif i%3 == 0:
 8         print(Fizz)
 9     elif i%5 == 0:
10         print
(Buzz) 11 else: 12 print(i)

第二題:

題目描述:
輸入一段字符串,對字符串中的元素進行加密處理,
①a-y所有的字母向後移動一位,例如c-d,f-g
②加密後的字母如果是元音字母(a,e,i,o,u),則轉變成大寫字母(A.E.I.O.U)
③如果遇到字母z,則移動到a
④遇到其他所有字符則不做變化
上面4個條件全部滿足
輸出加密優化後的字符串

輸入樣例1:
funz times*3!
輸出樣例1:
gvOA Ujnft*3!

處理程序:
 1 # *** 輔助函數 *** #
 2 # ord(‘z‘) == 122   chr(122+1) == ‘{‘
 3 VOW_NAMESPACE = {e: E, i: I, o: O, u: U, {: A}
 4 
 5 
 6 # *** 數據輸入 *** #
 7 str_line = input()
 8 
 9 # *** 數據處理 *** #
10 str_out = ‘‘
11 
12 for i in str_line:
13     if 97 <= ord(i) <= 122:                     # ①所有的小寫字母向後移動一位ASCII碼
14         str_mid = chr(ord(i) + 1)
15         if str_mid in VOW_NAMESPACE.keys():     # ②如果屬於需要優化成元音大寫的字符進行調整
16             str_mid = VOW_NAMESPACE[str_mid]
17         str_out += str_mid
18     else:                                       # ③其他非小寫字符直接接入字符串中
19         str_out += i
20 
21 print(str_out)

第三題:

有一個只含有0,1的長方形表格(正方形也是特殊的長方形)
其中各個格子中有0、有1
找出其中最大的一個正方形,其中的所有格子全部都為1
輸出這個正方形的面積(一個格子代表1個單位的面積)

輸入樣例1:0111,1111,1111,1111
輸出樣例1:9

輸入樣例2:10100,10111,11111,10010
輸出樣例2:4

輸入樣例3:11111,11111,11111,11111,11111
輸出樣例3:25

處理程序:
 1 # *** 輔助函數 *** #
 2 def graph_split(graph, y_line, x_line):  # 對原始的矩形進行切分,x_line 開頭index&結尾index都包含在內
 3     [y_start, y_end] = y_line
 4     [x_start, x_end] = x_line
 5     graph_mid = graph[y_start:y_end + 1]
 6     return [gra[x_start: x_end + 1] for gra in graph_mid]
 7 
 8 
 9 def sum_graph(graph):  # 計算圖譜的有效面積,統計1的個數
10     sum_now = 0
11     for i in graph:
12         sum_now += sum(i)
13     return sum_now
14 
15 # *** 數據輸入 *** #
16 str_line = input().split(,)
17 graph = []
18 for i in range(len(str_line)):
19     d0_mid = []
20     for j in range(len(str_line[i])):
21         d0_mid.append(int(str_line[i][j]))
22     graph.append(d0_mid)
23 # print(graph)
24 
25 # *** 數據處理 *** #
26 X, Y = len(graph[0]), len(graph)
27 length = min(X, Y)
28 state = 1
29 
30 for i in range(length,0,-1):            # 邊長由大到小變化
31     if state == 0:
32         break
33     for j in range(0, X - i + 1):       # 從左往右
34         if state == 0:
35             break
36         for k in range(0, Y - i + 1):   # 從上往下
37             y_line = [k, k+i-1]
38             x_line = [j, j+i-1]
39             graph_mid = graph_split(graph, y_line, x_line)
40             sum_out = sum_graph(graph_mid)
41 
42             if int(i*i) == int(sum_out):    # 必須要手動跳出,要不然沒辦法從while中跳出
43                 print(sum_out)
44                 state = 0
45                 break

瘋狂遊戲2019暑期實習生在線筆試(原創)