apl: ⊥ decode / ⊤ encode (mixed-radix; +11)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
- apl-decode: Horner reduce; scalar base broadcasts to digit length - apl-encode: right-to-left modulo + floor-div - 24 60 60 ⊥ 2 3 4 → 7384, 24 60 60 ⊤ 7384 → 2 3 4 - pipeline 132/132
This commit is contained in:
@@ -244,7 +244,7 @@ still need work to run as-written. Phase 10 closes both.
|
||||
union; `A ∩ B` is intersection (members of A that are also in B).
|
||||
Add `apl-unique`, `apl-union`, `apl-intersect`. Tests cover empty,
|
||||
single, repeats, mixed numerics.
|
||||
- [ ] **`⊥` decode / `⊤` encode** — `B ⊥ V` evaluates digits `V` in
|
||||
- [x] **`⊥` decode / `⊤` encode** — `B ⊥ V` evaluates digits `V` in
|
||||
base(s) `B` (Horner-style); `B ⊤ N` is the inverse, returning the
|
||||
digits of `N` in base(s) `B`. Both broadcast `B` as scalar or
|
||||
conformable vector. Add `apl-decode` and `apl-encode`. Tests:
|
||||
@@ -288,6 +288,7 @@ data; format for string templating.
|
||||
|
||||
_Newest first._
|
||||
|
||||
- 2026-05-08: Phase 10 step 3 — `⊥` decode / `⊤` encode. apl-decode (Horner reduce over indices, base[i]>0; scalar base broadcasts to digit length); apl-encode (right-to-left modulo+floor-div via reduce). Mixed-radix HMS works: `24 60 60 ⊥ 2 3 4 → 7384`, `24 60 60 ⊤ 7384 → 2 3 4`. Round-trips exact. Wired ⊥ ⊤ into apl-dyadic-fn. +11 tests; pipeline 132/132
|
||||
- 2026-05-08: Phase 10 step 2 — `∪` unique / `∩` intersection. apl-unique (monadic, dedup keeping first-occurrence order via reduce+index-of), apl-union (dyadic, dedup'd A then B-elements-not-in-A), apl-intersect (dyadic, A elements that are also in B, preserves left order). Wired ∪ into both apl-monadic-fn and apl-dyadic-fn cond chains; ∩ into apl-dyadic-fn. +12 tests; pipeline 121/121
|
||||
- 2026-05-08: Phase 10 step 1 — `⍸` where. apl-where (monadic, indices of truthy cells, ⎕IO-respecting) + apl-interval-index (dyadic, count of breaks ≤ y; broadcasts over Y vector or scalar). Wired into apl-monadic-fn / apl-dyadic-fn (cond clauses inserted as proper siblings via sx_insert_child after sx_insert_near silently wrapped multi-form sources in `(begin …)`). +10 tests; pipeline 109/109
|
||||
- 2026-05-08: Phase 10 added — fill runtime gaps (⍸ ∪ ∩ ⊥ ⊤ ⊆ ⍎) + life.apl and quicksort.apl as-written
|
||||
|
||||
Reference in New Issue
Block a user