作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试解决 Day14 of Advent of code,我得到的是 2660 而不是 2640。我做错了什么?我查看了其他解决方案,它们似乎都遵循相同的方法。 http://adventofcode.com/day/14
- (void)day14:(NSArray *)inputs
{
NSMutableDictionary *reindeerDictionary = [[NSMutableDictionary alloc] init];
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\\w*) can fly (\\d*) km/s for (\\d*) seconds, but then must rest for (\\d*) seconds." options:0 error:&error];
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
if(error) {
NSLog(@"Error in regex formatting:%@", error);
}
for (NSString *input in inputs)
{
NSArray *matches = [regex matchesInString:input options:0 range:NSMakeRange(0,input.length)];
for (NSTextCheckingResult *result in matches) {
NSMutableDictionary *reindeer = [[NSMutableDictionary alloc] init];
reindeer[@"speed"] = [f numberFromString:[input substringWithRange:[result rangeAtIndex:2]]];
reindeer[@"flyTime"] = [f numberFromString:[input substringWithRange:[result rangeAtIndex:3]]];
reindeer[@"restTime"] = [f numberFromString:[input substringWithRange:[result rangeAtIndex:4]]];
reindeer[@"points"] = @0;
reindeerDictionary[[input substringWithRange:[result rangeAtIndex:1]]] = reindeer;
}
}
int maxSeconds = 1000;
NSNumber *maxDistanceFlown = @0;
for (int i = 0; i <= maxSeconds; i++) {
for (NSString *reindeerName in reindeerDictionary.allKeys) {
NSMutableDictionary *reindeer = reindeerDictionary[reindeerName];
NSNumber *speed = reindeer[@"speed"];
NSNumber *flyingPeriod = reindeer[@"flyTime"];
NSNumber *restPeriod = reindeer[@"restTime"];
int distanceFlown = [reindeer[@"distanceFlown"] intValue];
int relativeSeconds = i % (restPeriod.intValue + flyingPeriod.intValue);
//Check if going at full speed vs rest
if (relativeSeconds < flyingPeriod.intValue) {
distanceFlown += speed.intValue;
reindeer[@"distanceFlown"] = @(distanceFlown);
NSNumber *distanceFlown = reindeer[@"distanceFlown"];
if (distanceFlown > maxDistanceFlown) {
maxDistanceFlown = distanceFlown;
}
}
}
}
NSLog(@"Part 1: Winning Distance: %@\n",maxDistanceFlown);
}
最佳答案
What am I doing wrong?
简短回答:使用迭代(您的 for
循环迭代几秒)
稍微长一点的答案:
问题可以在几行中解决,无需任何迭代。这是一个谜题,所以没有代码,但有一个提示:将一个周期想象成一次飞行 + 休息期。任何行程时间都将由零个或多个完整周期和零个或一个部分周期组成。
HTH
附录
我不相信您的解决方案虽然过于复杂,但会产生错误的答案。是什么让你认为这是错误的?按照问题中的示例运行 1000 秒的行程时间,您的结果匹配。
关于ios - Advent Of Code 第 14 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35282838/
我正在尝试解决 Day14 of Advent of code,我得到的是 2660 而不是 2640。我做错了什么?我查看了其他解决方案,它们似乎都遵循相同的方法。 http://adventofc
以下是 Advent of Code 2019 第 1 天第 1 部分的提示: Santa has become stranded at the edge of the Solar System wh
我是一名优秀的程序员,十分优秀!