公司网站建设和推广,零基础1小时快速建站,工程建设信息网站,网站建设完成外网无法访问原题地址 。 — 第 11 天#xff1a;反应堆 — 你听到工厂地板上的一个舱口传来响亮的哔哔声#xff0c;于是决定去查看一下。里面有几根大型电缆管道和一把梯子。
顺着梯子爬下去#xff0c;你发现了哔哔声的来源#xff1a;一个为上方工厂供电的大型环形反应堆。这里的精…原题地址 。— 第 11 天反应堆 —你听到工厂地板上的一个舱口传来响亮的哔哔声于是决定去查看一下。里面有几根大型电缆管道和一把梯子。顺着梯子爬下去你发现了哔哔声的来源一个为上方工厂供电的大型环形反应堆。这里的精灵们正匆忙地在反应堆和一个附近的服务器机架之间跑来跑去显然是在试图修复什么。一位精灵注意到你并急忙跑过来。你来得正好我们刚安装了一个新的服务器机架但我们一直无法让反应堆与它通信你环顾房间看到从服务器机架到反应堆连接着一堆乱七八糟的电缆和设备。她匆匆离开片刻后带着一份设备及其输出的列表你的谜题输入回来了。例如aaa: you hhh you: bbb ccc bbb: ddd eee ccc: ddd eee fff ddd: ggg eee: out fff: out ggg: out hhh: ccc fff iii iii: out每行给出一个设备的名称后跟其输出连接到的设备列表。因此bbb: ddd eee意味着设备bbb有两个输出一个连接到设备ddd另一个连接到设备eee。精灵们相当确定问题不是由任何特定设备引起的而是由数据在设备之间沿着某些特定路径流动触发的。数据只能通过其输出从一个设备流出它不能反向流动。分配好工作后精灵们希望你把重点放在从你旁边的设备一位精灵匆忙贴上一个只写着you的标签开始到反应堆主输出即标有out的设备结束的设备上。为了帮助精灵们找出是哪条路径导致了问题他们需要你找到从you到out的每一条路径。在这个例子中以下是从you到out的所有路径数据可以从you连接到bbb然后从bbb到ddd然后从ddd到ggg然后从ggg到out。数据可以连接到bbb然后到eee然后到out。数据可以到ccc然后到ddd然后到ggg然后到out。数据可以到ccc然后到eee然后到out。数据可以到ccc然后到fff然后到out。总共有5条不同的路径从you通向out。有多少条不同的路径从you通向out— 第二部分 —部分归功于你的分析精灵们对问题有了一些了解。他们现在知道有问题的数据路径会同时经过dac数模转换器和fft执行快速傅里叶变换的设备。他们仍然不确定哪条具体路径是问题所在因此现在需要你找到从svr服务器机架到out的每一条路径。然而你找到的路径都必须同时访问dac和fft顺序任意。例如svr: aaa bbb aaa: fft fft: ccc bbb: tty tty: ccc ccc: ddd eee ddd: hub hub: fff eee: dac dac: fff fff: ggg hhh ggg: out hhh: out这份新的设备列表包含许多从svr到out的路径svr,aaa,fft,ccc,ddd,hub,fff,ggg,outsvr,aaa,fft,ccc,ddd,hub,fff,hhh,outsvr,aaa,fft,ccc,eee,dac,fff,ggg,outsvr,aaa,fft,ccc,eee,dac,fff,hhh,outsvr,bbb,tty,ccc,ddd,hub,fff,ggg,outsvr,bbb,tty,ccc,ddd,hub,fff,hhh,outsvr,bbb,tty,ccc,eee,dac,fff,ggg,outsvr,bbb,tty,ccc,eee,dac,fff,hhh,out然而只有2条从svr到out的路径同时访问了dac和fft。找到所有从svr通向out的路径。其中有多少条路径同时访问了dac和fft第一题很简单基本的递归CTE就解决了withrecursive tas(selectaaa: you hhh you: bbb ccc bbb: ddd eee ccc: ddd eee fff ddd: ggg eee: out fff: out ggg: out hhh: ccc fff iii iii: outt),bas(selectrow_number()over()rn,substr(b,1,3)be,unnest(string_split(substr(b,6),chr(32)))edfrom(selectunnest(string_split(t,chr(10)))bfromt)),aas(select1lv,[be,ed]mfrombwherebeyouunionallselect1lv,m||[b.ed]froma,bwhereb.bem[-1]andb.beoutandlv10)selectcount(*)fromawherem[1]youandm[-1]out;第二问貌似和第一问没什么区别就是换个头尾加上判断中间示例数据也确实很容易通过了。withrecursive tas(selectsvr: aaa bbb aaa: fft fft: ccc bbb: tty tty: ccc ccc: ddd eee ddd: hub hub: fff eee: dac dac: fff fff: ggg hhh ggg: out hhh: outt),bas(selectrow_number()over()rn,substr(b,1,3)be,unnest(string_split(substr(b,6),chr(32)))edfrom(selectunnest(string_split(t,chr(10)))bfromt)),aas(select1lv,[be,ed]mfrombwherebesvrunionallselect1lv,m||[b.ed]froma,bwhereb.bem[-1]andb.beout)selectcount(*)fromawherem[1]svrandm[-1]outanddacinmandfftinm;但是用于正式输入数据却算不出来数据的分布决定的。估计不能直接连要用数学方法计算。