Advent Of Code 2024 Solution

news/2024/12/4 17:09:36/文章来源:https://www.cnblogs.com/ninler/p/18586576

\[\Large\texttt{Advent Of Code 2024} \]


\(\texttt{Intro}\)

这是一个从每年 12 月 1 日开始的为期 25 天的编程挑战,每天中午 1 pm 会公布一道题。
每道题会有两个部分,你需要用编程解决每一个部分。

本文会使用 C++JavascriptPython 进行编程。

网址:https://adventofcode.com/2024


\(\texttt{Day 1}\)

\(\texttt{Part 1}\)

import rea=list(map(lambda it:list(map(int,re.findall("\\d+",it))),open(0).readlines()))
x,y=[_[0] for _ in a],[_[1] for _ in a]
x.sort()
y.sort()
print(sum(abs(x[i]-y[i]) for i in range(len(x))))

\(\texttt{Part 2}\)

import rea=list(map(lambda it:list(map(int,re.findall("\\d+",it))),open(0).readlines()))
x,y=[_[0] for _ in a],[_[1] for _ in a]
print(sum(i*y.count(i) for i in x))

\(\texttt{Day 2}\)

\(\texttt{Part 1}\)

a=list(map(lambda it:list(map(int,it.split())),open(0).readlines()))
tar=0
for it in a:if sorted(it)==it or sorted(it,reverse=True)==it :fl=1for i in range(1,len(it)):if abs(it[i]-it[i-1])<1 or abs(it[i]-it[i-1])>3 :fl=0tar+=fl
print(tar)

\(\texttt{Part 2}\)

def check(it):fl=Trueif sorted(it)==it or sorted(it,reverse=True)==it :for i in range(1,len(it)):if abs(it[i]-it[i-1])<1 or abs(it[i]-it[i-1])>3 :fl=Falseelse : fl=Falsereturn fla=list(map(lambda it:list(map(int,it.split())),open(0).readlines()))
tar=0
for it in a:fl=Falsefor i in range(len(it)):fl|=check(it[:i]+it[i+1:])tar+=int(fl)
print(tar)

\(\texttt{Day 3}\)

\(\texttt{Part 1}\)

import re
reg=r"mul\((\d+),(\d+)\)"
a=re.findall(reg,''.join(list(map(lambda it:it.strip(),open(0).readlines()))))
a=list(map(lambda it:re.match(reg,it),a))
a=list(map(lambda it:[int(it.group(1)),int(it.group(2))],a))
print(sum(i[0]*i[1] for i in a))

\(\texttt{Part 2}\)

import re
reg1=r"mul\(\d+,\d+\)|do\(\)|don't\(\)"
reg2=r"mul\((\d+),(\d+)\)|do\(\)|don't\(\)"
str=''.join(list(map(lambda it:it.strip(),open(0).readlines())))
a=re.findall(reg1,str)
enable,tar=True,0
# print(a)
for i in a:if i=="do()" : enable=Trueelif i=="don't()" : enable=Falseelse:if enable :it=re.match(reg2,i)tar+=int(it.group(1))*int(it.group(2))
print(tar)

\(\texttt{Day 4}\)

\(\texttt{Part 1}\)

const string	base="XMAS";
const int		dx[9]={0,-1,-1,-1,0,0,1,1,1};
const int 		dy[9]={0,-1,0,1,-1,1,-1,0,1};vector<string>	a;
int				n,m;bool check(int x,int y) { return x>=0&&x<n&&y>=0&&y<m; }void work()
{/* Code */string str; int tar=0;while(cin>>str) a.pb(str),n++,m=str.size();for(int i=0; i<n; i++)for(int j=0; j<m; j++){if(a[i][j]!='X') continue;for(int k=1; k<=8; k++){int xx=i+dx[k],yy=j+dy[k],fl=1;for(int l=1; l<4; l++,xx+=dx[k],yy+=dy[k])if(!check(xx,yy)||a[xx][yy]!=base[l])fl=0;tar+=fl;}}cout<<tar<<'\n';return;
}

\(\texttt{Part 2}\)

const string	base="MAS";
const int		dx[9]={0,-1,-1,1,1};
const int 		dy[9]={0,-1,1,-1,1};vector<string>	a;
int				n,m;bool check(int x,int y) { return x>=0&&x<n&&y>=0&&y<m; }void work()
{/* Code */string str; int tar=0;while(cin>>str) a.pb(str),n++,m=str.size();for(int i=0; i<n; i++)for(int j=0; j<m; j++){// if(a[i][j]!='A') continue;int sum=0;for(int k=1; k<=4; k++){int xx=i-dx[k],yy=j-dy[k],fl=1;for(int l=0; l<3; l++,xx+=dx[k],yy+=dy[k])if(!check(xx,yy)||a[xx][yy]!=base[l])fl=0;sum+=fl;}tar+=(sum>=2);}cout<<tar<<'\n';return;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846735.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub Connect-The-Dots

0x01:端口扫描 主机发现 nmap -sn 192.168.231.0/24全端口扫描 nmap --min-rate 10000 -p- 192.168.231.144开放21ftp,80http,111rpcbind,2049nfsrpcbind 主要的作用是将网络上的 RPC 服务与其对应的端口进行关联。它充当了客户端和服务器之间的桥梁,使得客户端可以通过服…

办公自动化处理展示

1、自动绘制地质图2、自动出高速公路路面自检资料3、自动出高速公路路基自检资料4、自动出高速公路T梁预制自检资料5、自动出高速公路桩基资料自检资料6、自动出高速垫石自检资料7、自动化操作网页8、CAD编程提取点坐标9、扫描的PDF自动识别文字或表格10、pdf文件自动拆分并命名…

使用脚本发布订阅

建使用本地分发服务器】/************************【使用本地分发服务器配置发布】***********************/ -- SqlServer 2008 R2 -- https://technet.microsoft.com/zh-cn/library/ms151860(v=sql.105).aspx use master go -- 服务器上是否已安装分发…

form标签中的button未指明type时默认的类型是什么

form中button未指明type时,默认type为submit 遇到了一个奇怪的现象:一个按钮打开一个Bootstrap模态框,模态框有几个表单字段和两个按钮,两个按钮可以关闭模态框,点击其中一个按钮关闭模态框后页面居然刷新了。 仔细检查后发现点击的按钮未指明type,浏览器把按钮type默认为…

kubernetes菜鸟学习笔记

目录环境准备dockerminikube启动minikube其他命令kubectlkubernetes dashboardKubernetesPodDeployment自动扩缩容升级版本版本回退探针探针配置项启动探针(startupProbe)就绪探针 (readinessProbe)存活探针(livenessProbe)配置示例Service示例Service和Ingress的区别Ingress示…

20222404 2024-2025-1 《网络与系统攻防技术》实验七实验报告

1.实验内容 总结一下本周学习内容,不要复制粘贴 2.实验过程 2.1 简单应用SET工具建立冒名网站 攻击机:kaii 192.168.47.141 靶机:windows xp 192.168.47.145 2.1.1 查看apache工具的默认端口,发现是80端口,于是就不用修改了查看本机的80端口是否被其他进程占用。 netstat …

python +excel 根据品类求涨出和亏损的商品的前三和后三

import pandas as pd# 读取原始数据 df = pd.read_excel(D:\\work\\2\\配料原始表.xlsx, sheet_name=Sheet1)# 按品类分组并处理数据 grouped = df.groupby(品类名称) result_dfs = [] for category, group in grouped:# 筛选亏损数据并整理格式loss_df = group[group[差异金额…

简单编写Makefile与使用make工具

简单编写Makefile与使用make工具 在不使用make工具下对c文件的编译 gcc main.c -o outgcc 《目标文件》 -o 《生成执行文件》编译main.c文件-->out.exe生成out.exe可执行文件 执行out.exe ./out.exe成功执行main编译结果PS: 在window下生成的可执行文件为后缀.exe文件windo…

sy

aHR0cHM6Ly9hcHAuc3V5aW53ZWFsdGguY29tL3N5bGMvcGFnZS9pbmRleC5odG1sI3BhZ2UvMTAvMTkvUDEwMTkuaHRtbD9wcmRDb2RlPUowMjM0Nw== 加密 开始两个debugger都可以使用“一律不在此处暂停过掉”跟栈,或者搜encrypt都可以找到加密位置 b就是请求数据 k是b生成H_TIME和H_NONCE(随机生成…

lua学习day2(懒狗随便记录)

其余的东西都大差不差,主要是我太懒了,写写pcall和xpcall吧pcall能获得调用方法、调用结果,xpcall同样也是可以的,但是里面包含了一个异常处理方法。pcall示例xpcall调用那就大致这。懒狗。。。。。。。

centos7+docker dock-compose使用

简介 Docker-Compose是Docker官方的开源项目,用于实现Docker容器集群的快速编排。 Compose简介 Compose是用于定义和运行多容器 Docker 应用程序的工具,通过Compose,可以使用YML文件来配置应用程序所需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所…

jjyh

aHR0cHM6Ly9tYmFuay5qamViYW5rLmNuL2pqY2NiV2ViL2luZGV4Lmh0bWwjL2ZpbmFuY2lhbE1hbmFnZS9saXN0P2ZpcnN0RmxhZz0zJnNlY29uZEZsYWc9JnNvcnRGbGFnPSZwcmRUeXBlRmxhZz0mY2xhc3NpZnlMaXN0VmFsdWU9JlBkQXJyYXlWYWx1ZT0mY2xhc3N0b3A9dHJ1ZQ== 包分析抓包看到的四个api的请求url皆为htt…