關(guān)閉(st)二進(jìn)制框
挑戰(zhàn):A非負(fù)整數(shù)列表,通過增加每個(gè)項(xiàng)目的數(shù)量來確定創(chuàng)建與結(jié)果integer-list最接近的二進(jìn)制框。什么是二進(jìn)制框?二進(jìn)制框中,第一行和最后一行由1位組成;第一列
解答動(dòng)態(tài)
APL(Dyalog Extended),47 46 48字節(jié) {x←0??{x≡
x?←?-?⊥(1@1)°°°??4?0×?:x?????0}??+~×?} 在線試用!
一個(gè)dfn,它以一個(gè)向量作為它的右參數(shù)。如果輸入已經(jīng)是一個(gè)二進(jìn)制框,
輸出一個(gè)0的列表。
在一個(gè)fix之后加上2個(gè)字節(jié)。(謝謝,阿爾諾)
Explanation {x←0??{x≡x?←?-?⊥(1@1)°擴(kuò)展){x≡
x?←?-?⊥(1@1)°°??4?0×?:x?????0}用?+~×?add調(diào)用下面的遞歸函數(shù)!(signum(input))到自身(對(duì)于[0])的特殊大小寫?轉(zhuǎn)換為二進(jìn)制矩陣?并將輸入列表作為right arg:If:0×?矩陣轉(zhuǎn)換為零(1@1)°?°??4?每邊加1⊥從二進(jìn)制轉(zhuǎn)換?-?從輸入x中減去?←分配給xx≡
如果x與其絕對(duì)值x匹配,則返回x?????0,否則添加一行零,然后重試
Python 3.8,95 bytes f=lambda s,n=1:(b:=[x-y代表x,y在zip中(([n
n-1]+[n
1]*(len(s)-2,s)])*(min(b)gt;=以s為單位的值(b:=…)#構(gòu)造一個(gè)行號(hào)與s*(min(b)#32;[x-y表示x,y在zip(…,s)])]#取s中每對(duì)行號(hào)和整數(shù)的差[n
n-1]#第一行和最后一行等于n
n-1;#示例:n=8,n
n-1=8
7=0b1000
0b0111=0b1111=15+[n
1]*(len(s)-2)#中間行是n
1#示例:n=8,n
1=8
1=0b1000
0b0001=0b1001=9(…)*2#重復(fù)此列表兩次以獲得第一行,#zip將忽略所有額外元素
05AB1E,25 21 18 bytes -4字節(jié),感謝凱文·克魯森!
[NoDlt;#decrement Id#按與輸入相同長度的1列表#刪除前2個(gè)元素s#swap to 2**N-1。##環(huán)繞1列表以獲得相同的新列表長度作為輸入#=gt;[2**N2**N-1,2**N
1,…,2**N
1的二進(jìn)制網(wǎng)格,2**N
2**N-1]I-#從二進(jìn)制網(wǎng)格中減去輸入列表元素W#取最小值而不彈出列表d#如果這是非負(fù)的##打破無限循環(huán)并隱式打印列表
JavaScript(ES6),如果輸入已經(jīng)是二進(jìn)制框,則72字節(jié) 輸出0的列表。
a=gt;/-/.test(b=a.map((v,i)=lt;gt;//a[]=input array(g=k=gt;//下map()的結(jié)果,對(duì)于a[]中位置i處的每個(gè)值v:(i/a[i+1]?//如果這既不是第一項(xiàng)也不是最后一項(xiàng)//(即i不等于0并且定義了[i+1]):k^//使用垂直邊框k/4lt;1//例如0b111111 XOR((0b111111gt;2)lt;1)=0b100001://否則:k//使用水平邊界(即全位掩碼k))-v//subtract v)//end of map()?//如果有減號(hào):g(k-~k)//用2*k+1再試一次://否則:b//success:return b[])(1)//用k=1carbon初始調(diào)用g,39 37 bytes ?1ζ??1θηw媫?η??≤?ζ?eθ??%λλ?lθ⊕ζζ???ζη?iη 在線嘗試!鏈接到詳細(xì)版本的代碼。說明:我試著直接計(jì)算正確的盒子大小,但是有太多的邊緣情況。
?1ζ 從一個(gè)寬度為1的盒子開始。
??1θη 看這個(gè)盒子是否能容納輸入。
w媫?η? 重復(fù)直到找到足夠大的盒子。
≤?ζ 增加盒子的大??br/> ??eθ???λ?lθ⊕ζζ??ζη 計(jì)算盒子并減去原來的大小input.
?iη 輸出最終增量。
Python 3.8+,91 bytes f=lambda b,n=1:f(b,n*2)if min(u:=r
[(t:=2*n-1),b[2:]*0+n
1,t]-b)<;0否則從numpy import* 參數(shù)b必須是整數(shù)的numpy數(shù)組。
因此,不要聯(lián)機(jī)嘗試。
使用n值1,2,4,8,…,遞歸,并構(gòu)造array
r[(t:=2*n-1),#第一行b[2:]*0+n
1,#中間行,所有值均為n
1,length=len(b[2:])t#最后一行,與第一行相同] 為二進(jìn)制框,然后返回不小于b的第一行。
05AB1E,25 31 25 26 bytes +6用于輸入[1,0,1]
-6感謝Kevin Cruijssen
+1修復(fù)了單個(gè)元素列表
d?∞εoIggt;ylt;?}?Δ的錯(cuò)誤I@P公司}你可以在網(wǎng)上試試!或者試試所有的案子- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請咨詢專業(yè)人士處理。