tft每日頭條

 > 圖文

 > 最強大腦數學訓練方法

最強大腦數學訓練方法

圖文 更新时间:2024-09-17 23:40:58

文/IT可達鴨

圖/IT可達鴨、網絡

前言

還記得幾年前非常火的一個科學真人秀節目《最強大腦》嗎?它的第一個挑戰項目是魔方牆,魔方牆長什麼樣子?它有哪些規則?

首先,它是一個“找茬遊戲”的升級版,就是從兩幅一樣魔方牆中,找出其中不一樣的色塊所在的位置

為了方便大家更清楚的認識這個遊戲,我們就稱它為“魔方牆找茬”遊戲。(看到這裡的朋友,不要着急哈,認真看下去,最後有彩蛋。)

最強大腦數學訓練方法(讓最強大腦運動起來)1

圖片來自網絡

魔方牆找茬

其實,我們普通人經過訓練,也可以做到從兩面魔方牆中尋找到不一樣的色塊。那麼該怎麼做呢?

  • 第一步:所謂萬丈高樓平地起

我們先從基礎做起,先來個簡單版的“魔方牆找茬”。

最強大腦數學訓練方法(讓最強大腦運動起來)2

初級魔方牆找茬

是不是非常簡單,隻要一眼掃過去,就能發現第三行,第四列的色塊不一樣。

  • 第二步:來個中等難度的魔方牆

最強大腦數學訓練方法(讓最強大腦運動起來)3

中級魔方牆找茬

這個時候,就沒那麼簡單了。那有的朋友就說,隻要我細心,就一定可以看出來。是的,一行一行地掃描下來,細心的朋友會發現,最後一行,第六列的色塊不一樣。

  • 第三步: 那我們就來高級的魔方牆找茬吧

最強大腦數學訓練方法(讓最強大腦運動起來)4

高級魔方牆找茬

這個花時間去看容易看花,那麼我們就應該重新審視這個遊戲,尋找一個可以解決的可靠方法。

不過,在此之前,你可能會問,我想研究“魔方牆找茬”,但是這個“魔方牆找茬”遊戲去哪裡下載呀?

不用擔心,小編剛好會一點點編程,給你寫一個魔方牆找茬的遊戲軟件,來,直接上代碼。

  • 環境配置

python版本: 3.6.0

編輯器: pycharm

項目所需要的環境安裝包

pip install numpy pip install opencv-python

  • 需要注意的點

要先安裝numpy,再安裝opencv-python

  • 第一步:導包和全局變量

# encoding:utf-8 import cv2 import numpy as np import random color_list = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0), (0, 255, 255), (255, 0, 255)

cv2: 是一個強大的圖像處理庫 opencv, 據說人臉識别、視頻處理等操作都可以做到

numpy: 是一個擴展包,支持大量的維度數組與矩陣運算,包含大量數學函數。

color_list: 是魔方牆找茬遊戲的出現的所有色塊,這裡小編隻給了六種顔色,大家可以根據自己的需求,增加新的顔色,顔色越多,難度越大喲。

最強大腦數學訓練方法(讓最強大腦運動起來)5

  • 第二步:生成魔方牆的函數體

def show_mixed(row, col, min_cube_size, windows_name = 'bgr_img'): """ 展示兩個顔色矩陣 :param row: :param col: :param windows_name: :return: """ img = np.ones((min_cube_size*row, min_cube_size*col), dtype=np.uint8) img2 = np.ones((min_cube_size * row, min_cube_size * col), dtype=np.uint8) bgr_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) bgr_img2 = cv2.cvtColor(img2, cv2.COLOR_GRAY2BGR) for i in range(row): tmp_row_start, tmp_row_end = i * min_cube_size, (i 1) * min_cube_size for j in range(col): tmp_col_start, tmp_col_end = j * min_cube_size, (j 1) * min_cube_size tmp_color = random.choice(color_list) # 随機選一個顔色 bgr_img[tmp_row_start:tmp_row_end, tmp_col_start:tmp_col_end] = tmp_color bgr_img2[tmp_row_start:tmp_row_end, tmp_col_start:tmp_col_end] = tmp_color # 随機選一個坐标 x, y = random.randint(0, row-1), random.randint(0, col-1) tmp_row_start, tmp_row_end = x * min_cube_size, (x 1) * min_cube_size tmp_col_start, tmp_col_end = y * min_cube_size, (y 1) * min_cube_size while True: tmp_color = random.choice(color_list) # 随機選一個顔色 if bgr_img2[tmp_row_start 5, tmp_col_start 5][0] == tmp_color[0] and \ bgr_img2[tmp_row_start 5, tmp_col_start 5][1] == tmp_color[1] and \ bgr_img2[tmp_row_start 5, tmp_col_start 5][2] == tmp_color[2]: continue else: bgr_img2[tmp_row_start:tmp_row_end, tmp_col_start:tmp_col_end] = tmp_color break cv2.imshow(windows_name "01", bgr_img ) cv2.imshow(windows_name "02", bgr_img2 ) return x 1, y

利用numpy矩陣切片操作,給每個色塊進行上色。同時利用随機函數,随即選定一個坐标,藏入找茬遊戲的答案。

最強大腦數學訓練方法(讓最強大腦運動起來)6

  • 第三步:主函數

if __name__ == '__main__': grade_dict = {"超簡單":5, "簡單": 15, "中等": 30, "難": 60} # 魔方牆的大小 cube_size_dict = {"超簡單":40, "簡單":25, "中等": 18, "難": 15} # 每個色塊的像素大小 grade_name = '中等' x, y = show_mixed(grade_dict[grade_name], grade_dict[grade_name], cube_size_dict[grade_name], 'bg_01') print( "x=%d, y=%d" % (x, y) ) cv2.waitKey(

在主函數中,自定義難度參數,這裡因為屏幕大小的限制,我把最難的設置為60*60的色塊魔方牆。如果你的屏幕夠大,可以設置成《最強大腦》裡的魔方牆尺寸。

最強大腦數學訓練方法(讓最強大腦運動起來)7

至此,生成魔方牆的軟件就做好了,你可以随時生成多個“魔方牆找茬”的圖,進行訓練。

結語

最後,相信很多朋友會問,有什麼方法可以快速找到答案?其實,很簡單,使用裸眼3D眼。就是小時候大家經常玩的“鬥雞眼”。

使用“3D”眼,把兩幅圖重疊在一起,剛開始的時候,會比較模糊,這個時候需要盯住,圖片慢慢清晰起來。這時候,你會發現“魔方牆”中有一個色塊一直在閃,而這個色塊,就是你要找的答案。


如果有疑問想獲取源碼,可以關注後,在後台私信我,回複:python魔方牆。 我把源碼發你。持續關注"IT可達鴨"每天除了分享有趣Python源碼,還會介紹NLP算法。最後,感謝大家的閱讀,祝大家工作生活愉快!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved