【python】對於程式設計師來說,2018刑偵科推理試卷是問題麼?
最近網上很火的2018刑偵科推理試卷,題目確實很考驗人邏輯思維能力。
可是對於程式設計師來說,這根本不是問題。寫個程式用窮舉法計算一遍即可,太簡單。
import itertools class Solution(object): answer = [] def check3(self): if self.answer[3-1] == 'A': return (self.answer[6-1] == self.answer[2-1] == self.answer[4-1]) and (self.answer[6-1]!= self.answer[3-1])if self.answer[3-1] == 'B': return (self.answer[3-1] == self.answer[2-1] == self.answer[4-1]) and (self.answer[3-1]!= self.answer[6-1]) if self.answer[3-1] == 'C': return (self.answer[6-1] == self.answer[3-1] == self.answer[4-1]) and (self.answer[6-1]!= self.answer[2-1])if self.answer[3-1] == 'D': return (self.answer[6-1] == self.answer[2-1] == self.answer[3-1]) and (self.answer[6-1]!= self.answer[4-1]) def check4(self): if self.answer[4-1] == 'A': return (self.answer[1-1] == self.answer[5-1]) if self.answer[4-1] == 'B':return (self.answer[2-1] == self.answer[7-1]) if self.answer[4-1] == 'C': return (self.answer[1-1] == self.answer[9-1]) if self.answer[4-1] == 'D': return (self.answer[6-1] == self.answer[10-1]) def check5(self): if self.answer[5-1] == 'A': return (self.answer[8-1] == self.answer[5-1]) if self.answer[5-1] == 'B': return (self.answer[4-1] == self.answer[5-1]) if self.answer[5-1] == 'C': return (self.answer[9-1] == self.answer[5-1]) if self.answer[5-1] == 'D': return (self.answer[7-1] == self.answer[5-1]) def check6(self): if self.answer[6-1] == 'A': return (self.answer[2-1] == self.answer[4-1] == self.answer[8-1]) if self.answer[6-1] == 'B': return (self.answer[1-1] == self.answer[6-1] == self.answer[8-1]) if self.answer[6-1] == 'C': return (self.answer[3-1] == self.answer[10-1] == self.answer[8-1]) if self.answer[6-1] == 'D': return (self.answer[5-1] == self.answer[9-1] == self.answer[8-1]) def check7(self): aCount = self.answer.count('A') bCount = self.answer.count('B') cCount = self.answer.count('C') dCount = self.answer.count('D') if self.answer[7 - 1] == 'A': return cCount < aCount and cCount < bCount and cCount < dCount if self.answer[7 - 1] == 'B': return bCount < aCount and bCount < cCount and bCount < dCount if self.answer[7 - 1] == 'C': return aCount < bCount and aCount < cCount and aCount < dCount if self.answer[7 - 1] == 'D': return dCount < aCount and dCount < bCount and dCount < cCount def check8(self): if self.answer[8-1] == 'A': return abs(ord(self.answer[7-1]) - ord(self.answer[1-1])) > 1 if self.answer[8-1] == 'B': return abs(ord(self.answer[5-1]) - ord(self.answer[1-1])) > 1 if self.answer[8-1] == 'C': return abs(ord(self.answer[2-1]) - ord(self.answer[1-1])) > 1 if self.answer[8-1] == 'D': return abs(ord(self.answer[10-1]) - ord(self.answer[1-1])) > 1 def check9(self): con1 = (self.answer[1-1] == self.answer[6-1]) con2 = False if self.answer[9 - 1] == 'A': con2 = (self.answer[6-1] == self.answer[5-1]) if self.answer[9 - 1] == 'B': con2 = (self.answer[10-1] == self.answer[5-1]) if self.answer[9 - 1] == 'C': con2 = (self.answer[2-1] == self.answer[5-1]) if self.answer[9 - 1] == 'D': con2 = (self.answer[9-1] == self.answer[5-1]) return con1 != con2 def check10(self): aCount = self.answer.count('A') bCount = self.answer.count('B') cCount = self.answer.count('C') dCount = self.answer.count('D') maxV = aCount minV = aCount for i in [aCount,bCount,cCount,dCount]: if maxV < i: maxV = i if minV > i: minV = i if self.answer[10 - 1] == 'A': return (maxV - minV) == 3 if self.answer[10 - 1] == 'B': return (maxV - minV) == 2 if self.answer[10 - 1] == 'C': return (maxV - minV) == 4 if self.answer[10 - 1] == 'D': return (maxV - minV) == 1 def check(self): ret = True ret = self.check3() if ret == False: return False ret = self.check4() if ret == False: return False ret = self.check5() if ret == False: return False ret = self.check6() if ret == False: return False ret = self.check7() if ret == False: return False ret = self.check8() if ret == False: return False ret = self.check9() if ret == False: return False ret = self.check10() if ret == False: return False return ret def calc(self): option = ['A','B','C','D'] for x in itertools.product(*[option] * 10): self.answer = list(''.join(x)) if self.check() == True: print self.answer s = Solution() s.calc()
最終輸出答案是: ['B', 'C', 'A', 'C', 'A', 'C', 'D', 'A', 'B', 'A']
相關推薦
【python】對於程式設計師來說,2018刑偵科推理試卷是問題麼?
最近網上很火的2018刑偵科推理試卷,題目確實很考驗人邏輯思維能力。 可是對於程式設計師來說,這根本不是問題。寫個程式用窮舉法計算一遍即可,太簡單。 import itertools class Solution(object): answer = [] def check3(self):
【重磅福利來襲】1024程式設計師節,我們讓你【零成本】成為一名合格優秀的程式設計師
首先小編在這裡祝所有的程式設計師節日快樂!
對於程式設計師來說,技術經理與架構師哪個更有發展前途?
在程式設計這個行業,有很多爭議的話題,比如大公司還是小公司更適合程式設計師發展,哪種開發語言好,做專才程式設計師還是通才程式設計師好等等,這些話題都比較有爭議性,因為沒有標準答案,需要看具體情況,也需要結合程式設計師自身的情況,但是有一個話題是沒有爭議的,年齡大的程式設計師就會比較少,比如說
【python】重新命名移動圖片,rename file 不管是什麼格式的檔案
''' copy and rename file No matter what format it is. ''' import os import shutil root_path = "/medi
【收藏】關於程式設計師的搞笑但卻真實無比的程式設計語錄
收集了很多程式設計語錄,基本上都跟程式設計師的生活有關。這些語錄涉及軟體開發,程式碼維護,除錯糾錯,軟體bug,系統設計、文件,程式碼質量,測試和軟體開發團隊管理等方面。下面的這59條語錄雖然很搞笑,但卻真實無比。只有程式設計師才能理解這些程式設計語句裡的真正內涵。閒言少敘,開始吧… 程
【python】啟動一個http服務,用於獲取檔案中的資訊
使用場景:想要在瀏覽器下檢視某個機器下的目錄檔案;想使用wget臨時的下載某個機器下的檔案。 首先在目標機器下使用python啟動一個http服務: python -m SimpleHTTPServer ---------這樣會啟動一個埠為預設埠8000的HTTP
【面試】每個程式設計師都會遇到的面試問題:談談程序和執行緒的區別
當你剛入職場時,無論你是用C++還是Java甚至只是應聘運維崗位,相信你都會遇到這個問題。 這是一個很基礎的問題,但又是一個很考驗人水平的問題。 說基礎是因為每個學計算機的人都應該懂,程序執行緒是計算機的基礎概念,是每個程式設計師時時刻刻都要接觸的東西。 但這又是一個充
【Python】二、debuglib.py,除錯利器
0 序 如果下述問題也困擾著你,又或仍在使用“新手做法”, 那麼本文值得一讀。 常見問題 新手做法 debuglib分享方法 標準處理方法 程式計時,速度效能分析 t0 = time.clock()…print(‘xxx用時%.2f\n’ % (
【LanceToBigData】記錄程式設計師的進化之路
專欄達人 授予成功建立個人部落格專欄
【fearlazy】一個程式設計師的自我修煉
專欄達人 授予成功建立個人部落格專欄
【連載】優秀程式設計師的 45 個習慣之習慣35
對問題各個擊破 —— 高效程式設計師的 45 個習慣之習慣35 “逐行檢查程式碼庫中的程式碼確實很令人恐懼。但是要除錯一個明顯的錯誤,只有去檢視整個系統的程式碼,而且要全部過一遍。畢竟你不知道問題可能發生在什麼地方,這樣做是找到它的唯一方式。”
【連載】優秀程式設計師的45個習慣之45——及時通報進展與問題
好訊息: 本書今天互動網有貨,噹噹網、卓越網也會陸續有貨。 及時通報進展與問題 —— 高效程式設計師的 45 個習慣之習慣45 “管理層、專案團隊以及業務所有方,都仰仗你來完成任務。如果他們想知道進展狀況,會主動找你要的。還是埋頭繼續做事吧。” 接受一個任務,
【Spring】每個程式設計師都使用Spring(四)——Aop+自定義註解做日誌攔截
一、前言 上一篇部落格向大家介紹了Aop的概念,對切面=切點+通知 、連線點、織入、目標物件、代理(jdk動態代理和CGLIB代理)有所瞭解了。理論很強,實用就在這篇部落格介紹。 這篇部落格中,小編向大家介紹springAop很常見的
【連載】優秀程式設計師的45個習慣之42——允許大家自己想辦法
允許大家自己想辦法 —— 高效程式設計師的 45 個習慣之習慣42 “你這麼聰明,直接把乾淨利落的解決方案告訴團隊其他人就好了。不用浪費時間告訴他們為什麼這樣做。” “授人以魚,三餐之需;授人以漁,終生之用。”告訴團隊成員解決問題的方法,也要讓他們知道如何解決問題的思路,這也是成
【 專欄 】- 一個程式設計師的進化史
一個程式設計師的進化史 受《那些年啊,那些事---一個程式設計師的奮鬥史》專欄的影響很深,決定記錄自己作為程式設計師一路上的學習歷程以及感悟,但和那個專欄並不同,我這個不是小說,就打算寫自己的一些實際的心得體會,學習方法等,望批准
對於程式設計師而言,工作之餘,如何再賺一份收入?
有感而發寫這篇文章我是有感而發。因為做了5,6年的程式設計師,再奔三的年齡,經濟方面一直羈絆了我的發展。我想著底層的大部分程式設計師都應該屬於這樣的情況,特別是再北,上,廣,深,杭,上班的,家裡條件不好的,要靠自己個人的努力養家的,這些隨著人生的發展,都是不可避免會發生的。因
【面試】JAVA程式設計師麵霸之初級知識
該系列文章也是來自於一篇CSDN的gitchat,將其中的答案補全,本篇是最簡單的初級知識。 1,面向物件和麵向過程的區別和聯絡。 網上有個蓋澆飯和蛋炒飯的例子比較好。 面向過程是蛋炒飯,混在一起,一個一個炒。 面向物件是蓋澆飯,飯和菜分開,想要換掉
【轉】Delphi程式設計師如何找到高薪的工作?
我想現在沒有什麼比做一個軟體工程師更能賺錢的了,當然了,明星除外。在美國,一個優秀的軟體工程師,就算在一個平凡的崗位上,也能得到年薪50萬(美元)以上的待遇。這絕對不是開玩笑,在北美曾有統計表明,一年內發放給軟體工程師的工資以及各種福利,佔去了全美淨收入的2.4%,這是一個
【轉】優秀程式設計師不得不知道的20個位運算技巧
———————————————————————————————————————————— 一提起位運算,人們往往想到它的高效性,無論是嵌入式程式設計還是優化系統的核心程式碼,適當的運用位運算總是一種迷人的手段,或者當您求職的時候,在程式碼中寫入適當的位運算
【轉】JAVA程式設計師必看的15本書-JAVA自學書籍推薦
作為Java程式設計師來說,最痛苦的事情莫過於可以選擇的範圍太廣,可以讀的書太多,往往容易無所適從。我想就我自己讀過的技術書籍中挑選出來一些,按照學習的先後順序,推薦給大家,特別是那些想不斷提高自己技術水平的Java程式設計師們。此外,大家可以加入457036818交流群,互