Fibonacci樹
BackgroundFibonacci樹\$T\n\$是高度為\$n-1\$的有根二叉樹序列。它們被定義為如下:\$T\u 0\$沒有節(jié)點。\$T\u 1\$有一個節(jié)點(根節(jié)點)。\$T\u{n+2}\$的根節(jié)點
解答動態(tài)
J、14 bytes (2{.];])^:[quot;()quot;(L,R)quot;()quot;,這要感謝外殼理解列表現(xiàn)在是字符串列表而不是數(shù)字列表。從前兩棵樹生成一棵新樹的操作符要復(fù)雜一些復(fù)合物:
`J?J',e Input:左子樹quot;,右子樹quot;e將兩棵樹放在一個列表中[quot;,quot;]J',用逗號quot;`J翻轉(zhuǎn)連接:使用此字符串加入列表?quot;輸出:quot;Jelly,2 bytes ,& 聯(lián)機試用!
以嵌套列表的形式輸出第n個Fibonacci樹,其中列表表示節(jié)點,整數(shù)n表示NIL。如果這太騙人了,你可以用0代表4字節(jié):
0,“0 在線試用!把前面的二元函數(shù)f(x,y)變成三元函數(shù)g(x,n,y),如那個:g(x,0,y)=xg(x,1,y)=f(x,y)g(x,n,y)=f(g(x,n-1,y),g(x,n-2,y)) 由于這三個參數(shù)都沒有給定,因此它們被輸入填充-或者在4字節(jié)變量中,為x和y提供零。
Wolfram語言(Mathematica),19 bytes #<;2
#0/@{1,#-2}& 在線試用!
1索引。返回第n棵樹。Mathematica中的
表達(dá)式是樹。True表示沒有節(jié)點。
目測:
05AB1E,6 bytes ?¨λs¨ 輸出無限序列,空字符串作為空節(jié)點(即,\$T4\$將導(dǎo)致[[[],quot;]])
聯(lián)機嘗試。(頁腳是用換行分隔符將每棵樹打印在一行上。請隨意刪除它以查看實際的無限列表輸出。)
Ex夷平面:
λ#啟動一個遞歸環(huán)境#輸出無限序列,從a(0)=quot;;按下一個空列表[];將它們配對)#我們按如下方式計算a(n):#(隱式推送a(n-2)和a(n-1)s的值#在堆棧上交換它們#并將它們配對:[a(n-1),a(n-2)]carbon,18 bytes fn??ν±1±3±1∧ν?1?ν 在線試用!鏈接到詳細(xì)版本的代碼。將節(jié)點輸出為0到2個元素之間的數(shù)組。前任夷平面:
fn 輸入n次,循環(huán)n次。
?ν?ν±1±3±1 取最后和倒數(shù)第二個結(jié)果(如果有),并將它們作為下一棵樹的根的子級。
∧ν?1?ν 打印最后一棵樹(如果有)。
JavaScript(節(jié)點.js),29 27字節(jié) 根據(jù)Jo King的建議保存了2個字節(jié)。
f=n=lt;1?[]:[f(n-1),f(n-2)] 在線試用!
A樹由[l,r]表示。孩子的缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺缺者。
。
(gcc)
(gcc)
(gcc)表示表示表示表示表示;214;214,214 14 14 14 14年,14年,14年,14年,14年,14年;其他若若(n-2)如果(n-2)m(n-2)m[m[i[i[i[i[i[j]=48;其他如果(n-2)m[m[m[m[m[i[j]=48;m[m[i]m[++i][--j]=48;}}} 在線試用!
I選擇ASCII藝術(shù)輸出很有趣。那個代碼由一個函數(shù)c()組成,其作用是調(diào)用f(),只調(diào)用一次。f()是一個非常有創(chuàng)意的遞歸函數(shù),熱衷于在空白的二維數(shù)組上繪制樹。
只有前5棵樹是正確的。要顯示更大的樹,我應(yīng)該對節(jié)點之間的間距使用指數(shù)定律,但如果這樣做,那么最高的節(jié)點之間的距離將非常遙遠(yuǎn),以至于您無論如何都無法識別更大的樹。
Retina,34 bytes K`?quot;+`(.*)?(.*)[$1,$2]?$10G` 請聯(lián)機試用!輸出元組樹。由于程序使用了歷史記錄,因此沒有測試套件。前任夷平面:
K`? 用新行替換輸入,表示兩個空樹。
quot;+` 重復(fù)原始輸入給定的次數(shù)…
(.*)?(.*)[$1,$2]?$1 。。。創(chuàng)建一個包含前兩棵樹的節(jié)點,并忽略最后一棵樹。
0G` 只保留最后一棵樹。
Common Lisp,58 bytes (defun f(n)(case n(0())(1 0)(t(cons(f(1-n))(f(-n 2???)? )示例:
USER>;(從0到7的循環(huán)i do(打。╢i)))NIL 0(0)((0)。0) (((0) . 0) 0) ((((0) . 0) 0) (0) . 0) (((((0) . 0) 0) (0) . 0) ((0) . 0) 0) ((((((0) . 0) 0) (0) . 0) ((0) . 0) 0) (((0) . 0) 0) (0) . 0) 另外,如果您(ql:quickload:memoize),您可以執(zhí)行(memoize函數(shù)'f),它將緩存中間結(jié)果。- End
免責(zé)聲明:
本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請您根據(jù)自身實際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項,請咨詢專業(yè)人士處理。