Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - jsgonsette/AdventOfCode2024: Advent of Code, in Rust · GitHub
Skip to content

Latest commit

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

My solutions for the Advent of Code 2024 puzzles, in Rust

AoC in Rust

Usage

  1. The application expects your input files to be in the ./input/2024 directory. Each file must be named according to the day number: 01.txt, .. 25.txt.
  2. There is only one binary to compile, that invokes all the daily puzzles in sequence (see ./src/main.rs )

Performance

I focus on code readability and usability first, instead of seeking for performance at all cost. As such, this code is well documented and should be very understandable. Here are the results I get to solve the two parts of the problems:

All benchmarks are run on an AMD Ryzen 9 5900X, single thread

DayPuzzleCodePerf. (ms)
01Historian Hysteriaday_01.rs0.144
02Red-Nosed Reportsday_02.rs0.311
03Mull It Overday_03.rs0.094
04Ceres Search Hysteriaday_04.rs0.287
05Print Queueday_05.rs2.842
06Guard Gallivantday_06.rs82.53
07Bridge Repairday_07.rs18.76
08Resonant Collinearityday_08.rs0.093
09Disk Fragmenterday_09.rs5.824
10Hoof Itday_10.rs1.446
11Plutonian Pebblesday_11.rs14.03
12Garden Groupsday_12.rs2.043
13Claw Contraptionday_13.rs2.134
14Restroom Redoubtday_14.rs32.20
15Warehouse Woesday_15.rs1.727
16Reindeer Mazeday_16.rs10.14
17Chronospatial Computerday_17.rs0.082
18RAM Runday_18.rs6.966
19Linen Layoutday_19.rs21.86
20Race Conditionday_20.rs54.94
21Keypad Conundrumday_21.rs0.158
22Monkey Marketday_22.rs47.69
23LAN Partyday_23.rs7.036
24Crossed Wiresday_24.rs0.351
25Code Chronicleday_25.rs0.266

Show results
DayPuzzleCodePerf. (ms)
01Calorie Countingday_01.rs0.082
02Rock Paper Scissorsday_02.rs0.083
03Rucksack Reorganizationday_03.rs0.070
04Camp Cleanupday_04.rs0.119
05Supply Stacksday_05.rs0.137
06Tuning Troubleday_06.rs0.027
07No Space Left On Deviceday_07.rs0.072
08Treetop Tree Houseday_08.rs0.392
09Rope Bridgeday_09.rs0.957
10Cathode-Ray Tubeday_10.rs0.006
11Monkey in the Middleday_11.rs4.342
12Hill Climbing Algorithmday_12.rs0.260
13Distress Signalday_13.rs0.093
14Regolith Reservoirday_14.rs0.808
15Beacon Exclusion Zoneday_15.rs0.114
16Proboscidea Volcaniumday_16.rs2.254
17Pyroclastic Flowday_17.rs0.661
18Boiling Bouldersday_18.rs1.006
19Not Enough Mineralsday_19.rs0.291
20Grove Positioning Systemday_20.rs82.68
21Monkey Mathday_21.rs5.747
22Monkey Mapday_22.rs0.417
23Unstable Diffusionday_23.rs276.7
24Blizzard Basinday_24.rs54.78
25Full of Hot Airday_25.rs0.011

About

Advent of Code, in Rust

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages