1. 程式人生 > >【Java】2018年刑偵科推理試卷

【Java】2018年刑偵科推理試卷

今早同事發的圖片,2018刑偵科推理試卷。
這裡寫圖片描述
下午沒什麼事,就用Java寫了一下,大概的思路是列舉法,然後列出條件,輸出滿足條件的情況就可以了。參考的是這位大神寫的python的,唉,本人能力有限,所以可能程式碼會比較冗餘。但是也想鍛鍊一下,於是乎,寫了一套Java的。有什麼地方可以簡化程式碼啥的,歡迎指正哈!
https://www.cnblogs.com/seyjs/p/8491767.html

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public
class calculate { /** * 拆分驗證 * @param list 選項集合 * @return */ public static boolean check(List<String> list){ if(!check3(list)){ return false; } if(!check4(list)){ return false; } if(!check5(list)){ return
false; } if(!check6(list)){ return false; } if(!check7(list)){ return false; } if(!check8(list)){ return false; } if(!check9(list)){ return false; } if(!check10(list)){ return
false; } return true; } public static boolean check3(List<String> list){ String str = list.get(2); if(str.equals("A")){//24,26,46 //13,15,35 return (list.get(1).equals(list.get(3))&&list.get(1).equals(list.get(5))&&list.get(3).equals(list.get(5))); } if(str.equals("B")){//23,24,34 //12,13,23 return (list.get(1).equals(list.get(2))&&list.get(1).equals(list.get(3))&&list.get(2).equals(list.get(3))); } if(str.equals("C")){//34,36,46 //23,25,35 return (list.get(2).equals(list.get(3))&&list.get(2).equals(list.get(5))&&list.get(3).equals(list.get(5))); } if(str.equals("D")){//23,26,36 //12,15,25 return (list.get(1).equals(list.get(2))&&list.get(1).equals(list.get(5))&&list.get(2).equals(list.get(5))); } return false; } private static boolean check4(List<String> list) { String str = list.get(3); if(str.equals("A")){ return list.get(0).equals(list.get(4)); } if(str.equals("B")){ return list.get(1).equals(list.get(6)); } if(str.equals("C")){ return list.get(0).equals(list.get(8)); } if(str.equals("D")){ return list.get(5).equals(list.get(9)); } return false; } private static boolean check5(List<String> list) { String str = list.get(4); if(str.equals("A")){ return list.get(4).equals(list.get(7)); } if(str.equals("B")){ return list.get(4).equals(list.get(3)); } if(str.equals("C")){ return list.get(4).equals(list.get(8)); } if(str.equals("D")){ return list.get(4).equals(list.get(6)); } return false; } private static boolean check6(List<String> list) { String str = list.get(5); if(str.equals("A")){//82,84,24 return (list.get(7).equals(list.get(1))&&list.get(7).equals(list.get(3))&&list.get(2).equals(list.get(3))); } if(str.equals("B")){//81,86,16 return (list.get(7).equals(list.get(0))&&list.get(7).equals(list.get(5))&&list.get(0).equals(list.get(5))); } if(str.equals("C")){//83,810,310 return (list.get(7).equals(list.get(2))&&list.get(7).equals(list.get(9))&&list.get(2).equals(list.get(9))); } if(str.equals("D")){//85,89,59 return (list.get(7).equals(list.get(4))&&list.get(7).equals(list.get(8))&&list.get(4).equals(list.get(8))); } return false; } private static boolean check7(List<String> list) { String str = list.get(6); int countA = Collections.frequency(list, "A"); int countB = Collections.frequency(list, "B"); int countC = Collections.frequency(list, "C"); int countD = Collections.frequency(list, "D"); List<Integer> l = new ArrayList<Integer>(); l.add(countA); l.add(countB); l.add(countC); l.add(countD); int a = Collections.min(l); if(str.equals("A")){ return a==countC; } if(str.equals("B")){ return a==countB; } if(str.equals("C")){ return a==countA; } if(str.equals("D")){ return a==countD; } return false; } private static boolean check8(List<String> list) { String[] numArray = new String[]{"A","B","C","D"}; List<String> l = Arrays.asList(numArray); String str = list.get(7); String str1 = list.get(0); if(str.equals("A")){ String s = list.get(6); return (Math.abs(l.indexOf(str1)-l.indexOf(s))<0)||(Math.abs(l.indexOf(str1)-l.indexOf(s))>1); } if(str.equals("B")){ String s = list.get(4); return (Math.abs(l.indexOf(str1)-l.indexOf(s))<0)||(Math.abs(l.indexOf(str1)-l.indexOf(s))>1); } if(str.equals("C")){ String s = list.get(1); return (Math.abs(l.indexOf(str1)-l.indexOf(s))<0)||(Math.abs(l.indexOf(str1)-l.indexOf(s))>1); } if(str.equals("D")){ String s = list.get(9); return (Math.abs(l.indexOf(str1)-l.indexOf(s))<0)||(Math.abs(l.indexOf(str1)-l.indexOf(s))>1); } return false; } private static boolean check9(List<String> list) { String str = list.get(8); boolean s = list.get(0).equals(list.get(5)); if(str.equals("A")){ return !s==list.get(5).equals(list.get(4)); } if(str.equals("B")){ return !s==list.get(9).equals(list.get(4)); } if(str.equals("C")){ return !s==list.get(1).equals(list.get(4)); } if(str.equals("D")){ return !s==list.get(8).equals(list.get(4)); } return false; } private static boolean check10(List<String> list) { String str = list.get(9); int countA = Collections.frequency(list, "A"); int countB = Collections.frequency(list, "B"); int countC = Collections.frequency(list, "C"); int countD = Collections.frequency(list, "D"); List<Integer> l = new ArrayList<Integer>(); l.add(countA); l.add(countB); l.add(countC); l.add(countD); int a = Collections.min(l); int b = Collections.max(l); if(str.equals("A")){ return b-a==3; } if(str.equals("B")){ return b-a==2; } if(str.equals("C")){ return b-a==4; } if(str.equals("D")){ return b-a==1; } return false; } public static void main(String[] args) { //可選選項 String[] numArray = new String[]{"A","B","C","D"}; //窮舉每一次產生的一條選項結果 String[] initArray = new String[]{"A","A","A","A","A","A","A","A","A","A"}; List<String> selectList = Arrays.asList(initArray); for(String a : numArray){ selectList.set(0,a); for(String b : numArray){ selectList.set(1,b); for(String c : numArray){ selectList.set(2,c); for(String d : numArray){ selectList.set(3,d); for(String e : numArray){ selectList.set(4,e); for(String f : numArray){ selectList.set(5,f); for(String g : numArray){ selectList.set(6,g); for(String h : numArray){ selectList.set(7,h); for(String i : numArray){ selectList.set(8,i); for(String j : numArray){ selectList.set(9,j); boolean result = check(selectList); if(result==true){ System.out.println("結果為:"+selectList.toString()); } } } } } } } } } } } System.out.println("over"); } }

輸出結果為:
結果為:[B, C, A, C, A, C, D, A, B, A]
over

相關推薦

Java2018刑偵推理試卷

今早同事發的圖片,2018刑偵科推理試卷。 下午沒什麼事,就用Java寫了一下,大概的思路是列舉法,然後列出條件,輸出滿足條件的情況就可以了。參考的是這位大神寫的python的,唉,本人能力有限,所以可能程式碼會比較冗餘。但是也想鍛鍊一下,於是乎,寫了一套

2018刑偵推理試題 python實現

HR lag OS python 真的 bit continue image flag 這題越推越覺得應該用程序寫,所以就用python寫了一個,為什麽用python,因為真的很方便。 先看看理論上是否可行,10道題,每題4個選項,也就是4的10次冪,2的20次冪,也

2018刑偵推理試題(C++)

def oid set 算法 mtime abs signed lock c++11 上學期看到2018年刑偵科推理試題,直覺告訴我可以嵌套N層for循環來解答,但後面還是用組合算法窮舉出所有組合算到答案,嵌套太深不好搞啊。 從 0b00000000000000000000

離散數學:2018刑偵推理試題

答案是:BCACACDABA 先來看看網上大神的做法: 下邊是自己的解題過程,每一步的註釋已經寫得很詳細,思路相對很清晰都能看懂,所以不再贅述,這裡教學平臺只能提交C所以需要java的自己稍作修改吧沒什麼區別 #include<std

python對於程式設計師來說,2018刑偵推理試卷是問題麼?

最近網上很火的2018刑偵科推理試卷,題目確實很考驗人邏輯思維能力。 可是對於程式設計師來說,這根本不是問題。寫個程式用窮舉法計算一遍即可,太簡單。 import itertools class Solution(object): answer = [] def check3(self):

2018刑偵推理試卷 Java寫法

package com.test.problem;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.HashMap;import ja

20180312201803月12日(隨想)

post 而是 有一個 然而 clas OS you pos 一個 今天有一個熱點事件,在幾個群裏都有提及。 我以為是假的。沒想到是真的。果然還是太young了。 總結: 有的事,你認為是假的,它是真的。比如今天的焦點事件。 有的事,你認為一定是假的,偏偏是真

翻譯2018,20大Python資料科學庫都做了哪些更新?

Python今年依舊保持著資料科學領域的領先地位。去年,我們在部落格上列出了15個頂級Python資料科學庫的榜單,當時大家都覺得非常好。這次,介紹一下這些頂級資料科學Python庫今年有哪些更新,同時,我們還為這個榜單添加了一些新庫。 實際上,這次的榜單不止20個庫,主要

收藏2018不容錯過的20大人工智慧/機器學習/計算機視覺等頂會時間表

點選有驚喜 目錄 人工智慧/機器學習計算機視覺/模式識別自然語言處理/計算語言學體系結構資料探勘/資訊檢索計算機圖形學 人工智慧/機器學習 1. AAAI 2018 會議時間:2月2日~7日 會議地點: 新奧爾良市,美國 AAAI是人工智慧領域的主要學術

自考-201810月自考總結

自考總結:         這次考試就報考了一科C ++程式設計,自學考試也就接近尾聲了。加上之前考的學位英語和實踐課,畢業設計。自考也就結束了。         總結一下學習C ++的著重點吧。

雜感2018的秋天回顧

前言 好久沒寫部落格,我一直都覺得寫部落格說明最近很在學習狀態阿。也說明確實很久都沒在狀態了。 終於穿上了秋褲,冬天和暖氣都小跑著趕來了,我的大學時光也所剩無多,我在這裡隨便記下兩三言,願之後依然能想起此刻的心情。 秋招 8月中從深圳回到學校,一邊等轉正的結果,一邊投了幾家別

面試題2018最全Java面試通關秘籍第五套!

XA 中文分詞 coo div rop 為什麽 3.2 自旋 FQ 【面試題】2018年最全Java面試通關秘籍第五套! 原創 2018-04-26 徐劉根 Java後端技術 第一套:《2018年最全Java面試通關秘籍第一套!》 第二套:《2018年最全Java面試通

備忘2018 java入門進階主流框架學習到架構與電商專案實戰

0001-多執行緒快速入門.zip 0002-多執行緒執行緒安全.zip 0003-多執行緒之間通訊.zip 0004-java併發包與併發佇列.zip 0005-執行緒池原理剖析與鎖的深度化.zip 0006-資料交換格式與反射機制與SpringIOC原理分析.zip 00

備忘2018最新Java微服務原理課程與改造房產銷售平臺視訊教程

第1章 課程介紹(一線網際網路架構師親授第2章  單體架構之專案概要設計&資料表設計第3章 單體架構之SpringBoot工程框架搭建與技巧第4章 單體架構之使用者註冊及個人頁面功能開發第5章 單體架構之房產和推薦功能開發(分頁元件、Ajax、Redis)第6章 單

老男孩教育2018最新版大數據開發課程表

企業 style linu zookeepe family pan storm 大數據分析 zook 老男孩教育大數據開發課程適合所有對大數據開發有興趣的人員,從JavaSE 到大數據生態圈高端課程的開發。課程內容量很大,有一定的難度和深度,認真學習,,技術會有很大程度的提

異周話題 第 16 期2018,你最期待的前端開發技術有哪些?

pes 社區 發展 col roc ava 前端技術 試用 帶來 【異周話題 第 16 期】2018年,你最期待的前端開發技術有哪些?話題背景2017年已經過去,2018年如約而至。2017年在前端領域裏,react已經逐漸占據主流,Angular 發布了 v4 以及 v5

程序員劄記#學習&&塑形# 20185月21號

width title gray 繼續 ali 粉絲 tro margin post 2018年警醒   對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 現在要做的事情:“戒酒&

程序員劄記#學習&&塑形# 20185月24號

round href hang border ttext HR -- chang 規劃 2018年警醒   對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 感悟   今天想到了

程序員劄記#學習&&塑形# 201806月11號-15號

back IT www. property prop ima 深度 OS 落地 2018年警醒    對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 Todo List 目