【发布时间】:2018-05-17 18:04:10
【问题描述】:
问题描述: 我正在尝试执行此处提到的任务 - https://codereview.stackexchange.com/questions/182483/advent-of-code-2017-day-1-sum-of-digits-matching-the-next-digit-circular-list
但在 Windows Power Shell 中使用简单的循环逻辑(因为我是 Power Shell 新手)
该任务需要查看一系列数字并找到与列表中下一个数字匹配的所有数字的总和。该列表是循环的,因此最后一位之后的数字是列表中的第一位。例如:
1122 产生的和为 3 (1 + 2),因为第一个数字 1 匹配第二个数字,第三个数字 2 匹配第四个数字; 1111 产生 4,因为每个数字(全为 1)与下一个数字匹配; 1234 产生 0,因为没有数字匹配下一个; 91212129 产生 9,因为与下一个匹配的唯一数字是最后一个数字 9
我已经编码了这个:
foreach($line in [System.IO.File]::ReadLines("./task1.txt"))
{
$data = ($line)
}
$i=0
Do
{
if ($data[$i] -eq $data[$i+1]) {
$final += $data[$i]
}
$i++
}
While ($i -le $data.Length)
($final | Measure-Object -Sum).sum
我的“task1.txt”包含值 - “1122”
$final 存储的值是“12”,这些数字是预期的,但我无法将它们相加得到所需的答案 - “3”
当我尝试使用时:
foreach($line in [System.IO.File]::ReadLines("./task1.txt"))
{
[int[]]$data = [int[]]$line.split('')
}
我的“$data”获取整个“1122”作为值
请帮忙!
【问题讨论】:
-
将 $data 视为字符串并使用 [index] 或 .Substring() 方法遍历它的 Length
-
$line.split('')没有做你认为它正在做的事情。在转换为 int 数组之前转换为字符串数组可能会起作用。例如[int[]][string[]]$line
标签: windows powershell window