Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7edf6a0

Browse files
author
Lukasz
committed
day07-1
1 parent7bb2433 commit7edf6a0

File tree

5 files changed

+103
-4
lines changed

5 files changed

+103
-4
lines changed

‎advent-of-code/2021/input/day07.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,485,366,347,712,806,319,115,790,7,383,980,1,808,323,12,115,595,77,699,666,280,65,501,1570,859,300,857,854,928,443,692,876,275,550,1085,478,858,380,666,115,381,595,632,1144,117,718,507,11,29,938,48,16,6,134,675,542,742,421,538,436,646,505,80,230,745,78,77,738,196,587,1781,199,24,1230,297,671,25,430,1249,265,901,3,570,829,386,1227,1396,1033,596,396,181,15,158,630,416,136,192,281,153,236,316,544,1080,444,572,593,1201,70,1740,1007,92,45,382,910,666,160,1504,1135,134,1105,51,714,246,39,1098,256,1183,1514,1456,388,408,1638,393,58,771,2,193,840,1018,154,242,60,4,240,101,502,472,331,61,349,44,620,707,794,1301,470,38,227,8,249,462,1038,575,278,171,384,176,633,220,613,377,193,293,1595,676,832,22,1093,302,201,218,1063,753,990,714,16,135,182,239,63,604,238,832,477,582,375,217,1877,193,500,89,1882,310,471,83,104,893,136,181,218,479,522,20,91,700,1218,42,1020,400,152,355,316,906,1101,1027,527,276,1050,18,780,593,185,473,673,472,97,791,421,682,63,231,322,54,133,520,1333,631,602,846,852,43,315,1327,1557,461,183,1531,1013,1227,1201,1303,35,1471,483,159,40,346,1074,160,25,233,768,134,565,1275,41,272,645,381,239,1166,84,1119,388,1439,948,630,911,245,90,152,1310,474,1509,561,679,35,47,596,407,10,277,682,800,900,1323,1799,606,426,620,321,100,182,418,292,773,1541,959,964,227,0,351,168,61,293,47,252,646,642,629,135,123,134,1584,241,1631,702,983,67,907,298,14,216,50,50,188,646,77,453,1170,1315,26,408,432,304,1254,5,40,415,1232,213,565,1502,1478,64,180,116,288,1311,379,647,235,1101,246,334,149,545,209,240,12,525,1175,269,235,529,24,898,588,667,1767,659,1385,196,54,802,252,1854,13,1001,283,391,621,54,11,207,278,458,164,249,1042,632,726,555,539,740,365,71,309,39,1058,495,3,534,541,88,557,257,145,109,37,424,445,282,411,469,56,224,579,422,613,241,89,40,66,962,10,387,85,577,1137,255,142,395,1981,12,341,448,268,53,492,601,1102,39,700,449,1681,3,877,156,216,83,515,908,563,749,291,533,352,741,721,316,366,727,84,382,548,305,287,531,65,1000,220,2,156,657,645,117,124,383,327,183,373,352,491,1350,726,99,420,263,916,241,221,543,366,1564,610,213,790,253,316,760,84,17,935,147,1640,79,310,1360,1718,80,328,464,116,791,671,273,32,16,53,991,520,155,689,373,14,268,100,2,608,90,271,276,316,88,20,912,217,236,88,163,242,181,1269,443,465,674,372,1487,271,1361,1219,1208,824,40,660,1438,138,377,149,544,423,442,819,1524,383,327,408,1504,754,145,199,202,976,401,420,1039,95,1291,74,438,31,648,1346,66,1229,148,1257,353,696,536,866,462,560,1287,67,61,1218,36,293,741,667,348,203,875,385,367,42,983,346,76,1044,503,302,581,1409,179,1592,367,562,666,813,1872,221,1007,684,223,314,1005,76,398,673,112,1561,1222,336,618,357,1243,298,215,934,581,12,1096,42,588,326,93,498,1549,1413,1305,33,453,448,486,251,321,1600,950,112,85,1435,50,835,556,197,107,101,948,453,194,1006,382,50,460,1116,735,811,93,249,1416,81,16,252,601,294,905,18,48,113,240,1135,334,305,38,1279,8,1039,229,360,606,419,1121,1500,1057,97,174,149,411,977,434,518,1197,1531,1210,594,14,343,92,61,510,105,253,43,1083,519,264,15,36,73,784,732,68,944,808,179,487,972,1000,185,545,1433,149,112,62,557,956,92,518,1626,522,690,789,32,392,222,501,130,187,1017,1266,701,207,16,306,1222,4,1072,950,1438,135,103,355,1793,62,996,1255,529,974,1133,412,69,46,633,143,442,850,187,115,162,3,230,802,627,167,652,1359,742,467,977,1539,969,1542,24,266,527,712,800,177,1301,543,867,227,866,20,515,483,617,334,114,73,913,389,42,71,1421,712,852,1073,305,11,617,153,280,625,2,544,201,970,69,1463,638,11,143,240,199,92,1068,598,625,1596,262,350,880,124,675,1026,272,545,1349,1103,725,601,1501,86,21,149,316,1512,22,1181,247,61,596,210,475,86,842,410,642,643,156,166,684,2,45,1460,349,1720,877,256,48,43,554,1086,53,5,223,930,181,883,899,39,1440,739,480,476,981,584,2,809,1080,59

‎advent-of-code/2021/src/days/day07.rs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
usesuper::day::{Day};
2+
use std::fmt;
3+
4+
5+
// CrabSubmarine
6+
structCrabSubmarine{
7+
start_pos:u32,
8+
dest_pos:u32
9+
}
10+
11+
implCrabSubmarine{
12+
13+
fnnew(start:u32,dest:u32) ->Self{
14+
CrabSubmarine{
15+
start_pos: start,
16+
dest_pos: dest
17+
}
18+
19+
}
20+
21+
fncompute_distance(&self) ->u32{
22+
let result:u32;
23+
ifself.start_pos >self.dest_pos{
24+
result =self.start_pos -self.dest_pos;
25+
}
26+
else{
27+
result =self.dest_pos -self.start_pos;
28+
}
29+
result
30+
}
31+
}
32+
33+
34+
35+
pubstructDay07{}
36+
37+
implDayforDay07{
38+
fnday_number(&self) ->&str{
39+
"07"
40+
}
41+
42+
fnpart_1(&self) ->String{
43+
letmut input:Vec<u32> =self.load_input()
44+
.lines()
45+
.next()
46+
.unwrap()
47+
.split(',')
48+
.map(|x| x.parse().unwrap())
49+
.collect::<Vec<u32>>();
50+
input.sort();
51+
// Compute median
52+
let med;
53+
let len = input.len();
54+
if len %2 !=0{
55+
med = input[len /2];
56+
}
57+
else{
58+
med =(input[(len -1) /2] + input[len /2]) /2;
59+
}
60+
let fuel:u32 = input.iter()
61+
.map(|&x|CrabSubmarine::new(x, med))
62+
.collect::<Vec<_>>()
63+
.into_iter()
64+
.map(|cs| cs.compute_distance())
65+
.sum();
66+
fuel.to_string()
67+
}
68+
69+
fnpart_2(&self) ->String{
70+
letmut input:Vec<u32> =self.load_input()
71+
.lines()
72+
.next()
73+
.unwrap()
74+
.split(',')
75+
.map(|x| x.parse().unwrap())
76+
.collect::<Vec<u32>>();
77+
input.sort();
78+
// Compute median
79+
let med;
80+
let len = input.len();
81+
if len %2 !=0{
82+
med = input[len /2];
83+
}
84+
else{
85+
med =(input[(len -1) /2] + input[len /2]) /2;
86+
}
87+
let fuel:u32 = input.iter()
88+
.map(|&x|CrabSubmarine::new(x, med))
89+
.collect::<Vec<_>>()
90+
.into_iter()
91+
.map(|cs| cs.compute_distance())
92+
.sum();
93+
println!("Fuel: {}", fuel);
94+
fuel.to_string()
95+
}
96+
}

‎advent-of-code/2021/src/days/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ pub mod day;
33
pubmod day01;
44
pubmod day02;
55
pubmod day03;
6-
pubmod day06;
6+
pubmod day06;
7+
pubmod day07;

‎advent-of-code/2021/src/main.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ impl DaySolutions {
1313
fnrun(&self){
1414
for dayinself.days.iter(){
1515
let _timer = utils::timer::Timer::new();
16-
println!("\nDay:{} -> part_1={}", day.day_number(), day.part_1());
17-
println!("Day:{} -> part_2={}", day.day_number(), day.part_2());
16+
println!("\nDay:{} -> part_1 ={}", day.day_number(), day.part_1());
17+
println!("Day:{} -> part_2 ={}", day.day_number(), day.part_2());
1818
}
1919
}
2020
}
@@ -31,6 +31,7 @@ fn run() {
3131
solutions.add(Box::new(days::day02::Day02{}));
3232
solutions.add(Box::new(days::day03::Day03{}));
3333
solutions.add(Box::new(days::day06::Day06{}));
34+
solutions.add(Box::new(days::day07::Day07{}));
3435
// Run all the soulutions
3536
solutions.run();
3637
}

‎advent-of-code/2021/src/utils/timer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ impl Timer {
1515

1616
fnprint(&self){
1717
let elapsed =self.timer.elapsed().unwrap().as_millis()asf32;
18-
println!("Elpased: {} [ms]", elapsed)
18+
println!("Elapsed: {} [ms]", elapsed)
1919
}
2020
}
2121

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp