最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

編程解謎游戲A=B全題目&部分挑戰(zhàn)題解

2023-08-14 23:06 作者:qbq0818  | 我要投稿

如題。由于已經(jīng)有up做過(guò)前兩章內(nèi)容和部分劇情/規(guī)則介紹了,本專欄僅提供題目解答部分。由于up精力有限,有4題沒(méi)調(diào)到挑戰(zhàn)條件,另外5-5和5-6是抄的論壇上的,但是寫(xiě)專欄的時(shí)候不知道為啥steam論壇無(wú)法登錄,沒(méi)能給出引用來(lái)源,之后可以登錄了會(huì)在評(píng)論區(qū)補(bǔ)充,對(duì)兩位提供題解的大佬表示抱歉和感謝。

前兩章解法見(jiàn)另一位up的專欄

此處僅給出本人的2-6題解,比要求長(zhǎng)度少2行(11/13)

第三章

3-1

去除頭尾的a。很簡(jiǎn)單

3-2

首個(gè)a之前的字母移到最后,也就是只用移動(dòng)bc

3-3

頭部和尾部的a換成b。需要用另一端做個(gè)緩沖區(qū)

3-4

交換頭部的a和尾部的b。需要一點(diǎn)小技巧,因?yàn)樽址荒芴鎿Q不能復(fù)制,所以a扔到后面還要再回來(lái)才能把后面的b送到前面

3-5

若首尾相同則true,否則false。把最后一個(gè)字母扔到前面來(lái)比對(duì)一下就行了

3-6

保留出現(xiàn)最多的字母,刪去其余的。我調(diào)了很久,第六行是個(gè)小細(xì)節(jié),注意a和b數(shù)量相等的時(shí)候要處理掉

3-7

如果是回文字符串就true,否則false。和3-5思路一致,對(duì)比首尾,一樣的就扔掉

第四章

4-1

顯而易見(jiàn)。

4-2

移除前三個(gè)a,不是移除前三個(gè)字母中的a。

4-3

移除前三個(gè)字母。用一下once來(lái)放三個(gè)標(biāo)記,計(jì)數(shù)用,這個(gè)方法后面很常用

4-4

移除最后三個(gè)a。和4-2差不多,但是要讓標(biāo)記從后往前移動(dòng),跳過(guò)遇到的bc

4-5

交換首尾的字母。

4-6

反轉(zhuǎn)輸入。輸入至多7個(gè)字母,可以利用這一點(diǎn)做到5/6,少一行指令。

4-7

移除第三個(gè)字母。

用四個(gè)y比較有趣,移動(dòng)到第一個(gè)字母后面就剩倆,第二個(gè)字母后面剩下一個(gè),正好刪第三個(gè)。

4-8

復(fù)制前三個(gè)字母,添加到字符串最后。

up試了好多方法,基本上要么前三個(gè)倒過(guò)來(lái)了要么后三個(gè)倒過(guò)來(lái)了,然后想起來(lái)還可以手動(dòng)翻轉(zhuǎn)一次。

4-9

a換成b,b換成a。

常見(jiàn)的a=t b=a t=b用不了,這個(gè)程序是從頭找可替換字符串的

4-10

刪除奇數(shù)位置的字母。

x和xx交替來(lái)計(jì)數(shù)奇數(shù)位置。

4-11

重復(fù)一遍輸入串。

ABC的替換要放到生成ABC前面,這樣就可以一出現(xiàn)就替換掉

4-12

如果有b就所有a換b,否則所有a換c。本題行數(shù)7/9

用B標(biāo)記是否有b。最終輸出一定沒(méi)有a,最后一句話把a(bǔ)全換成c就行,這題后面還會(huì)出現(xiàn)一次,原理一樣

4-13

找到中間的字母。

還是用至多七個(gè)字母,然后前后同時(shí)消除字母,最后剩下的就是中間

4-14

刪除中間的字母。

類似上一題,但是現(xiàn)在前后的字母不能刪掉,所以移動(dòng)的時(shí)候注意留副本保證原先字符串沒(méi)有被替換掉

4-15

重復(fù)第x個(gè)字母x次。

前五行,給每個(gè)字母后面放一個(gè)z,然后每個(gè)字母需要增加的次數(shù)就是它前面的z的個(gè)數(shù)。讓z跑過(guò)去的時(shí)候給它一個(gè)標(biāo)記來(lái)記錄要增加多少次。

4-16

給了兩個(gè)字符串用,隔開(kāi),合并它們,讓字符交替出現(xiàn)。up只調(diào)到了12/9,感覺(jué)還有優(yōu)化空間但是太累了。注意這題字符串只有ab沒(méi)有c。

在兩個(gè)字符串前面分別加個(gè)標(biāo)記,前一個(gè)字符扔到end之后會(huì)給后面那個(gè)標(biāo)記發(fā)一個(gè)信號(hào),讓后面的標(biāo)記也扔一個(gè)字符到end,這倆字符串就在end和起來(lái)了。

第五章

5-1

給一個(gè)二進(jìn)制數(shù),輸出等量的a

這一章似乎代碼行數(shù)的限制稍微松一點(diǎn)點(diǎn),但我也沒(méi)力氣調(diào)了。34兩行就是給這個(gè)數(shù)-1,每-1就在前面扔一個(gè)a,如果還沒(méi)減完就再給后面發(fā)一個(gè)信號(hào)繼續(xù)-1

5-2

給二進(jìn)制數(shù)+1。

很正常的操作,和手算是一樣的,借位進(jìn)位什么的

5-3

兩個(gè)數(shù)用+隔開(kāi),輸出和。只做到了13/9

后一個(gè)數(shù)-1前一個(gè)數(shù)+1,直到后一個(gè)數(shù)變成0

5-4

用-隔開(kāi),輸出兩數(shù)之差。做到了13/8

兩個(gè)數(shù)一起-1,直到后一個(gè)變成0??雌饋?lái)-確實(shí)比+要簡(jiǎn)單,因?yàn)閮蓚€(gè)數(shù)都是-1,不過(guò)懶得優(yōu)化了。

5-5

計(jì)算乘法。雖然是抄的題解,但是贊嘆一句,這思路好精妙。不愧是能做到14/28的解答。

思路就是把前一個(gè)數(shù)換成xxyy,后一個(gè)換成xy,然后排列,前面一堆xxyy后面一堆xy,接下來(lái)逐個(gè)交換,等到全交換完,每一對(duì)xxyy和xy都必然撞上一次,碰撞總數(shù)就是乘積,計(jì)數(shù)就行。此外用xy和xxyy看起來(lái)不方便但是最后只用一句xy=就可以刪掉所有輔助變量,也是好技巧。

5-6

計(jì)算除法,輸出商和余數(shù),用,隔開(kāi)。也是抄的,行數(shù)27/40,思路很常規(guī),不過(guò)有不少技巧可以借鑒。

思路大佬在貼子里講了,不過(guò)我記不太清,大概復(fù)述一下就是,每次循環(huán)先把除數(shù)復(fù)制一份扔到最后,然后給被除數(shù)和除數(shù)一起-1,減完了給商+1,直到減成負(fù)的;然后這里用的減法思路是先把除數(shù)拆成等量的&,然后每個(gè)&給被除數(shù)-1,所以減到負(fù)數(shù)的時(shí)候會(huì)在被除數(shù)變成0停下來(lái),這時(shí)候剩下的&的個(gè)數(shù)恰好就是除數(shù)-余數(shù),把這些&扔到end讓之前復(fù)制的除數(shù)減掉,留下的就是余數(shù)了。

第六章

6-1

輸出helloworld,不能用關(guān)鍵詞。

弄到剩下一個(gè)a,直接換成helloworld就行。這題還算好,至少要你輸出的東西里面沒(méi)有abc這仨字母。順便吐槽一下,這一關(guān)劇情說(shuō)不要關(guān)鍵詞也是圖靈完備的,但是課題報(bào)告里面沒(méi)給完備性的證明,有點(diǎn)難受。要是給了的話說(shuō)不定可以看看有啥不用關(guān)鍵詞也能達(dá)到類似效果的技巧可以玩。

6-2

是回文串輸出true,不是輸出false。我的做法很暴力,行數(shù)只有37/24,不過(guò)24這個(gè)線完全看不出來(lái)什么(前面有的題可以靠給的行數(shù)除以3余1還是2來(lái)猜解法,因?yàn)閷?duì)abc操作一組就要三行),沒(méi)有繼續(xù)優(yōu)化。

一些細(xì)節(jié):首先注意最后輸出的東西有啥字母,別用這些字母當(dāng)輔助游標(biāo)。(后來(lái)看了5-5和5-6題解才反應(yīng)過(guò)來(lái)輔助游標(biāo)可以用很長(zhǎng)的東西,就像正常編程一樣,不過(guò)我也沒(méi)改這題)然后思路大概就是,因?yàn)椴荒苡胦nce,所以我們把所有bc換成yz,在替換的時(shí)候每一個(gè)bc可以塞一堆g進(jìn)來(lái),保證我想要的輔助游標(biāo)不會(huì)一直增加;下面十二行是移動(dòng)變量,把qwd移動(dòng)到ayz1前面;實(shí)際上qwd就是abc,相當(dāng)于我在最后看到了abc,然后扔一個(gè)等效的abc到最前面去找一個(gè)對(duì)應(yīng)來(lái)消掉(把移動(dòng)寫(xiě)在消掉前面可以保證移動(dòng)到start位置才發(fā)生消除),用完的qwd要處理一下,否則新來(lái)的qwd沒(méi)辦法移動(dòng)到start位置,就會(huì)發(fā)生比如bcbba這種情況,最后一個(gè)a移動(dòng)到前面去了沒(méi)消掉,然后第一個(gè)b和倒數(shù)第二個(gè)b給消掉了。這里把qwd沒(méi)消掉的全都改成1,然后讓新來(lái)的qwd能移動(dòng)到1前面,保證不會(huì)亂消掉。然后如果有1意味著要么這是最后一個(gè)字母了,要么這不是回文串,總之如果是回文串,這么弄至多剩下一個(gè)1,不是回文串的話剩下至少倆1,最后把備用的g都刪掉只剩下一個(gè),多余的1刪掉到剩下不超過(guò)倆,于是如果有超過(guò)兩個(gè)1就會(huì)遇到11g,變成false;否則只有一個(gè)1或者沒(méi)有,把1扔掉,用g輸出true。最后一堆a(bǔ)是因?yàn)閒alse里面有a,前面不能直接操作a,如果整個(gè)串沒(méi)有bc的話就沒(méi)g了,沒(méi)有輔助游標(biāo),我得手動(dòng)給個(gè)true。

(看起來(lái)就很新手代碼對(duì)吧,up學(xué)數(shù)學(xué)的沒(méi)受過(guò)計(jì)算機(jī)系統(tǒng)訓(xùn)練,代碼風(fēng)格一團(tuán)稀爛#跪)這代碼放游戲里得跑個(gè)幾分鐘才能出結(jié)果,不過(guò)他要求的time limit似乎是按照指令執(zhí)行次數(shù)計(jì)算的,所以能過(guò)。

6-3

有b就把所有a換成b,否則所有a換成c。

b可以給a傳染,也可以跨過(guò)不超過(guò)5個(gè)c給a傳染(輸入長(zhǎng)度至多7,有連著6個(gè)c就沒(méi)有ab啥事了)不過(guò)前后傳染是倆方向,分別寫(xiě)一下。最后就是如果沒(méi)有b,那a全改成c,前面提過(guò)。

總結(jié)

題解部分,行數(shù)超出限制的有:4-16,5-3,5-4,6-2

行數(shù)小于限制的有:2-6,4-6,4-12,5-5,5-6

如果各位大佬有優(yōu)化改進(jìn)的建議,上述四個(gè)超出限制題目的限制內(nèi)解法,或者其他題目的小于限制的解法,歡迎發(fā)在評(píng)論區(qū)或者私信我,我后面修改專欄可以加進(jìn)來(lái),我自己之后有新的優(yōu)化做法也會(huì)發(fā)在評(píng)論區(qū)或者一起改到專欄里面(似乎修改次數(shù)有限制,一起改比較安全),感謝各位了。

編程解謎游戲A=B全題目&部分挑戰(zhàn)題解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
噶尔县| 东城区| 惠州市| 呈贡县| 皋兰县| 皮山县| 石河子市| 高青县| 德昌县| 巩义市| 青海省| 綦江县| 中江县| 富阳市| 祥云县| 正宁县| 华亭县| 贞丰县| 大新县| 泸水县| 安宁市| 梁平县| 永仁县| 通渭县| 垣曲县| 弥勒县| 阿鲁科尔沁旗| 佛冈县| 获嘉县| 峨山| 大荔县| 丽江市| 贡觉县| 胶南市| 山阳县| 张家川| 宣武区| 布尔津县| 桂东县| 广水市| 东台市|