鸿沟-像一个程序员一样思考,Ep 6
中级美国腔 3353
0
收藏
中字 字幕滚动
开始影片后,点击字幕可以立即查询单词!
单句重复

Ethic,Hedge,andOctaviastandontheedgeofabottomlessravine.

伦理、树篱和奥克塔维亚站在无底的峡谷边缘。

It’stheonlythingbetweenthemandthetower

这是他们和塔之间唯一的东西

thathousesthesecondofthreepowerfulartifacts.

这是三个强大的人工制品中的第二个。

They’vegotabriefwindowoftimetogetacrossbeforetheguardsreturn.

在警卫回来之前,他们还有一小段时间可以过去。

WithHedge’sfuelgaugeonemptyhewon’tbeabletoflyEthicacross,

由于赫奇的燃油表是空的,他将不能飞越伦理,

sotheonlyoptionistomakeabridge.

所以唯一的选择是做一座桥。

Fortunately,thefloatingstacksofstonesnearbyarebridgecomponents—

幸运的是,附近漂浮的石堆是由奥克塔维亚

inventedbyOctaviaherself—calledhover-blocks.

自己发明的桥梁部件,叫做气垫块。

Activateapilewithaburstofenergy,

用一股能量激活一堆能量

andthey’llself-assembletospantheravineasEthicwalksacross.

当道德走过峡谷时,他们会自动集合跨越峡谷。

Butthereis,ofcourse,acatch.

当然,这里有一个陷阱。

Thehover-blocksareonlystablewhenthey’reperfectlypalindromic.

气垫块只有在完全回文时才稳定。

Meaningtheyhavetoformasequencethat’sthesame

也就是说,它们必须形成

whenviewedforwardsandbackwards.

一个前后一致的序列

Thestacksstartinrandomorders,

堆栈以随机顺序开始,

butwillalwaysputthemselvesintoapalindromicconfiguration

但如果可以,它们总是将自己置于

iftheycan.

回文配置中。

Iftheygettoapointwhereapalindromeisn’tpossible,

如果他们到了回文不可能的程度,

thebridgewillcollapse,

桥就会倒塌,

andwhoever’sonitwillfallintotheravine.

,桥上的人就会掉进峡谷里。

Let’slookatanexample.

让我们看一个例子。

Thisstackwouldmakeitselfstable.

这个堆栈会使自身稳定。

FirsttheAblocksholdthemselvesinplace.

首先A块固定在它们自己的位置上。

ThentheB’s.

然后B

AndfinallytheCwouldnestlerightbetweentheB’s.

最后,C在B之间。

However,supposetherewasonemoreA.

但是,假设还有一个A。

FirsttwoAblocksformup,thentwoB’s,

先是两个A,然后两个B,

butnowtheremainingCandAhavenowheretogo,

但现在剩下的C和A无处可去

sothewholethingfallsapart.

所以整个东西就散了。

TheNodeofPowerenablesHedgetoenergizeasinglestackofblocks.

Power节点使Hedge能够激活单个块堆栈。

WhatinstructionscanEthicgiveHedgetoallowhimtoefficientlyfind

伦理可以给对冲什么指令,让他有效地找到

andpowerastablepalindromicstack?

和权力一个稳定的回文堆栈?

Pausenowtofigureitoutforyourself.

现在停下来,自己想想。

ExamplesofpalindromesincludeANNA,RACECAR,andMADAMIMADAM.

回文的例子包括安娜,赛车和夫人IM亚当

Countingthenumberoftimesagivenletterappearsinapalindrome

计算一个给定的字母在回文中出现的次数

willrevealahelpfulpattern.

会发现一个有用的模式。

Pausenowtofigureitoutforyourself.

现在停下来,自己想想。

Let’sfirstlookatanaïvesolutiontothisproblem.

让我们先来看看这个问题的一个简单的解决方案。

Anaïvesolutionisasimple,brute-forceapproachthatisn’toptimized—

一个幼稚的解决方案是一个简单的、未经优化的方法,

butwillgetthejobdone.

但是可以完成工作。

Naïvesolutionsarehelpfulwaystoanalyzeproblems,

天真的解决方案是分析问题的有用方法,

andworkassteppingstonestobettersolutions.

并作为更好的解决方案的垫脚石。

Inthiscase,anaïvesolutionistoapproachapileofblocks,

在这种情况下,一个简单的解决方案是接近一堆积木,

tryallthearrangements,

尝试所有的安排,

andseeifoneisapalindromebyreadingitforwardandthenbackwards.

并通过向前和向后阅读来查看一个是否为回文。

Theproblemwiththisapproach

这种方法的问题

isthatitwouldtakeatremendousamountoftime.

是需要大量的时间。

IfHedgetriedonecombinationeverysecond,

如果赫奇每秒尝试一个组合,

astackofjust10differentblockswouldtakehim42daystoexhaust.

,那么一堆10个不同的积木需要42天才能消耗完。

That’sbecausethetotaltimeisafunctionofthefactorial

这是因为总时间是块数

ofthenumberofblocksthereare.

的阶乘的函数。

10blockshaveover3millioncombinations.

10个街区有超过300万个组合。

Whatthisnaïvesolutionshowsisthatweneedamuchfasterway

这个简单的解决方案表明,我们需要一种更快的方法

totellwhetherapileofblockscanformapalindrome.

来判断一堆块是否可以形成回文。

Tostart,itmaybeintuitivelyclearthatapileofalldifferentblocks

首先,从直觉上来说,很明显,一堆不同的积木

willneverformone.Why?

永远不会形成一个。为什么?

Thefirstandlastblockscan’tbethesameiftherearenorepeats.

如果没有重复,第一个和最后一个块就不可能是相同的。

Sowhencanagivensequencebecomeapalindrome?

那么什么时候一个给定的序列可以变成回文呢?

Onewaytofigurethatoutistoanalyzeafewexistingpalindromes.

解决这个问题的一种方法是分析一些现有的回文。

InANNA,thereare2A’sand2N’s.

安娜有两个A和两个N。

RACECARhas2R’s,2A’s,2C’s,and1E.

赛车有两个R,两个A,两个C和一个E。

AndMADAMIMADAMhas4M’s,4A’s,2D’s,and1I.

伊姆·亚当女士有4个M, 4个A, 2个D和1个I。

Thepatternhereisthatmostofthelettersoccur

这里的模式是,大多数字母出现

anevennumberoftimes,

的次数是偶数,

andthere’satmost1thatoccursjustonce.

最多只出现一次。

Isthatit?

是它吗?

WhatifRACECARhad3E’sinsteadof1?

如果RACECAR有3个E而不是1个呢?

WecouldtackthenewE’sontotheendsandstillgetapalindrome,

我们可以把新的E粘在末端,仍然得到一个回文,

so3isok.

所以3是可以的。

Butmakethat3E’sand3C’s,andthere’snowhereforthelastCtogo.

但是如果有3个E和3个C,最后一个C就没有地方了。

Sothemostgeneralizedinsightisthat

所以最普遍的观点是

atmostonelettercanappearanoddnumberoftimes,

最多一个字母可以出现奇数次,

buttheresthavetobeeven.

但其他字母必须是偶数。

Hedgecancountthelettersineachstackandorganizethemintoadictionary,

赫奇可以数出每个堆栈中的字母并将它们组织成一本字典,

whichisatidywayofstoringinformation.

这是一种存储信息的整洁方式

Aloopcouldthengothroughandcounthowmanytimesoddnumbersappear.

然后一个循环可以遍历并计算奇数出现的次数。

Iftherearelessthan2oddcharacters,thestackcanbemadeintoapalindrome.

如果有少于2个奇数字符,堆栈可以变成一个回文。

Thisapproachismuch,muchfasterthanthenaïvesolution.

这种方法比单纯的解决方案要快得多。

Insteadoffactorialtime,ittakeslineartime.

不是阶乘时间,而是线性时间。

That’swherethetimeincreases

这就是时间与块的数量

inproportiontothenumberofblocksthereare.

成比例增长的地方。

NowwritealoopforHedgetoapproachthepilesindividually,

现在,为Hedge编写一个循环

andstopwhenhefindsagoodone,andyou’llbereadytogo.

分别处理这些桩,当他找到一个好的桩时就停止,这样你就可以开始了。

Here’swhathappens:

事情是这样的

Hedgeisfast,buttherearesomanypilesittakesalongtime.

:对冲很快,但有这么多的桩,要花很长时间。

Toolong.

太长了。

EthicandHedgearesafe.

伦理和篱笆是安全的。

ButOctaviaisnotsolucky.

但奥克塔维亚就没那么幸运了

鸿沟-像一个程序员一样思考,Ep 6(The Chasm - Think Like A Coder, Ep 6)

影片简介

鸿沟-像一个程序员一样思考,Ep 6

影片讨论

0则回应