From 37350b0fbfe69866f4399081c4639fb036dbfd08 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 30 Jun 2020 22:05:40 -0400 Subject: Tests and fixes for layer 5 --- spec/dzref | 16 ++++++++-------- spec/reference.bqn | 14 +++++++------- test/testref.bqn | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 15 deletions(-) diff --git a/spec/dzref b/spec/dzref index 00f6c85e..99d8789d 100755 --- a/spec/dzref +++ b/spec/dzref @@ -165,7 +165,7 @@ JoinTo←{ s←𝕨Pair○≒𝕩 a←1⌈´k←≠¨s ! ∧´1β‰₯a-k - c←(a-k)+⟜(↕a-1)⊸⊏¨s + c←(kΒ¬a)+⟜(↕a-1)⊸⊏¨s ! ≑´c l←+Β΄(a=k)βŠ£β—Ά1β€Ώ(βŠ‘βŠ’)Β¨s (⟨lβŸ©βˆΎβŠ‘c)β₯Šπ•¨βˆΎβ—‹β₯Šπ•© @@ -175,18 +175,19 @@ Take←{ T←{ ! Int 𝕨 l←≠𝕩 - i←((𝕨<0)×𝕨+l)+↕|𝕨 - ((l+1)|Β―1⌈l⌊i)βŠπ•© JoinTo (1 Cell 𝕩)β₯ŠType 𝕩 + i←(l+1)|Β―1⌈l⌊((𝕨<0)×𝕨+l)+↕|𝕨 + i⊏JoinTo⟜(1⊸Cellβ₯ŠType)⍟(0∨´l=i)𝕩 } 𝕨 T _onAxes_ 0 (⟨1⟩β₯ŠΛœ0βŒˆπ•¨-β—‹β‰ βŠ’)βŠΈβˆΎβˆ˜β‰’βŠΈβ₯Šπ•© } Prefixes ← {!1≀≠≒𝕩 β‹„ (↕1+≠𝕩)TakeΒ¨<𝕩} ↑ ← Prefixes ⊘ Take Drop←{ - s←(≠𝕨)(βŠ£β†‘βŠ’βˆΎβ₯ŠΛœ0⌈-βŸœβ‰ )≒𝕩 + s←(≠𝕨)(βŠ£β†‘βŠ’βˆΎΛœ1β₯ŠΛœ0⌈-βŸœβ‰ )≒𝕩 ((sΓ—Β―1⋆𝕨>0)+(-s)⌈sβŒŠπ•¨)↑𝕩 } Suffixes ← {!1≀≠≒𝕩 β‹„ (↕1+≠𝕩)DropΒ¨<𝕩} +↓ ← Suffixes ⊘ Drop Windows←{ ! IsArray 𝕩 @@ -194,12 +195,12 @@ Windows←{ ! 𝕨≀○≠≒𝕩 ! ∧´NatΒ¨β₯Šπ•¨ s←(≠𝕨)↑≒𝕩 - ! βˆ§Β΄π•¨β‰€s - ><Β¨βŠΈβŠβŸœπ•©Β¨s(Β¬+βŒœβ—‹β†•βŠ’)β₯Šπ•¨ + ! βˆ§Β΄π•¨β‰€1+s + 𝕨{(∾⟜(π•¨β‰ βŠΈβ†“β‰’π•©)βˆ˜β‰’β₯Š>)<Β¨βŠΈβŠβŸœπ•©Β¨s(Β¬+βŒœβ—‹β†•βŠ’)β₯Šπ•¨}⍟(0<≠𝕨)𝕩 } Reverse ← {!1≀≠≒𝕩 β‹„ (-β†•βŠΈΒ¬β‰ π•©)βŠπ•©} -Rotate ← {!Nat𝕨 β‹„ l←≠𝕩⋄(l|𝕨+↕l)βŠπ•©} _onAxes_ 0 +Rotate ← {!Int𝕨 β‹„ l←≠𝕩⋄(l|𝕨+↕l)βŠπ•©} _onAxes_ 0 Indices←{ ! 1=≠≒𝕩 @@ -209,7 +210,6 @@ Indices←{ Rep ← Indices⊸⊏ Replicate ← {0<≠≒𝕨}β—Ά(β₯ŠΛœβŸœβ‰ Rep⊒)β€Ώ{!𝕨=○≠𝕩⋄𝕨Rep𝕩} _onAxes_ (1-0=β‰ ) -↓ ← Suffixes ⊘ Drop ↕ ↩ ↕ ⊘ Windows ⌽ ← Reverse ⊘ Rotate / ← Indices ⊘ Replicate diff --git a/spec/reference.bqn b/spec/reference.bqn index 5a6ab5ab..9c82cda1 100644 --- a/spec/reference.bqn +++ b/spec/reference.bqn @@ -269,7 +269,7 @@ JoinTo←{ s←𝕨Pair○≒𝕩 a←1⌈´k←≠¨s ! ∧´1β‰₯a-k - c←(a-k)+⟜(↕a-1)⊸⊏¨s + c←(kΒ¬a)+⟜(↕a-1)⊸⊏¨s ! ≑´c l←+Β΄(a=k)βŠ£β—Ά1β€Ώ(βŠ‘βŠ’)Β¨s (⟨lβŸ©βˆΎβŠ‘c)β₯Šπ•¨βˆΎβ—‹β₯Šπ•© @@ -279,13 +279,13 @@ Take←{ T←{ ! Int 𝕨 l←≠𝕩 - i←((𝕨<0)×𝕨+l)+↕|𝕨 - ((l+1)|Β―1⌈l⌊i)βŠπ•© JoinTo (1 Cell 𝕩)β₯ŠType 𝕩 + i←(l+1)|Β―1⌈l⌊((𝕨<0)×𝕨+l)+↕|𝕨 + i⊏JoinTo⟜(1⊸Cellβ₯ŠType)⍟(∨´l=i)𝕩 } 𝕨 T _onAxes_ 0 (⟨1⟩β₯ŠΛœ0βŒˆπ•¨-β—‹β‰ βŠ’)βŠΈβˆΎβˆ˜β‰’βŠΈβ₯Šπ•© } Drop←{ - s←(≠𝕨)(βŠ£β†‘βŠ’βˆΎβ₯ŠΛœ0⌈-βŸœβ‰ )≒𝕩 + s←(≠𝕨)(βŠ£β†‘βŠ’βˆΎΛœ1β₯ŠΛœ0⌈-βŸœβ‰ )≒𝕩 ((sΓ—Β―1⋆𝕨>0)+(-s)⌈sβŒŠπ•¨)↑𝕩 } Prefixes ← {!1≀≠≒𝕩 β‹„ (↕1+≠𝕩)TakeΒ¨<𝕩} @@ -297,12 +297,12 @@ Windows←{ ! 𝕨≀○≠≒𝕩 ! ∧´NatΒ¨β₯Šπ•¨ s←(≠𝕨)↑≒𝕩 - ! βˆ§Β΄π•¨β‰€s - ><Β¨βŠΈβŠβŸœπ•©Β¨s(Β¬+βŒœβ—‹β†•βŠ’)β₯Šπ•¨ + ! βˆ§Β΄π•¨β‰€1+s + 𝕨{(∾⟜(π•¨β‰ βŠΈβ†“β‰’π•©)βˆ˜β‰’β₯Š>)<Β¨βŠΈβŠβŸœπ•©Β¨s(Β¬+βŒœβ—‹β†•βŠ’)β₯Šπ•¨}⍟(0<≠𝕨)𝕩 } Reverse ← {!1≀≠≒𝕩 β‹„ (-β†•βŠΈΒ¬β‰ π•©)βŠπ•©} -Rotate ← {!Nat𝕨 β‹„ l←≠𝕩⋄(l|𝕨+↕l)βŠπ•©} _onAxes_ 0 +Rotate ← {!Int𝕨 β‹„ l←≠𝕩⋄(l|𝕨+↕l)βŠπ•©} _onAxes_ 0 Indices←{ ! 1=≠≒𝕩 diff --git a/test/testref.bqn b/test/testref.bqn index bedfbfe0..62758027 100644 --- a/test/testref.bqn +++ b/test/testref.bqn @@ -201,4 +201,54 @@ ((0βˆΎΒ¨β†•3)≍3β₯Š0)≑≑`↕2β€Ώ3 βŸ¨βŸ©β‰‘Γ—`⟨⟩ β‰‘βŸœ(!∘0`)3β€Ώ0β€Ώ2β₯Š"" + + ⍝ LAYER 5 + ⍝ [183,230) + (<'a')β‰‘βŠ"abc" + "a"β‰‘βŠβ₯ŠΛ˜"abc" + (<'c')≑2⊏"abc" + (<'c')≑¯1⊏"abc" + "ccc"≑2β€ΏΒ―1β€Ώ2⊏"abc" + ((3-Λœβ†•5)βŠΈβŠβ‰‘2⊸⌽)↕5β€Ώ2 + (0β€Ώ3β₯Š0)β‰‘βŸ¨βŸ©βŠ2β€Ώ3β₯Šβ†•6 + ⟨3β€Ώ0,2β€Ώ1β€Ώ2⟩(Γ—βŸœ5⊸+βŒœΒ΄βˆ˜βŠ£β‰‘βŠ)β₯ŠβŸœ(↕×´)6β€Ώ5 + (2β€Ώ0β₯Š0)β‰‘βŸ¨3β€ΏΒ―1,⟨⟩⟩⊏4β€Ώ3β₯Š0 + 5β€Ώ1(<βŠΈβŠβ‰‘βŠ)↕6β€Ώ2 + ⟨4β€Ώ0,1β€Ώ2β€Ώ3β€Ώ2β€Ώ1β€Ώ0⟩(+⌜´⊸(Γ—βŒœ)β‰‘βŠβŸœ(Γ—βŒœΛœ))+βŒœΛœβ†•5 + "abc"≑3↑"abce" + "e"≑¯1↑"abce" + ""≑0↑"ab" + (<⟜3βŠΈΓ—β†•5)≑5↑↕3 + (6β₯Š0)≑¯6↑↕0 + (≍↕3)≑1↑2β€Ώ3β₯Šβ†•6 + (β†‘βŸœ4≑β₯ŠβŸœ0)↕3 + (≍"abc")≑1↑2β€Ώ3↑"abcd" + (6β₯Š1)(↑≑β₯ŠβŸœβŠ‘)2β€Ώ3β₯Šβ†•6 + (β†•Β¨βˆ˜β†•βˆ˜(1⊸+)β‰‘β†‘βˆ˜β†•)5 + (↑≑((↕4)≍¨2)β₯ŠΒ¨<)3β€Ώ2β₯Š"abcdef" + "d"≑3↓"abcd" + 1β€Ώ2β‰‘βŸœ(Β―3βŠΈβ†“)○↕4β€Ώ2 + 1β€Ώ1β€Ώ3β€Ώ2β€Ώ1≑≒(5β₯Š0)↓↕3β€Ώ2β€Ώ1 + (β†“βˆ˜β†•β‰‘β†•βˆ˜(1⊸+)+βŸœβŒ½β†‘βˆ˜β†•)5 + (↕3β€Ώ4)≑1β†“Β¨βŠβ†•2β€Ώ3β€Ώ4 + (4+βŒœβ—‹β†•2)≑2↕↕5 + ⟨⟩(β†•β‰‘βŠ’)4β€Ώ3β₯Š"abcd" + (0βŠΈβ†•β‰‘(0β‰Λœ1+β‰ )⊸β₯Š)↕6 + (7↕6β€Ώ0β₯Š"")≑0β€Ώ7β€Ώ0β₯Š"" + β‰‘βŸœβŒ½βŸ¨βŸ© + β‰‘βŸœβŒ½"a" + "ba"β‰‘βŸœβŒ½"ab" + (βŒ½β‰‘(1-Λœβ‰ )(-β—‹βŠ‘βˆΎ1β†“βŠ’)βš‡1⊒)↕3β€Ώ2β€Ώ4 + β‰‘βŸœβŒ½β†•β†•3 + ∧´5(βŒ½β‰‘βŠ’)¨⟨"",β₯Šβˆž,↕5,↕0β€Ώ4,2β€Ώ0β€Ώ3β₯Š""⟩ + ∧´("bcdea"β‰‘βŒ½βŸœ"abcde")Β¨1+5Γ—Β―10β€ΏΒ―2β€ΏΒ―1β€Ώ0β€Ώ1β€Ώ6β€Ώ61 + ∧´⟨1,0β€Ώ2,Β―1β€Ώ1β€Ώ3⟩(βŠ‘βˆ˜βŒ½β‰‘(3βŠΈβ†‘)βŠΈβŠ‘)βš‡Β―1β€Ώβˆž 2β€Ώ3β€Ώ5β₯Š"abcdef" + ⟨⟩(βŒ½β‰‘βŠ’)'a' + 0β€Ώ4≑/1β€Ώ0β€Ώ0β€Ώ0β€Ώ1β€Ώ0 + 1β€Ώ1β€Ώ2≑/0β€Ώ2β€Ώ1 + β‰‘βŸœ/⟨⟩ + "aabbcc"≑2/"abc" + 3β€Ώ3β€Ώ3β€Ώ2β€Ώ2β€Ώ1≑/˜3β€Ώ2β€Ώ1 + (≍1∾¨1β€Ώ2β€Ώ2)≑(↕¨/↕)2β€Ώ3 + ⟨⟩(/β‰‘βŠ’)≍"ab" ⟩ -- cgit v1.2.3