aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-30 19:30:58 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-06-30 19:31:21 -0400
commit723f6a92c6af9a46dfbd066fb18e014868bd6487 (patch)
tree685420c8757ecfe143b68cae8362b5a0acab3a93
parent5cfbc5909bd33b5927f7b1fdb44944819563a385 (diff)
Tests for layer 4; fix βš‡ with non-matching depths
-rwxr-xr-xspec/dzref17
-rw-r--r--spec/reference.bqn7
-rw-r--r--test/testref.bqn46
3 files changed, 46 insertions, 24 deletions
diff --git a/spec/dzref b/spec/dzref
index 997e5d58..00f6c85e 100755
--- a/spec/dzref
+++ b/spec/dzref
@@ -4,7 +4,6 @@ impl ← "β—Ά ← {𝕨((𝕨𝔽𝕩)βŠ‘π•˜){𝔽}𝕩}
√ ← β‹†βŸœ(Γ·2) ⊘ (β‹†βŸœΓ·Λœ)
∧ ← Γ—
∨ ← (+-Γ—)
-> ← (¬≀)
| ← Γ—βŸœΓ— ⊘ {𝕩-π•¨Γ—βŒŠπ•©Γ·π•¨}
_eachm←{
@@ -90,16 +89,13 @@ DropV← {βŠ‘βŸœπ•©Β¨π•¨+↕𝕨-Λœβ‰ π•©}
Cell ← DropVβŸœβ‰’
Pair ← {βŸ¨π•©βŸ©} ⊘ {βŸ¨π•¨,π•©βŸ©}
-Unbox←(0<β‰ βˆ˜β₯Š)β—ΆβŠ’β€Ώ{
- cβ†β‰’βŠ‘π•©
- ! ∧´β₯Š(c≑≒)¨𝕩
- π•©βŠ‘βŸœToArrayΛœβŒœβ†•c
-}
-> ↩ Unbox ⊘ >
_ranks ← {⟨2⟩⊘⟨1,0⟩((⊣-1+|)ΛœβŸœβ‰ βŠ‘Β¨<∘⊒)β₯Šβˆ˜π”½}
_depthOp_←{
neg←0>n←𝕨𝔾_ranks𝕩 β‹„ F←𝔽
- _d←{𝕨(∧´(negβˆ§π•—β‰₯0)∨(0βŒˆπ•—)β‰₯Pair○≑)β—ΆβŸ¨(𝕗+neg)_dΒ¨β‹„FβŸ©π•©}
+ _d←{
+ R←(𝕗+neg)_d
+ 𝕨(2β₯Š(negβˆ§π•—β‰₯0)∨(0βŒˆπ•—)β‰₯Pair○≑)β—Ά(⟨RΒ¨β‹„RβŸœπ•©Β¨βˆ˜βŠ£βŸ©β‰βŸ¨(𝕨R⊒)Β¨βˆ˜βŠ’β‹„F⟩)𝕩
+ }
𝕨 n _d 𝕩
}
βš‡ ← _depthOp_
@@ -125,7 +121,7 @@ _scan←{
` ← _scan
_iterate_←{
n←𝕨𝔾𝕩
- F←𝕨(0⊘1)β—ΆβŸ¨π”½,π•¨π”½βŠ’βŸ©βŠ’
+ fβ†βŠ‘π•¨βŸ¨π”½βŸ©βŠ˜βŸ¨π•¨π”½βŠ’βŸ©π•©
l←u←0
{!Int𝕩⋄l↩lβŒŠπ•©β‹„u↩uβŒˆπ•©}βš‡0 n
a←𝕩⋄_p←{π”½βˆ˜βŠ£`(1+𝕩)β₯Š<a}
@@ -133,7 +129,6 @@ _iterate_←{
(|βŠ‘<⟜0βŠ‘posβ€Ώneg˜)βš‡0 n
}
-≍ ← >∘Pair
βŽ‰ ← _rankOp_
⍟ ← _iterate_
˘ ← βŽ‰Β―1
@@ -319,7 +314,7 @@ ProgressiveIndexOf ← {π•¨βŠβ—‹(β‰Λ˜βŸœOccurrenceCountπ•¨βŠΈβŠ)𝕩}
{
names ← β₯Š"AB"βˆΎβŒœβ€’a
- f_chr ← "!√∧∨|>β‰‘βˆΎβ‰β†‘β†“β†•βŒ½β‰/β‹β’βŠβŠ‘βŠβŠ’βˆŠβ·βŠ”"
+ f_chr ← "!√∧∨|β‰‘βˆΎβ†‘β†“β†•βŒ½β‰/β‹β’βŠβŠ‘βŠβŠ’βˆŠβ·βŠ”"
m_chr ← "˘¨⌜´`"
d_chr ← "βŒΎβŽ‰βš‡βŸβ—Ά"
diff --git a/spec/reference.bqn b/spec/reference.bqn
index 6ecf59d3..5a6ab5ab 100644
--- a/spec/reference.bqn
+++ b/spec/reference.bqn
@@ -196,7 +196,10 @@ Unbox←(0<β‰ βˆ˜β₯Š)β—ΆβŠ’β€Ώ{
_ranks ← {⟨2⟩⊘⟨1,0⟩((⊣-1+|)ΛœβŸœβ‰ βŠ‘Β¨<∘⊒)β₯Šβˆ˜π”½}
_depthOp_←{
neg←0>n←𝕨𝔾_ranks𝕩 β‹„ F←𝔽
- _d←{𝕨(∧´(negβˆ§π•—β‰₯0)∨(0βŒˆπ•—)β‰₯Pair○≑)β—ΆβŸ¨(𝕗+neg)_dΒ¨β‹„FβŸ©π•©}
+ _d←{
+ R←(𝕗+neg)_d
+ 𝕨(2β₯Š(negβˆ§π•—β‰₯0)∨(0βŒˆπ•—)β‰₯Pair○≑)β—Ά(⟨RΒ¨β‹„RβŸœπ•©Β¨βˆ˜βŠ£βŸ©β‰βŸ¨(𝕨R⊒)Β¨βˆ˜βŠ’β‹„F⟩)𝕩
+ }
𝕨 n _d 𝕩
}
_rankOp_←{
@@ -220,7 +223,7 @@ _scan←{
}
_iterate_←{
n←𝕨𝔾𝕩
- F←𝕨(0⊘1)β—ΆβŸ¨π”½,π•¨π”½βŠ’βŸ©βŠ’
+ fβ†βŠ‘π•¨βŸ¨π”½βŸ©βŠ˜βŸ¨π•¨π”½βŠ’βŸ©π•©
l←u←0
{!Int𝕩⋄l↩lβŒŠπ•©β‹„u↩uβŒˆπ•©}βš‡0 n
a←𝕩⋄_p←{π”½βˆ˜βŠ£`(1+𝕩)β₯Š<a}
diff --git a/test/testref.bqn b/test/testref.bqn
index 066ca277..bedfbfe0 100644
--- a/test/testref.bqn
+++ b/test/testref.bqn
@@ -1,8 +1,7 @@
⍝ Tests of primitive functionality
⍝ Ordering matches the reference implementations
-‒←/¬∾´⟨
-{⟨
+‒←/¬⟨
⍝ LAYER 0
⍝ [0,34)
0≑¯2+2
@@ -39,9 +38,7 @@
βŸ¨βŸ©β‰‘β†•0
⟨0βŸ©β‰‘β†•1
⟨0,1,2,3,4,5,6βŸ©β‰‘β†•7
-βŸ©βŠ£π•©}⍟1 34β₯Š1
-{⟨
⍝ LAYER 1
⍝ [34,56)
3≑4>β—Ά+β€Ώ-1
@@ -77,8 +74,6 @@
1≑¬0
2≑¬¯1
0≑3Β¬4
-βŸ©βŠ£π•©}⍟1 32β₯Š1
-{⟨
2≑4Β¬3
4≑5Β¬2
0≑|0
@@ -118,9 +113,7 @@
(2βŠΈβŠ‘β‰‘βŠ’Β΄)"a"β€Ώ2β€Ώ(3β€Ώ"d")
2(βŠ£β‰‘βŠ’Β΄)"a"β€Ώ2β€Ώ(3β€Ώ"d")
7β€Ώ10≑+¨´⟨⟨2,3⟩,⟨5,7⟩⟩
-βŸ©βŠ£π•©}⍟1 38β₯Š1
-{⟨
⍝ LAYER 2
⍝ [104,117)
βŸ¨βŸ©β‰‘βŸ¨βŸ©βˆΎ""
@@ -136,9 +129,7 @@
3(+¨≑+⌜)↕6
3β€Ώ4β€Ώ5β€Ώ6β€Ώ6≑{F:F⍟(×≑)⊸∾⟜β₯ŠΒ΄π•©}⟨2,1⟩+⟨⟨⟨⟨1,2⟩,3⟩,4⟩,5⟩
(=¨⟜(β₯ŠβŸœ(↕×´)3β€Ώ4)≑(↕4)=⌜˜4|⊒)1β€Ώ6β€Ώ8
-βŸ©βŠ£π•©}⍟1 13β₯Š1
-{⟨
⍝ LAYER 3
⍝ [117,152)
2β‰‘βŠ‘βŸ¨2⟩
@@ -176,5 +167,38 @@
(1¨≑-β—‹β‰‘ΛœβŸœβ†•Β¨)⟨0,⟨⟩,⟨1⟩,2,⟨3,4⟩⟩
2β‰‘β‰‘βŸ¨5,⟨'c',+,2⟩⟩
0β‰‘β‰‘βŠ‘βŸ¨-⟩
-βŸ©βŠ£π•©}⍟1 35β₯Š1
+
+ ⍝ LAYER 4
+ ⍝ [152,183)
+ β‰‘βŸœ><'a'
+ β‰‘βŸœ><∞
+ β‰‘βŸœ>↕5
+ β‰‘βŸœ>5β€Ώ3β₯Š2
+ 2β€Ώ3β€Ώ2≑≒>↕2β€Ώ3
+ ((4β₯Š2)⊸β₯Šβ‰‘(>2β€Ώ2β₯ŠΒ·<2β€Ώ2β₯ŠβŠ’))"abcd"
+ (βŠ’β‰‘>∘<)5β€Ώ3β₯Šβ†•15
+ (βŠ’β‰‘(><Β¨))5β€Ώ3β₯Šβ†•15
+ (β₯Šβ‰‘≍)'a'
+ (β₯Šβ‰‘≍)<'a'
+ (1β€Ώ2⊸β₯Šβ‰‘≍)"ab"
+ 1β€Ώ2≑1≍2
+ 2β€Ώ1(≍≑2β€Ώ2β₯ŠβˆΎ)4β€Ώ3
+ (β‰βŸœ<β‰‘β‰Λœ)'a'
+ (β‰Λ˜Λœβ₯ŠΛ˜1β€Ώ5β€Ώ9)β‰‘βŒ½βŽ‰2⊸+β₯ŠβŸœ(↕×´)3β€Ώ2β€Ώ1
+ (↕4)(Γ—βŒœβ‰‘Γ—βŽ‰0β€Ώ2)↕5
+ (↕4)(β‹†ΛœβŒœΛœβ‰‘β‹†βŽ‰βˆžβ€ΏΒ―4)↕5
+ (⟨2⟩⊸∾⍟(2β€Ώ2β₯Š0β€Ώ1β€Ώ1β€Ώ1)2β€Ώ3)β‰‘β‰’Β¨β‰βŽ‰(βŒŠβ—‹(β‰ β‰’))βŒœΛœβŸ¨β†•3,2β€Ώ3β₯Šβ†•6⟩
+ (2=βŒœβ—‹β†•3)≑(2β€Ώ4β₯Š"abc")β‰‘βŽ‰1(2β€Ώ3β€Ώ4β₯Š"abc")
+ ⟨0,0βŸ©β‰‘(2β€Ώ4β₯Š"abc")β‰‘βŽ‰Β―1(2β€Ώ3β€Ώ4β₯Š"abc")
+ ⟨5,⟨15,1βŸ©βŸ©β‰‘+Β΄βš‡1⟨⟨3,2⟩,⟨⟨4,5,6⟩,⟨1⟩⟩⟩
+ 5β€Ώ6β€Ώ15β‰‘βˆΎΒ΄+Β΄βš‡1⟨⟨0,1⟩,⟨⟨⟩⟩⟩β₯ŠβŠΈβˆΎβš‡Β―2β€Ώ1⟨⟨2,3⟩,⟨4,5,6⟩⟩
+ 4≑2+⍟¯1 6
+ (2×↕7)≑2+⍟(Β―3+↕7)6
+ (3βŒŠβ†•5)≑{i←0β‹„r←{i+↩1β‹„1+𝕩}⍟(↕4)𝕩⋄r∾i}0
+ (+βŒœΛœβ‰‘Β·>1+⍟⊒⊒)↕5
+ 0β€Ώ1β€Ώ3β€Ώ6β€Ώ10≑+`↕5
+ (-0β€Ώ1β€Ώ3β€Ώ6β€Ώ10)≑-`↕5
+ ((0βˆΎΒ¨β†•3)≍3β₯Š0)≑≑`↕2β€Ώ3
+ βŸ¨βŸ©β‰‘Γ—`⟨⟩
+ β‰‘βŸœ(!∘0`)3β€Ώ0β€Ώ2β₯Š""
⟩