Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

代码问世第一天

Posted on 2023-12-02

我今年发现了“Advent of Code”并决定尝试参加它。我回顾了去年的一些任务,看看我可能会期待什么。到目前为止,跳出框框思考并提出解决问题的方案是很有趣的。

第1部分

对于第一个任务,我们得到了一个文件,其中行上有一些文本和数字。我们被要求选择行中的第一个和最后一个数字,然后将它们全部加在一起。我一开始认为这相当简单。

 For example: 1abc2 pqr3stu8vwx a1b2c3d4e5f treb7uchet In this example, the calibration values of these four lines are 12, 38, 15, and 77. Adding these together produces 142.

我选择在 PowerShell 中启动它。这是我通常开始做的事情,因为它是基本的文件输入、选择数字和加法,为什么不呢?

 $inputfile = get-content day1 . txt $digits = $inputfile -replace '[a-zA-Z]' , '' $sum = 0 $digits | ForEach-Object { $line = $_ $first = $line . ToCharArray ( ) | Select-Object - first 1 $last = $line . ToCharArray ( ) | Select-Object - last 1 $number = " $ ( $first ) $ ( $last ) " $sum += [int] $number } Write-Host "Part one total: $sum "

我发现我的正则表达式没有达到仅选择数字的效果。所以我决定用空格替换字母字符。这有效,对于每一行,我将数字分成一个数组,这样我就可以选择第一个和最后一个数字。有些行有 3、4、5 位数字。重新阅读说明和示例后,这是获取数字的好方法。让我感到困惑的是,有些行只有一个数字…所以这一行, 9zml ,数字 9 算作 99。我从最后一行的 7 的示例中找到了这一点,

由于这是一个字符串,要添加数字,我必须将其类型强制转换为[int] 。

现在进入第二部分

笔记上说这个数字是正确的,但我们看到文字上有拼写出来的单词。

 9sixsevenz3 seven1cvdvnhpgthfhfljmnq 6tvxlgrsevenjvbxbfqrsk4seven 9zml 52sevenone 41onevfsgvssxnpsix38four

这次我正在考虑使用Select-String来实现正则表达式功能,它大部分工作……仍然没有得到正确的答案。

 $sum2 = 0 foreach ( $line in $inputfile ) { $digits2 = $line | Select-String '(?=(\d|one|two|three|four|five|six|seven|eight|nine))' - AllMatches | ForEach-Object { $_ . Matches } | % { $_ . Value } $first = $digits2 | Select-Object - first 1 $last = $digits2 | Select-Object - last 1 $first = convertToInteger ( $first ) $last = convertToInteger ( $last ) $completeDigit = " $ ( $first ) $ ( $last ) " Write-Host " $line $completeDigit " pause $sum2 += [int] $completeDigit } Write-Host "Part two total: $sum2 "

我对 PowerShell 确实有一点奇怪的地方。我从Robb Knight借用了正则表达式,谢谢!但正则表达式在 PowerShell 中无法正常工作。这个想法就在那里,我得到了正确的数字,在 1000 行输入文件中的某个地方,有些东西没有得到正确的正则表达式。

然而,我仍然对自己选择的数字和数字的文字印象深刻。我确实对$digits2进行了联接,并且确实看到了字符串的正确导出,并且它确实从以下示例中正确导出。

 41onevfsgvssxnpsix38four 4,1,one,six,3,8,four

由于Select-String是一个数组,因此我们可以轻松获取第一个和最后一个元素。现在有趣的是,将单词转换为整数;我为此构建了一个矩阵函数。

 function convertToInteger ( $word ) { if ( -not $word -is [ValueType] ) { switch ( $word ) { 'one' { return 1 } 'two' { return 2 } 'three' { return 3 } 'four' { return 4 } 'five' { return 5 } 'six' { return 6 } 'seven' { return 7 } 'eight' { return 8 } 'nine' { return 9 } default { return $word } } } }

这将获取每个项目并将单词转换为正确的数字。接下来使用类似的概念来构建我们的$completeDigit并完成总和。我的正则表达式中的某些内容以及选择正确的第一个/最后一个数字组合没有获得正确的数字来正确完成任务。

全面的

这是一个有趣的过程。我会看看明天会发生什么以及我在这个过程中能走多远。这个花了我比我想要的更长的时间,几乎放弃了,但我认为我至少应该得到第一部分。

原文: https://claytonerrington.com/blog/advent-of-code-2023-day-1/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme