Rec-Room
如何對 Rec Room 電路中的數字進行排序?
我想在 Rec Room 電路中對總共 4 個數字進行排序。理想情況下,我想一次性完成,但多點解決方案可能是可行的。
輸入將是 4 個單獨的引腳,輸出也將是 4 個引腳。排序完成後,輸出引腳應包含輸入引腳上的所有數字,但按數字排序。
對於較小的值
n
,其中n
是要排序的元素數量,您可能應該使用排序網路。來自 Wikipedia 的最佳排序網路的視覺化n=4
:這是它的一個實現。我還發表了一項發明“排序網路”,其中包含用於
n=[2,7]
.
在 Rec Room 中排序數字很快就會變得非常昂貴。但是,對於少量的
N
輸入,這是很有可能的。我得出的解決方案可能不是最好的解決方案,但它是一個可以輕鬆擴展以支持更大的解決方案
N
(儘管需要付出代價)。的解決方案N=2
非常簡單:該電路將變數晶片的紅色和綠色引腳的值進行排序,並以從上到下的遞增順序輸出到右側的兩個加晶片上。您可能會注意到這在數組中執行了所謂的“交換”,如果在冒泡排序
N
之後,我們可以使用此操作通過建模對更大的輸入進行排序。冒泡排序需要
N(N-1)/2
交換來完全排序一個N
數字數組,因此,對於一個 的數組N=3
,我們應該能夠使用上述電路的 3 個副本對其進行排序。得到的電路如下所示——我用紅色方塊突出顯示了 3 個交換電路。的解決方案
N=4
可以遵循與 的解決方案相同的邏輯N=3
,但有 6 個比較而不是只有 3 個。在 2 個交換電路列的左側添加另一列 3 個交換電路,並適當地連接它們。當然,你可以繼續追求更大的
N
;N=5
需要 10 次交換,每次交換 5 個籌碼,需要 50 個籌碼。您可以在此處查看和使用本文中概述的電路。