国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

蘭頓螞蟻:從無序到有序的偉大征程

這篇具有很好參考價值的文章主要介紹了蘭頓螞蟻:從無序到有序的偉大征程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1. 問題

在一個1000*1000格子的棋盤上,有一只螞蟻(ant),螞蟻的爬行規(guī)則是:(1)如果螞蟻所在的棋盤是白色的,則螞蟻將所在格子設(shè)置為黑色,并向右邊爬行一個格子。(2)如果螞蟻所在的棋盤是黑色的,則螞蟻將所在格子設(shè)置為白色,并向左邊爬行一個格子。問:請顯示螞蟻爬行10000次后,棋盤的樣子。

2. 思考

首先,我們需要創(chuàng)建一個棋盤類(Board)和一個螞蟻類(Ant)。棋盤類包含一個二維數(shù)組表示棋盤的狀態(tài),以及一個方法用于顯示棋盤。螞蟻類包含螞蟻當(dāng)前的位置和爬行方法。

解析:

  1. 創(chuàng)建棋盤類(Board),包含一個二維數(shù)組表示棋盤狀態(tài),以及一個方法用于顯示棋盤。
  2. 創(chuàng)建螞蟻類(Ant),包含螞蟻當(dāng)前的位置.方向,和爬行方法 move。
  3. 在主函數(shù)中,創(chuàng)建一個1000*1000的棋盤實(shí)例和一個螞蟻實(shí)例。
  4. 讓螞蟻爬行10000次。
  5. 顯示爬行后的棋盤狀態(tài)。

3. 代碼

3.1 設(shè)計(jì) Board類 和 Ant 類, 代碼如下:

import matplotlib.pyplot as plt
import numpy as np

class Board:
    def __init__(self, size):
        self.size = size
        # 創(chuàng)建初始棋盤,設(shè)置為全0的格子: 注意: 0 表示 白色,1表示 黑色
        self.board = np.zeros((size, size))
        
    def display(self):
        # Create the figure and axes
        fig, ax = plt.subplots()
        # Display the array as an image using imshow
        # cmap='gray' sets the colormap to grayscale
        # imshow 似乎 0 表示黑的,1 表示白色,因此,我這里用函數(shù) np.logical_not()取反了一下 
        plt.imshow(np.logical_not(self.board), cmap='gray')  
        # Set axis labels and title (optional)
        ax.set_xlabel("X-axis")
        ax.set_ylabel("Y-axis")
        ax.set_title("Footprint of Ant on 2D World")
        # Display the plot
        plt.show()
		
		
class Ant:
    def __init__(self, board):
        # 假定初始在 棋盤中央
        self.x = board.size // 2
        self.y = board.size // 2
        # 假定初始方向朝上, 90度
        self.direction = 90
        
    def climb_one(self, board):
        if self.direction == 0 :       # right, 向右邊爬行一格
            self.x = self.x + 1
        elif self.direction == 270:    # down,  向下爬行一格
            self.y = self.y - 1             
        elif self.direction == 180:    # left,   向左爬行一格
            self.x = self.x - 1
        elif self.direction == 90:     # up,     向上爬行一格
            self.y = self.y + 1  
        # 處理一下跑出邊界問題:
        #    如果小于0, 則移動到最大值處, PS: 這樣設(shè)置是有部分道理的,因?yàn)樾∮? 時候,direction是向左 或 向上的,
        #                                 移動到最大值時候,ant 方向向內(nèi)
        #    如果大于最大值,則移動到0 處
        if self.x == -1 : 
            self.x = board.size - 1
        if self.y == -1 : 
            self.y = board.size - 1
        if self.x == board.size - 1 : 
            self.x = 0
        if self.y == board.size - 1 : 
            self.y = 0
			
    def move(self, board):
        if board.board[self.x][self.y] == 0:  # 原來是白色0 
            # Step 1: 腳下格子設(shè)置為黑色1 
            board.board[self.x][self.y] = 1   
            # Step 2: 右轉(zhuǎn)
            self.direction = (self.direction - 90) % 360
            # Step 3:爬行一格
            self.climb_one(board)
        else:   # 原來是黑色1 
            # Step 1: 腳下格子設(shè)置為白色0
            board.board[self.x][self.y] = 0
            # Step 2:左 轉(zhuǎn)
            self.direction = (self.direction + 90) % 360
            # Step 3:爬行一格
            self.climb_one(board)
			
			

3.2 測試代碼

def run():
    board = Board(250)       # 棋盤大小設(shè)置
    ant = Ant(board)
    
    for _ in range(1000000):   # 螞蟻爬行次數(shù)
        ant.move(board)
    
    print("moving ......")
    board.display()

if __name__ == '__main__':
    run()
	
	

4 結(jié)果展示

4.1 螞蟻初始方向頭朝上,棋盤 100* 100 , 爬行 15000次

蘭頓螞蟻:從無序到有序的偉大征程

4.2 螞蟻初始方向頭朝上,棋盤 100* 100 , 爬行 1000次

蘭頓螞蟻:從無序到有序的偉大征程

4.3 螞蟻初始方向頭朝上,棋盤 1000* 1000 , 爬行 50000次

蘭頓螞蟻:從無序到有序的偉大征程

4.4 螞蟻初始方向頭朝右,棋盤 250* 250 , 爬行 50000次

蘭頓螞蟻:從無序到有序的偉大征程

4.5 螞蟻初始方向頭朝右,棋盤 250* 250 , 爬行 100W次

蘭頓螞蟻:從無序到有序的偉大征程文章來源地址http://www.zghlxwxcb.cn/news/detail-855142.html

到了這里,關(guān)于蘭頓螞蟻:從無序到有序的偉大征程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python入門基礎(chǔ)-數(shù)據(jù)類型&有序序列和無序序列;

    python入門基礎(chǔ)-數(shù)據(jù)類型&有序序列和無序序列;

    python語言:定義成能快速完成工作的小工具 ? 簡潔、優(yōu)雅、靈活 ? 入門非常簡單,但真正精通較為困難 ? python可以編寫服務(wù)器腳本,也可以編寫常規(guī)網(wǎng)站 ? 運(yùn)行效率慢(相對于c,java) ? 編譯型語言(C、C++) ? 執(zhí)行前必須先進(jìn)行編譯,編譯成底層機(jī)器碼 ? python不適合

    2024年02月08日
    瀏覽(22)
  • #HTML列表學(xué)習(xí)指南 - 創(chuàng)建有序和無序列表增強(qiáng)網(wǎng)頁內(nèi)容

    HTML列表是網(wǎng)頁設(shè)計(jì)中一項(xiàng)關(guān)鍵的元素,它們允許我們以有序或無序的方式呈現(xiàn)信息、數(shù)據(jù)或事項(xiàng)。在本詳細(xì)指南中,我們將深入了解HTML中的列表,探討有序列表和無序列表的創(chuàng)建方法,以及如何利用列表標(biāo)簽來增強(qiáng)網(wǎng)頁內(nèi)容的可讀性和可視化效果。 HTML無序列表 無序列表基

    2024年02月09日
    瀏覽(17)
  • 數(shù)據(jù)分析之Logistic回歸分析(二元邏輯回歸、多元有序邏輯回歸、多元無序邏輯回歸)

    數(shù)據(jù)分析之Logistic回歸分析(二元邏輯回歸、多元有序邏輯回歸、多元無序邏輯回歸)

    在研究X對于Y的影響時: 如果Y為定量數(shù)據(jù),那么使用多元線性回歸分析; 如果Y為定類數(shù)據(jù),那么使用Logistic回歸分析。 結(jié)合實(shí)際情況,可以將Logistic回歸分析分為3類: 二元Logistic回歸分析 多元有序Logistic回歸分析 多元無序Logistic回歸分析 Logistic回歸分析用于研究X對Y的影響

    2024年03月13日
    瀏覽(30)
  • 不吹不黑 OpenHarmony會是一個偉大的操作系統(tǒng)嗎

    不吹不黑 OpenHarmony會是一個偉大的操作系統(tǒng)嗎

    大家好,我叫連志安,目前是OpenHarmony社區(qū)的一位開發(fā)者。 我在2020年華為的HDC上就開始接觸OpenHarmony,至今1年多了。 在回答標(biāo)題這個問題之前,我想起一句話,先有結(jié)論,再做論證。 結(jié)論是:我認(rèn)為,OpenHarmony的整體目標(biāo)是偉大的,它注定要成為一個偉大的操作系統(tǒng)! 回答

    2024年02月09日
    瀏覽(20)
  • 【數(shù)據(jù)結(jié)構(gòu)】什么是堆,如何使用無序數(shù)組生成一個堆?

    【數(shù)據(jù)結(jié)構(gòu)】什么是堆,如何使用無序數(shù)組生成一個堆?

    堆(Heap)是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,堆 通常是一個可以被看做一棵完全二叉樹的數(shù)組對象 。如果有一個關(guān)鍵碼的集合K = { , , ,…, },把它的所有元素按完全二叉樹的 順序存儲方式存儲 在一個一維數(shù)組中 ,并滿足: = 且 = ( = 且 = ) i = 0,1, 2…,則稱為

    2024年02月06日
    瀏覽(18)
  • JS-Object無序問題

    JS-Object無序問題

    在開發(fā)圖表功能時,由于歷史原因,后端返回的圖表數(shù)據(jù)如下: 是對象類型,鍵為日期,值為日期和當(dāng)天日期的值。在H5端、微信小程序端運(yùn)行結(jié)果正常,結(jié)果到了百度小程序突然發(fā)現(xiàn),這個值的順序是混亂的,時間有時前面的日期在后面,后面的日期在前面(百度小程序id

    2024年02月08日
    瀏覽(15)
  • 2、有序鏈表的維護(hù)【問題描述】編寫一個程序,根據(jù)從標(biāo)準(zhǔn)輸入接收的指令來維護(hù)和操作排序的鏈表(C語言、java和Python分別實(shí)現(xiàn))

    【問題描述】 編寫一個程序,根據(jù)從標(biāo)準(zhǔn)輸入接收的指令來維護(hù)和操作排序的鏈表。鏈表是按順 序維護(hù)的,這意味著鏈表中的數(shù)據(jù)在每次操作后都以遞增的數(shù)字順序存儲。 請注意,在創(chuàng)建新節(jié)點(diǎn)時,需要使用malloc為它們分配空間;一旦不再需要任何已 分配的空間,就應(yīng)該使

    2024年02月09日
    瀏覽(22)
  • 將兩個遞增的有序鏈表合并為一個遞增的有序鏈表

    將兩個遞增的有序鏈表合并為一個遞增的有序鏈表

    ?????????要求結(jié)果鏈表仍使用原來兩個鏈表的存儲空間,不另外占用其他存儲空間。表中不允許有重復(fù)的數(shù)據(jù)。 ? 【算法思想】 ? ? ? ? 要求利用現(xiàn)有的表中的結(jié)點(diǎn)空間建立新表,可通過更改結(jié)點(diǎn)的指針域來重新建立新的元素之間的線性關(guān)系。此題關(guān)鍵點(diǎn)在于:為保證

    2024年02月07日
    瀏覽(21)
  • 兩個有序表合并成一個有序表最少與最多的比較次數(shù)

    兩個有序表合并成一個有序表最少與最多的比較次數(shù)

    在數(shù)據(jù)結(jié)構(gòu)(嚴(yán)蔚敏)第二章課后習(xí)題中有這樣一個題,關(guān)于把兩個有序表合并的操作比較次數(shù) 將兩個各有?N?個元素的有序表歸并成一個有序表,其最少的比較次數(shù)是( A )。 A.N B.2N?-1 C.2N D.N?-1 顯然,比如A順序表的最大值如果比B順序表的最小值還要小,只需要拿B的最

    2024年02月10日
    瀏覽(21)
  • 將兩個遞增的有序鏈表合并為一個遞增的有序鏈表.【數(shù)據(jù)結(jié)構(gòu)】【線性表】

    將兩個遞增的有序鏈表合并為一個遞增的有序鏈表.【數(shù)據(jù)結(jié)構(gòu)】【線性表】

    編寫一個函數(shù)完成如下功能:將兩個遞增的有序鏈表合并為一個遞增的有序鏈表。要求結(jié)果鏈表仍使用原來的鏈表空間,不另外占用其他的存儲空間。表中不允許有重復(fù)的數(shù)據(jù)。 要求,在主函數(shù)中調(diào)用上面的函數(shù)測試。 提示:還需要定義其他函數(shù),比如初始化鏈表,構(gòu)造單

    2024年02月06日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包