Comment detail
「組合せ型の最小完全ハッシュ関数」の逆関数 (Nested Flatten)This comment is reply for 1653 sumim: Squeak Smalltalk で。(「組合せ型の最小完全ハッシュ関数」の逆関数). Go to thread root.
shiro さん、tell さんのを読んで、上のは少々冗長だと遅まきながら気づきました(^_^;)。
1 2 3 4 5 6 7 8 9 | | val n r pat c |
n := 5. r := 2. val := 8.
pat := Array new: n withAll: 0.
1 to: n do: [:idx |
val >= (c := n - idx take: r) ifTrue: [
pat at: idx put: 1.
r := r - 1.
val := val - c]].
^pat "=> #(1 0 1 0 0) "
|





sumim
#1669()
[
Smalltalk
]
Rating0/0=0.00
| n r val pat | n := 6. r := 3. val := 18. pat := Array new: n withAll: 0. r to: 1 by: -1 do: [:r0 | | idx last | idx := (1 to: n - (r - r0)) findLast: [:n0 | val >= (last := n0 - 1 take: r0)]. pat at: n - idx + 1 put: 1. val := val - last]. ^pat "=> #(1 1 0 1 0 0) "Rating0/0=0.00-0+