国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) Golang Code n Golang 的出現(xiàn):切片和切塊報告

Code n Golang 的出現(xiàn):切片和切塊報告

Dec 20, 2024 am 08:31 AM

介紹

所以,這是 Golang 2024 年代碼來臨的第二天,我們將探索我的方法和解決方案。問題沒那么容易,但實施后發(fā)現(xiàn)很簡單,并發(fā)現(xiàn)正確。

您可以在 GitHub 上查看我的解決方案。

Advent of Code n Golang: Slicing and Dicing Reports 破壞先生 / 代碼出現(xiàn)

代碼的出現(xiàn)

第 1 部分

我們得到了一些稱為報告的行,每個報告都有很多級別。報告的要求是必須嚴格增加或減少至少1倍或最多3倍。

這意味著如果前兩個元素增加了 1,那么該報告中的其他后續(xù)元素也應該增加(增加 1、2 或 3)級別,并且不能有任何變化(即兩個相鄰元素的變化為 0)數(shù)字,或兩個相鄰數(shù)字不能相同)

7 6 4 2 1
1 2 7 8 9
9 7 6 2 1
1 3 2 4 5
8 6 4 4 1
1 3 6 7 9
  • 我們首先進行輸入解析,這非常簡單,我們需要將其除以 n 以獲得單獨的報告,這將是一個字符串,所以 ”7 6 4 2 1” ,我們想要得到一個切片整數(shù)。

  • 所以我們繼續(xù)并用空格/空白“”分割以獲得各個級別(數(shù)字),我們需要將它們轉換為整數(shù)。

  • 一旦我們有了報告的各個字符串,即級別為 [“7”, “6”, “4”, “2”, “1”] ,我們需要將它們轉換為整數(shù)。

  • 我們迭代它們中的每一個并將它們轉換為整數(shù)并附加到列表中。

  • 構建列表后,我們將其追加到報告列表中,該列表將是數(shù)組的數(shù)組,即每一行都是一個報告,每個報告都有許多級別,因此是整數(shù)切片。

func SplitLevels(lines []string) [][]int {
    reportLevels := [][]int{}
    for i, reportLine := range lines {
        reportLevels = append(reportLevels, []int{})
        for _, levelStr := range strings.Split(reportLine, " ") {
            level, err := strconv.Atoi(levelStr)
            if err != nil {
                log.Fatal(err)
            }
            reportLevels[i] = append(reportLevels[i], level)
        }
    }
    return reportLevels
}

一旦我們構建了報告和級別,我們就會繼續(xù)實際分析各個報告中級別內的模式。

為此:

  • 我們首先獲取單獨的報告,計算前兩個元素之間的差異,并記住在這里小心使用絕對差異。

  • 我們需要維護一個標志,指示報告中的級別是增加還是減少,這可以通過前兩個元素來確定。

    也就是說,如果前兩個元素增加,則后續(xù)級別也應增加,如果它們減少,則所有級別也應減少

  • 我們首先進行警衛(wèi)檢查,如果它們之間的差異是 0 或大于 3 或小于 -3,這是安全級別的條件。如果是這種情況,那么我們返回 false,即報告不安全。

  • 我們現(xiàn)在在前兩個元素之后迭代報告,然后計算接下來兩個級別之間的差異,如果標志正在增加為 true 并且當前差異小于或等于 0 或超過3 我們也將其標記為 false

  • 另一個條件是,如果標志正在減少,這意味著前兩個元素具有負差,因此我們檢查當前差是否大于或等于 0 或者小于 - 3,如果是這種情況,我們將其標記為 false

  • 計算完所有級別的差異后,如果我們退出循環(huán),我們將返回 true,因為我們沒有看到級別中存在任何差異。

7 6 4 2 1
1 2 7 8 9
9 7 6 2 1
1 3 2 4 5
8 6 4 4 1
1 3 6 7 9

第2部分

對于第二部分,我們需要做一些事情,我們需要計算報告是否安全,如果不安全,我們幾乎可以從報告中刪除一個元素以使其安全。

為此,方法是:

  • 獲取我們第一次看到級別差異的索引

  • 通過從報告中刪除該元素進行檢查,如果這使報告安全,則返回 true,即我們找到了安全報告

  • 如果我們仍然發(fā)現(xiàn)報告不安全,請刪除發(fā)現(xiàn)差異的索引之前的元素,如果現(xiàn)在我們在刪除該元素后發(fā)現(xiàn)它是安全的,則將其標記為安全

  • 如果我們仍然發(fā)現(xiàn)報告不安全,則刪除我們最初發(fā)現(xiàn)差異的索引后面的元素,如果報告變得安全,我們將該報告標記為安全

  • 否則我們會將報告標記為不安全,因為我們無法找到使報告安全的可移動元素。

func SplitLevels(lines []string) [][]int {
    reportLevels := [][]int{}
    for i, reportLine := range lines {
        reportLevels = append(reportLevels, []int{})
        for _, levelStr := range strings.Split(reportLine, " ") {
            level, err := strconv.Atoi(levelStr)
            if err != nil {
                log.Fatal(err)
            }
            reportLevels[i] = append(reportLevels[i], level)
        }
    }
    return reportLevels
}

您可以在 GitHub 上查看我的解決方案。

Advent of Code n Golang: Slicing and Dicing Reports 破壞先生 / 代碼出現(xiàn)

代碼的出現(xiàn)

結論

這就是它,這是 Golang 代碼 2024 出現(xiàn)的第二天的一個非常簡單的問題。我希望您喜歡 Golang 2024 年代碼降臨中第一天謎題的演練。

如果您有任何其他有趣的解決方案,或者您對此有什么要分享的,歡迎任何反饋、問題或建議。

感謝您的閱讀,明天第三天見

快樂編碼:)

以上是Code n Golang 的出現(xiàn):切片和切塊報告的詳細內容。更多信息請關注PHP中文網其他相關文章!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何在GO中創(chuàng)建緩沖頻道? (例如,make(chan int,10)) 如何在GO中創(chuàng)建緩沖頻道? (例如,make(chan int,10)) Jun 20, 2025 am 01:07 AM

在Go中創(chuàng)建緩沖通道只需在make函數(shù)中指定容量參數(shù)即可。緩沖通道允許發(fā)送操作在沒有接收者時暫存數(shù)據(jù),只要未超過指定容量,例如ch:=make(chanint,10)創(chuàng)建了一個可存儲最多10個整型值的緩沖通道;與無緩沖通道不同,發(fā)送數(shù)據(jù)時不會立即阻塞,而是將數(shù)據(jù)暫存于緩沖區(qū)中,直到被接收者取走;使用時需注意:1.容量設置應合理以避免內存浪費或頻繁阻塞;2.需防止緩沖區(qū)無限堆積數(shù)據(jù)導致內存問題;3.可用chanstruct{}類型傳遞信號以節(jié)省資源;常見場景包括控制并發(fā)數(shù)量、生產者-消費者模型及異

如何在GO中的結構實例上調用方法? 如何在GO中的結構實例上調用方法? Jun 24, 2025 pm 03:17 PM

在Go語言中,調用結構體方法需先定義結構體和綁定接收者的方法,使用點號訪問。定義結構體Rectangle后,可通過值接收者或指針接收者聲明方法;1.使用值接收者如func(rRectangle)Area()int,通過rect.Area()直接調用;2.若需修改結構體,應使用指針接收者如func(r*Rectangle)SetWidth(...),Go會自動處理指針與值的轉換;3.嵌入結構體時,內嵌結構體的方法會被提升,可直接通過外層結構體調用;4.Go無需強制使用getter/setter,字

GO中的接口是什么?如何定義它們? GO中的接口是什么?如何定義它們? Jun 22, 2025 pm 03:41 PM

在Go語言中,接口是一種定義行為而不指定實現(xiàn)方式的類型。接口由方法簽名組成,任何實現(xiàn)這些方法的類型都自動滿足該接口。例如,定義一個Speaker接口包含Speak()方法,則所有實現(xiàn)該方法的類型均可視為Speaker。接口適用于編寫通用函數(shù)、抽象實現(xiàn)細節(jié)和測試中使用mock對象。定義接口使用interface關鍵字并列出方法簽名,無需顯式聲明類型實現(xiàn)了接口。常見用例包括日志、格式化、不同數(shù)據(jù)庫或服務的抽象,以及通知系統(tǒng)等。例如,Dog和Robot類型均可實現(xiàn)Speak方法,并傳遞給同一個Anno

如何在GO中使用字符串軟件包中的字符串函數(shù)? (例如len(),strings.contains(),strings.index(),strings.replaceall()) 如何在GO中使用字符串軟件包中的字符串函數(shù)? (例如len(),strings.contains(),strings.index(),strings.replaceall()) Jun 20, 2025 am 01:06 AM

在Go語言中,字符串操作主要通過strings包和內置函數(shù)實現(xiàn)。1.strings.Contains()用于判斷字符串是否包含子串,返回布爾值;2.strings.Index()可查找子串首次出現(xiàn)的位置,若不存在則返回-1;3.strings.ReplaceAll()能替換所有匹配的子串,還可通過strings.Replace()控制替換次數(shù);4.len()函數(shù)用于獲取字符串字節(jié)數(shù)長度,但處理Unicode時需注意字符與字節(jié)的區(qū)別。這些功能常用于數(shù)據(jù)過濾、文本解析及字符串處理等場景。

將Golang服務與現(xiàn)有Python基礎架構集成的策略 將Golang服務與現(xiàn)有Python基礎架構集成的策略 Jul 02, 2025 pm 04:39 PM

TOIntegrategolangServicesWithExistingPypythoninFrasture,userestapisorgrpcForinter-serviceCommunication,允許GoandGoandPyThonAppStoStoInteractSeamlessSeamLlyThroughlyThroughStandArdArdAdrotized Protoccols.1.usererestapis(ViaFrameWorkslikeSlikeSlikeGiningOandFlaskInpyThon)Orgrococo(wirs Propococo)

如何使用IO軟件包在GO中使用輸入和輸出流? 如何使用IO軟件包在GO中使用輸入和輸出流? Jun 20, 2025 am 11:25 AM

TheGoiopackageprovidesinterfaceslikeReaderandWritertohandleI/Ooperationsuniformlyacrosssources.1.io.Reader'sReadmethodenablesreadingfromvarioussourcessuchasfilesorHTTPresponses.2.io.Writer'sWritemethodfacilitateswritingtodestinationslikestandardoutpu

我如何使用時間軟件包來處理GO的時間和持續(xù)時間? 我如何使用時間軟件包來處理GO的時間和持續(xù)時間? Jun 23, 2025 pm 11:21 PM

Go的time包提供了處理時間和持續(xù)時間的功能,包括獲取當前時間、格式化日期、計算時間差、處理時區(qū)、調度和休眠等操作。要獲取當前時間,使用time.Now()獲取Time結構體,并可通過Year()、Month()、Day()等方法提取具體時間信息;通過Format("2006-01-0215:04:05")可將時間格式化為字符串;計算時間差時,用Sub()或Since()獲取Duration對象,再通過Seconds()、Minutes()、Hours()轉換為對應單位;添

我如何根據(jù)語句使用語句執(zhí)行代碼? 我如何根據(jù)語句使用語句執(zhí)行代碼? Jun 23, 2025 pm 07:02 PM

Ingo,ifstatementSexecuteCodeBasedonConconditions.1.BasicsStructurerunsablockifaconditionistrue,例如IFX> 10 {...}。2.Elseclausehan dlesfalseconditions,例如,else {...}。3。elseifchainsmultipleconditions,例如,elseifx == 10 {...}。4.variableInitializationInsideIndifif,l

See all articles