Drawing the Peano curve











up vote
12
down vote

favorite












Introduction



In geometry, the Peano curve is the first example of a space-filling curve to be discovered, by Giuseppe Peano in 1890. Peano's curve is a surjective, continuous function from the unit interval onto the unit square, however it is not injective. Peano was motivated by an earlier result of Georg Cantor that these two sets have the same cardinality. Because of this example, some authors use the phrase "Peano curve" to refer more generally to any space-filling curve.



Challenge



The program takes an input which is an integer n, and outputs a drawing representing the nth iteration of the Peano curve, starting from the sideways 2 shown in the leftmost part of this image:
Three iterations of the Peano curve



Input



An integer n giving the iteration number of the Peano curve.
Optional, additional input is described in the bonuses section.



Output



A drawing of the nth iteration of the Peano curve. The drawing can be both ASCII art or a "real" drawing, whichever is easiest or shortest.



Rules




  • The input and output can be given in any convenient format (choose the most appropriate format for your language/solution).

  • No need to handle negative values or invalid input

  • Either a full program or a function are acceptable.

  • If possible, please include a link to an online testing environment so other people can try out your code!


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply, and the shortest code (in bytes) wins.


Bonuses



Since this shouldn't be a walk in the park (at least in most languages I can think of), bonus points are awarded for the following:




  • -100 bytes if your code generates a gif of the construction of the Peano curves up to n.

  • -100 bytes if your code draws a space-filling curve for any rectangular shape (the Peano curve only works for squares, obviously). You can assume that the input then takes on the form n l w where n has the same meaning as before (the number of the iteration), but where l and w become the length and width of the rectangle in which to draw the curve. If l == w, this becomes the regular Peano curve.


Negative scores are allowed (but are they possible...).



Edit



Please include the output of your program in the solution for n == 3 (l == w == 1).










share|improve this question









New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1




    Welcome to PPCG :) This, at a glance, looks like a nice first challenge. Although it feels familiar, I think the challenge I might be thinking of was an ASCII art one. Note, though, that we strongly discourage bonuses and that there will be golfing languages that can achieve this in less than 100 bytes. Also, and most importantly, you need a winning criterion. Given that your bonuses subtract bytes from a solution's score, I suspect you intend this to be code-golf.
    – Shaggy
    yesterday








  • 4




    Yeah, I don't think the bonuses are a good idea, especially since there at least two animation-capable ASCII-art focused golflangs
    – ASCII-only
    yesterday






  • 2




    Oh also what would n be used for if l and w are also inputs??????????? And would the Peano curve be a special case - it's not the only spacefilling curve, so some algorithms may have to specialcase it
    – ASCII-only
    yesterday








  • 2




    Also, what stops anyone from making a trivial spacefilling curve (just zigzagging back and forth) for non-square dimensions
    – ASCII-only
    yesterday






  • 6




    Bonuses in code golf is one of the most agreed-upon things to avoid when writing challenges. I suggest you remove them and decide which is to be the canonical version of the challenge.
    – lirtosiast
    yesterday















up vote
12
down vote

favorite












Introduction



In geometry, the Peano curve is the first example of a space-filling curve to be discovered, by Giuseppe Peano in 1890. Peano's curve is a surjective, continuous function from the unit interval onto the unit square, however it is not injective. Peano was motivated by an earlier result of Georg Cantor that these two sets have the same cardinality. Because of this example, some authors use the phrase "Peano curve" to refer more generally to any space-filling curve.



Challenge



The program takes an input which is an integer n, and outputs a drawing representing the nth iteration of the Peano curve, starting from the sideways 2 shown in the leftmost part of this image:
Three iterations of the Peano curve



Input



An integer n giving the iteration number of the Peano curve.
Optional, additional input is described in the bonuses section.



Output



A drawing of the nth iteration of the Peano curve. The drawing can be both ASCII art or a "real" drawing, whichever is easiest or shortest.



Rules




  • The input and output can be given in any convenient format (choose the most appropriate format for your language/solution).

  • No need to handle negative values or invalid input

  • Either a full program or a function are acceptable.

  • If possible, please include a link to an online testing environment so other people can try out your code!


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply, and the shortest code (in bytes) wins.


Bonuses



Since this shouldn't be a walk in the park (at least in most languages I can think of), bonus points are awarded for the following:




  • -100 bytes if your code generates a gif of the construction of the Peano curves up to n.

  • -100 bytes if your code draws a space-filling curve for any rectangular shape (the Peano curve only works for squares, obviously). You can assume that the input then takes on the form n l w where n has the same meaning as before (the number of the iteration), but where l and w become the length and width of the rectangle in which to draw the curve. If l == w, this becomes the regular Peano curve.


Negative scores are allowed (but are they possible...).



Edit



Please include the output of your program in the solution for n == 3 (l == w == 1).










share|improve this question









New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1




    Welcome to PPCG :) This, at a glance, looks like a nice first challenge. Although it feels familiar, I think the challenge I might be thinking of was an ASCII art one. Note, though, that we strongly discourage bonuses and that there will be golfing languages that can achieve this in less than 100 bytes. Also, and most importantly, you need a winning criterion. Given that your bonuses subtract bytes from a solution's score, I suspect you intend this to be code-golf.
    – Shaggy
    yesterday








  • 4




    Yeah, I don't think the bonuses are a good idea, especially since there at least two animation-capable ASCII-art focused golflangs
    – ASCII-only
    yesterday






  • 2




    Oh also what would n be used for if l and w are also inputs??????????? And would the Peano curve be a special case - it's not the only spacefilling curve, so some algorithms may have to specialcase it
    – ASCII-only
    yesterday








  • 2




    Also, what stops anyone from making a trivial spacefilling curve (just zigzagging back and forth) for non-square dimensions
    – ASCII-only
    yesterday






  • 6




    Bonuses in code golf is one of the most agreed-upon things to avoid when writing challenges. I suggest you remove them and decide which is to be the canonical version of the challenge.
    – lirtosiast
    yesterday













up vote
12
down vote

favorite









up vote
12
down vote

favorite











Introduction



In geometry, the Peano curve is the first example of a space-filling curve to be discovered, by Giuseppe Peano in 1890. Peano's curve is a surjective, continuous function from the unit interval onto the unit square, however it is not injective. Peano was motivated by an earlier result of Georg Cantor that these two sets have the same cardinality. Because of this example, some authors use the phrase "Peano curve" to refer more generally to any space-filling curve.



Challenge



The program takes an input which is an integer n, and outputs a drawing representing the nth iteration of the Peano curve, starting from the sideways 2 shown in the leftmost part of this image:
Three iterations of the Peano curve



Input



An integer n giving the iteration number of the Peano curve.
Optional, additional input is described in the bonuses section.



Output



A drawing of the nth iteration of the Peano curve. The drawing can be both ASCII art or a "real" drawing, whichever is easiest or shortest.



Rules




  • The input and output can be given in any convenient format (choose the most appropriate format for your language/solution).

  • No need to handle negative values or invalid input

  • Either a full program or a function are acceptable.

  • If possible, please include a link to an online testing environment so other people can try out your code!


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply, and the shortest code (in bytes) wins.


Bonuses



Since this shouldn't be a walk in the park (at least in most languages I can think of), bonus points are awarded for the following:




  • -100 bytes if your code generates a gif of the construction of the Peano curves up to n.

  • -100 bytes if your code draws a space-filling curve for any rectangular shape (the Peano curve only works for squares, obviously). You can assume that the input then takes on the form n l w where n has the same meaning as before (the number of the iteration), but where l and w become the length and width of the rectangle in which to draw the curve. If l == w, this becomes the regular Peano curve.


Negative scores are allowed (but are they possible...).



Edit



Please include the output of your program in the solution for n == 3 (l == w == 1).










share|improve this question









New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











Introduction



In geometry, the Peano curve is the first example of a space-filling curve to be discovered, by Giuseppe Peano in 1890. Peano's curve is a surjective, continuous function from the unit interval onto the unit square, however it is not injective. Peano was motivated by an earlier result of Georg Cantor that these two sets have the same cardinality. Because of this example, some authors use the phrase "Peano curve" to refer more generally to any space-filling curve.



Challenge



The program takes an input which is an integer n, and outputs a drawing representing the nth iteration of the Peano curve, starting from the sideways 2 shown in the leftmost part of this image:
Three iterations of the Peano curve



Input



An integer n giving the iteration number of the Peano curve.
Optional, additional input is described in the bonuses section.



Output



A drawing of the nth iteration of the Peano curve. The drawing can be both ASCII art or a "real" drawing, whichever is easiest or shortest.



Rules




  • The input and output can be given in any convenient format (choose the most appropriate format for your language/solution).

  • No need to handle negative values or invalid input

  • Either a full program or a function are acceptable.

  • If possible, please include a link to an online testing environment so other people can try out your code!


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply, and the shortest code (in bytes) wins.


Bonuses



Since this shouldn't be a walk in the park (at least in most languages I can think of), bonus points are awarded for the following:




  • -100 bytes if your code generates a gif of the construction of the Peano curves up to n.

  • -100 bytes if your code draws a space-filling curve for any rectangular shape (the Peano curve only works for squares, obviously). You can assume that the input then takes on the form n l w where n has the same meaning as before (the number of the iteration), but where l and w become the length and width of the rectangle in which to draw the curve. If l == w, this becomes the regular Peano curve.


Negative scores are allowed (but are they possible...).



Edit



Please include the output of your program in the solution for n == 3 (l == w == 1).







code-golf ascii-art graphical-output geometry fractal






share|improve this question









New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday





















New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









Peiffap

726




726




New contributor




Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Peiffap is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 1




    Welcome to PPCG :) This, at a glance, looks like a nice first challenge. Although it feels familiar, I think the challenge I might be thinking of was an ASCII art one. Note, though, that we strongly discourage bonuses and that there will be golfing languages that can achieve this in less than 100 bytes. Also, and most importantly, you need a winning criterion. Given that your bonuses subtract bytes from a solution's score, I suspect you intend this to be code-golf.
    – Shaggy
    yesterday








  • 4




    Yeah, I don't think the bonuses are a good idea, especially since there at least two animation-capable ASCII-art focused golflangs
    – ASCII-only
    yesterday






  • 2




    Oh also what would n be used for if l and w are also inputs??????????? And would the Peano curve be a special case - it's not the only spacefilling curve, so some algorithms may have to specialcase it
    – ASCII-only
    yesterday








  • 2




    Also, what stops anyone from making a trivial spacefilling curve (just zigzagging back and forth) for non-square dimensions
    – ASCII-only
    yesterday






  • 6




    Bonuses in code golf is one of the most agreed-upon things to avoid when writing challenges. I suggest you remove them and decide which is to be the canonical version of the challenge.
    – lirtosiast
    yesterday














  • 1




    Welcome to PPCG :) This, at a glance, looks like a nice first challenge. Although it feels familiar, I think the challenge I might be thinking of was an ASCII art one. Note, though, that we strongly discourage bonuses and that there will be golfing languages that can achieve this in less than 100 bytes. Also, and most importantly, you need a winning criterion. Given that your bonuses subtract bytes from a solution's score, I suspect you intend this to be code-golf.
    – Shaggy
    yesterday








  • 4




    Yeah, I don't think the bonuses are a good idea, especially since there at least two animation-capable ASCII-art focused golflangs
    – ASCII-only
    yesterday






  • 2




    Oh also what would n be used for if l and w are also inputs??????????? And would the Peano curve be a special case - it's not the only spacefilling curve, so some algorithms may have to specialcase it
    – ASCII-only
    yesterday








  • 2




    Also, what stops anyone from making a trivial spacefilling curve (just zigzagging back and forth) for non-square dimensions
    – ASCII-only
    yesterday






  • 6




    Bonuses in code golf is one of the most agreed-upon things to avoid when writing challenges. I suggest you remove them and decide which is to be the canonical version of the challenge.
    – lirtosiast
    yesterday








1




1




Welcome to PPCG :) This, at a glance, looks like a nice first challenge. Although it feels familiar, I think the challenge I might be thinking of was an ASCII art one. Note, though, that we strongly discourage bonuses and that there will be golfing languages that can achieve this in less than 100 bytes. Also, and most importantly, you need a winning criterion. Given that your bonuses subtract bytes from a solution's score, I suspect you intend this to be code-golf.
– Shaggy
yesterday






Welcome to PPCG :) This, at a glance, looks like a nice first challenge. Although it feels familiar, I think the challenge I might be thinking of was an ASCII art one. Note, though, that we strongly discourage bonuses and that there will be golfing languages that can achieve this in less than 100 bytes. Also, and most importantly, you need a winning criterion. Given that your bonuses subtract bytes from a solution's score, I suspect you intend this to be code-golf.
– Shaggy
yesterday






4




4




Yeah, I don't think the bonuses are a good idea, especially since there at least two animation-capable ASCII-art focused golflangs
– ASCII-only
yesterday




Yeah, I don't think the bonuses are a good idea, especially since there at least two animation-capable ASCII-art focused golflangs
– ASCII-only
yesterday




2




2




Oh also what would n be used for if l and w are also inputs??????????? And would the Peano curve be a special case - it's not the only spacefilling curve, so some algorithms may have to specialcase it
– ASCII-only
yesterday






Oh also what would n be used for if l and w are also inputs??????????? And would the Peano curve be a special case - it's not the only spacefilling curve, so some algorithms may have to specialcase it
– ASCII-only
yesterday






2




2




Also, what stops anyone from making a trivial spacefilling curve (just zigzagging back and forth) for non-square dimensions
– ASCII-only
yesterday




Also, what stops anyone from making a trivial spacefilling curve (just zigzagging back and forth) for non-square dimensions
– ASCII-only
yesterday




6




6




Bonuses in code golf is one of the most agreed-upon things to avoid when writing challenges. I suggest you remove them and decide which is to be the canonical version of the challenge.
– lirtosiast
yesterday




Bonuses in code golf is one of the most agreed-upon things to avoid when writing challenges. I suggest you remove them and decide which is to be the canonical version of the challenge.
– lirtosiast
yesterday










8 Answers
8






active

oldest

votes

















up vote
4
down vote



accepted










Mathematica, score 60 - 100 - 100 = -140



Graphics[PeanoCurve@a~Reverse~3~Scale~#2]~Animate~{a,1,#,1}&


Pure function. Takes n and {l, w} (width and height) as input, and gives an animated graphic as output. It first creates a nth order Peano curve with PeanoCurve. Since the l = w case still needs to create a Peano curve, we flip the expression at level 3, similar to DavidC's answer; for lw, we just Scale the curve to the rectangle. This curve will still be space-filling, satisfying the second bonus. For the first bonus, we just Animate it over all sizes. Note that OP suggested that this was sufficiently different from DavidC's to warrant its own answer. The result for n = 3, l = w = 1 is as follows:








share|improve this answer





















  • very nice! (with proper orientation too)
    – DavidC
    2 hours ago


















up vote
10
down vote














GFA Basic 3.51 (Atari ST), 156 134 124 bytes



PRO f(n)
DR "MA0,199"
p(n,90)
RET
PRO p(n,a)
I n
n=n-.5
DR "RT",a
p(n,-a)
DR "FD4"
p(n,a)
DR "FD4"
p(n,-a)
DR "LT",a
EN
RET


Each line ends with CR. Once loaded, this program expands to:



PROCEDURE f(n)
DRAW "MA0,199"
p(n,90)
RETURN
PROCEDURE p(n,a)
IF n
n=n-0.5
DRAW "RT",a
p(n,-a)
DRAW "FD4"
p(n,a)
DRAW "FD4"
p(n,-a)
DRAW "LT",a
ENDIF
RETURN


Example output



peano-gfa






share|improve this answer






























    up vote
    10
    down vote














    Perl 6, 117 bytes





    {map ->y{|map {(((++$+y)%2+$++)%3**(y+$^v,*/3...*%3)??$^s[$++%2]!!'│')xx$_*3},<┌ ┐>,$_,<└ ┘>,1},^$_}o*R**3


    Try it online!



    0-indexed. Returns a 2D array of Unicode characters. The basic idea is that for lower rows, the expression



    (x + (x+y)%2) % (3 ** trailing_zeros_in_base3(3*(y+1)))


    yields the pattern



    |....||....||....||....||..  % 3
    ..||....||....||....||....| % 3
    |................||........ % 9
    ..||....||....||....||....| % 3
    |....||....||....||....||.. % 3
    ........||................| % 9
    |....||....||....||....||.. % 3
    ..||....||....||....||....| % 3
    |.......................... % 27


    For upper rows, the expression is



    (x + (x+y+1)%2) % (3 ** trailing_zeros_in_base3(3*(y+3**n)))


    Explanation



    { ... }o*R**3  # Feed $_ = 3^n into block

    map ->y{ ... },^$_ # Map y = 0..3^n-1

    |map { ... },<┌ ┐>,$_,<└ ┘>,1 # Map pairs (('┌','┐'),3^n) for upper rows
    # and (('└','┘'),1) for lower rows.
    # Block takes items as s and v

    ( ... )xx$_*3 # Evaluate 3^(n+1) times, returning a list

    (++$+y)%2 # (x+y+1)%2 for upper rows, (x+y)%2 for lower rows
    ( +$++) # Add x
    (y+$^v,*/3...*%3) # Count trailing zeros of 3*(y+v) in base 3
    3** # nth power of 3
    % # Modulo
    ??$^s[$++%2] # If there's a remainder yield chars in s alternately
    !!'│' # otherwise yield '│'





    share|improve this answer






























      up vote
      6
      down vote














      K (ngn/k), 37 27 26 bytes



      {+y,(|'y:x,,>*x),x}/1,&2*


      Try it online!



      returns a boolean matrix



      |'y is syntax specific to ngn/k. other dialects require a : to make an each-ed verb monadic: |:'y






      share|improve this answer



















      • 1




        To make the output more beautiful, highlight all occurences of (if supported by your browser)
        – user202729
        yesterday






      • 3




        @user202729 done - in the footer so it don't affect the byte count
        – ngn
        yesterday


















      up vote
      5
      down vote













      Wolfram Language 83 36 bytes, (possibly -48 bytes with bonus)



      As of version 11.1, PeanoCurve is a built-in.



      My original, clumsy submission wasted many bytes on GeometricTransformation and ReflectionTransform.



      This much reduced version was suggested by alephalpha.
      Reverse was required to orient the output properly.



      Graphics[Reverse/@#&/@PeanoCurve@#]&


      Example 36 bytes



      Graphics[Reverse/@#&/@PeanoCurve@#]&[3]


      Peano curve





      Bonus



      If this qualifies for the 100 pt bonus, it weighs in at 52 - 100 = -48
      The code [5] was not counted, only the pure function.



      Table[Graphics[Reverse/@#&/@PeanoCurve@#]&@k{k,#}&[5]


      sequence






      share|improve this answer























      • Graphics[Reverse/@#&/@PeanoCurve@#]&
        – alephalpha
        yesterday










      • It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
        – Peiffap
        7 hours ago




















      up vote
      4
      down vote













      BBC BASIC, 142 ASCII characters (130 bytes tokenised)



      Download interpreter at http://www.bbcbasic.co.uk/bbcwin/download.html



      I.m:q=FNh(m,8,8,0)END
      DEFFNh(n,x,y,i)
      IFn F.i=0TO8q=FNh(n-1,x-i MOD3MOD2*2*x,y-i DIV3MOD2*2*y,i)DRAWBY(1AND36/2^i)*x,y*(12653/3^i MOD3-1)N.
      =0


      enter image description here






      share|improve this answer




























        up vote
        4
        down vote













        HTML+SVG+JS, 224 213 bytes



        The output is mirrored horizontally.



        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)


        Try it online! (prints the HTML)






        (
        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
        )(3)








        share|improve this answer






























          up vote
          3
          down vote













          Logo, 89 bytes



          to p:n:a
          if:n>0[rt:a
          p:n-1 0-:a
          fw 5
          p:n-1:a
          fw 5
          p:n-1 0-:a
          lt:a]end
          to f:n
          p:n*2 90
          end


          Port of @Arnauld's Atari BASIC answer. To use, do something like this:



          reset
          f 3





          share|improve this answer





















            Your Answer





            StackExchange.ifUsing("editor", function () {
            return StackExchange.using("mathjaxEditing", function () {
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
            });
            });
            }, "mathjax-editing");

            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "200"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            Peiffap is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f176168%2fdrawing-the-peano-curve%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            8 Answers
            8






            active

            oldest

            votes








            8 Answers
            8






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            4
            down vote



            accepted










            Mathematica, score 60 - 100 - 100 = -140



            Graphics[PeanoCurve@a~Reverse~3~Scale~#2]~Animate~{a,1,#,1}&


            Pure function. Takes n and {l, w} (width and height) as input, and gives an animated graphic as output. It first creates a nth order Peano curve with PeanoCurve. Since the l = w case still needs to create a Peano curve, we flip the expression at level 3, similar to DavidC's answer; for lw, we just Scale the curve to the rectangle. This curve will still be space-filling, satisfying the second bonus. For the first bonus, we just Animate it over all sizes. Note that OP suggested that this was sufficiently different from DavidC's to warrant its own answer. The result for n = 3, l = w = 1 is as follows:








            share|improve this answer





















            • very nice! (with proper orientation too)
              – DavidC
              2 hours ago















            up vote
            4
            down vote



            accepted










            Mathematica, score 60 - 100 - 100 = -140



            Graphics[PeanoCurve@a~Reverse~3~Scale~#2]~Animate~{a,1,#,1}&


            Pure function. Takes n and {l, w} (width and height) as input, and gives an animated graphic as output. It first creates a nth order Peano curve with PeanoCurve. Since the l = w case still needs to create a Peano curve, we flip the expression at level 3, similar to DavidC's answer; for lw, we just Scale the curve to the rectangle. This curve will still be space-filling, satisfying the second bonus. For the first bonus, we just Animate it over all sizes. Note that OP suggested that this was sufficiently different from DavidC's to warrant its own answer. The result for n = 3, l = w = 1 is as follows:








            share|improve this answer





















            • very nice! (with proper orientation too)
              – DavidC
              2 hours ago













            up vote
            4
            down vote



            accepted







            up vote
            4
            down vote



            accepted






            Mathematica, score 60 - 100 - 100 = -140



            Graphics[PeanoCurve@a~Reverse~3~Scale~#2]~Animate~{a,1,#,1}&


            Pure function. Takes n and {l, w} (width and height) as input, and gives an animated graphic as output. It first creates a nth order Peano curve with PeanoCurve. Since the l = w case still needs to create a Peano curve, we flip the expression at level 3, similar to DavidC's answer; for lw, we just Scale the curve to the rectangle. This curve will still be space-filling, satisfying the second bonus. For the first bonus, we just Animate it over all sizes. Note that OP suggested that this was sufficiently different from DavidC's to warrant its own answer. The result for n = 3, l = w = 1 is as follows:








            share|improve this answer












            Mathematica, score 60 - 100 - 100 = -140



            Graphics[PeanoCurve@a~Reverse~3~Scale~#2]~Animate~{a,1,#,1}&


            Pure function. Takes n and {l, w} (width and height) as input, and gives an animated graphic as output. It first creates a nth order Peano curve with PeanoCurve. Since the l = w case still needs to create a Peano curve, we flip the expression at level 3, similar to DavidC's answer; for lw, we just Scale the curve to the rectangle. This curve will still be space-filling, satisfying the second bonus. For the first bonus, we just Animate it over all sizes. Note that OP suggested that this was sufficiently different from DavidC's to warrant its own answer. The result for n = 3, l = w = 1 is as follows:









            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 4 hours ago









            LegionMammal978

            15k41752




            15k41752












            • very nice! (with proper orientation too)
              – DavidC
              2 hours ago


















            • very nice! (with proper orientation too)
              – DavidC
              2 hours ago
















            very nice! (with proper orientation too)
            – DavidC
            2 hours ago




            very nice! (with proper orientation too)
            – DavidC
            2 hours ago










            up vote
            10
            down vote














            GFA Basic 3.51 (Atari ST), 156 134 124 bytes



            PRO f(n)
            DR "MA0,199"
            p(n,90)
            RET
            PRO p(n,a)
            I n
            n=n-.5
            DR "RT",a
            p(n,-a)
            DR "FD4"
            p(n,a)
            DR "FD4"
            p(n,-a)
            DR "LT",a
            EN
            RET


            Each line ends with CR. Once loaded, this program expands to:



            PROCEDURE f(n)
            DRAW "MA0,199"
            p(n,90)
            RETURN
            PROCEDURE p(n,a)
            IF n
            n=n-0.5
            DRAW "RT",a
            p(n,-a)
            DRAW "FD4"
            p(n,a)
            DRAW "FD4"
            p(n,-a)
            DRAW "LT",a
            ENDIF
            RETURN


            Example output



            peano-gfa






            share|improve this answer



























              up vote
              10
              down vote














              GFA Basic 3.51 (Atari ST), 156 134 124 bytes



              PRO f(n)
              DR "MA0,199"
              p(n,90)
              RET
              PRO p(n,a)
              I n
              n=n-.5
              DR "RT",a
              p(n,-a)
              DR "FD4"
              p(n,a)
              DR "FD4"
              p(n,-a)
              DR "LT",a
              EN
              RET


              Each line ends with CR. Once loaded, this program expands to:



              PROCEDURE f(n)
              DRAW "MA0,199"
              p(n,90)
              RETURN
              PROCEDURE p(n,a)
              IF n
              n=n-0.5
              DRAW "RT",a
              p(n,-a)
              DRAW "FD4"
              p(n,a)
              DRAW "FD4"
              p(n,-a)
              DRAW "LT",a
              ENDIF
              RETURN


              Example output



              peano-gfa






              share|improve this answer

























                up vote
                10
                down vote










                up vote
                10
                down vote










                GFA Basic 3.51 (Atari ST), 156 134 124 bytes



                PRO f(n)
                DR "MA0,199"
                p(n,90)
                RET
                PRO p(n,a)
                I n
                n=n-.5
                DR "RT",a
                p(n,-a)
                DR "FD4"
                p(n,a)
                DR "FD4"
                p(n,-a)
                DR "LT",a
                EN
                RET


                Each line ends with CR. Once loaded, this program expands to:



                PROCEDURE f(n)
                DRAW "MA0,199"
                p(n,90)
                RETURN
                PROCEDURE p(n,a)
                IF n
                n=n-0.5
                DRAW "RT",a
                p(n,-a)
                DRAW "FD4"
                p(n,a)
                DRAW "FD4"
                p(n,-a)
                DRAW "LT",a
                ENDIF
                RETURN


                Example output



                peano-gfa






                share|improve this answer















                GFA Basic 3.51 (Atari ST), 156 134 124 bytes



                PRO f(n)
                DR "MA0,199"
                p(n,90)
                RET
                PRO p(n,a)
                I n
                n=n-.5
                DR "RT",a
                p(n,-a)
                DR "FD4"
                p(n,a)
                DR "FD4"
                p(n,-a)
                DR "LT",a
                EN
                RET


                Each line ends with CR. Once loaded, this program expands to:



                PROCEDURE f(n)
                DRAW "MA0,199"
                p(n,90)
                RETURN
                PROCEDURE p(n,a)
                IF n
                n=n-0.5
                DRAW "RT",a
                p(n,-a)
                DRAW "FD4"
                p(n,a)
                DRAW "FD4"
                p(n,-a)
                DRAW "LT",a
                ENDIF
                RETURN


                Example output



                peano-gfa







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited yesterday

























                answered yesterday









                Arnauld

                69k584291




                69k584291






















                    up vote
                    10
                    down vote














                    Perl 6, 117 bytes





                    {map ->y{|map {(((++$+y)%2+$++)%3**(y+$^v,*/3...*%3)??$^s[$++%2]!!'│')xx$_*3},<┌ ┐>,$_,<└ ┘>,1},^$_}o*R**3


                    Try it online!



                    0-indexed. Returns a 2D array of Unicode characters. The basic idea is that for lower rows, the expression



                    (x + (x+y)%2) % (3 ** trailing_zeros_in_base3(3*(y+1)))


                    yields the pattern



                    |....||....||....||....||..  % 3
                    ..||....||....||....||....| % 3
                    |................||........ % 9
                    ..||....||....||....||....| % 3
                    |....||....||....||....||.. % 3
                    ........||................| % 9
                    |....||....||....||....||.. % 3
                    ..||....||....||....||....| % 3
                    |.......................... % 27


                    For upper rows, the expression is



                    (x + (x+y+1)%2) % (3 ** trailing_zeros_in_base3(3*(y+3**n)))


                    Explanation



                    { ... }o*R**3  # Feed $_ = 3^n into block

                    map ->y{ ... },^$_ # Map y = 0..3^n-1

                    |map { ... },<┌ ┐>,$_,<└ ┘>,1 # Map pairs (('┌','┐'),3^n) for upper rows
                    # and (('└','┘'),1) for lower rows.
                    # Block takes items as s and v

                    ( ... )xx$_*3 # Evaluate 3^(n+1) times, returning a list

                    (++$+y)%2 # (x+y+1)%2 for upper rows, (x+y)%2 for lower rows
                    ( +$++) # Add x
                    (y+$^v,*/3...*%3) # Count trailing zeros of 3*(y+v) in base 3
                    3** # nth power of 3
                    % # Modulo
                    ??$^s[$++%2] # If there's a remainder yield chars in s alternately
                    !!'│' # otherwise yield '│'





                    share|improve this answer



























                      up vote
                      10
                      down vote














                      Perl 6, 117 bytes





                      {map ->y{|map {(((++$+y)%2+$++)%3**(y+$^v,*/3...*%3)??$^s[$++%2]!!'│')xx$_*3},<┌ ┐>,$_,<└ ┘>,1},^$_}o*R**3


                      Try it online!



                      0-indexed. Returns a 2D array of Unicode characters. The basic idea is that for lower rows, the expression



                      (x + (x+y)%2) % (3 ** trailing_zeros_in_base3(3*(y+1)))


                      yields the pattern



                      |....||....||....||....||..  % 3
                      ..||....||....||....||....| % 3
                      |................||........ % 9
                      ..||....||....||....||....| % 3
                      |....||....||....||....||.. % 3
                      ........||................| % 9
                      |....||....||....||....||.. % 3
                      ..||....||....||....||....| % 3
                      |.......................... % 27


                      For upper rows, the expression is



                      (x + (x+y+1)%2) % (3 ** trailing_zeros_in_base3(3*(y+3**n)))


                      Explanation



                      { ... }o*R**3  # Feed $_ = 3^n into block

                      map ->y{ ... },^$_ # Map y = 0..3^n-1

                      |map { ... },<┌ ┐>,$_,<└ ┘>,1 # Map pairs (('┌','┐'),3^n) for upper rows
                      # and (('└','┘'),1) for lower rows.
                      # Block takes items as s and v

                      ( ... )xx$_*3 # Evaluate 3^(n+1) times, returning a list

                      (++$+y)%2 # (x+y+1)%2 for upper rows, (x+y)%2 for lower rows
                      ( +$++) # Add x
                      (y+$^v,*/3...*%3) # Count trailing zeros of 3*(y+v) in base 3
                      3** # nth power of 3
                      % # Modulo
                      ??$^s[$++%2] # If there's a remainder yield chars in s alternately
                      !!'│' # otherwise yield '│'





                      share|improve this answer

























                        up vote
                        10
                        down vote










                        up vote
                        10
                        down vote










                        Perl 6, 117 bytes





                        {map ->y{|map {(((++$+y)%2+$++)%3**(y+$^v,*/3...*%3)??$^s[$++%2]!!'│')xx$_*3},<┌ ┐>,$_,<└ ┘>,1},^$_}o*R**3


                        Try it online!



                        0-indexed. Returns a 2D array of Unicode characters. The basic idea is that for lower rows, the expression



                        (x + (x+y)%2) % (3 ** trailing_zeros_in_base3(3*(y+1)))


                        yields the pattern



                        |....||....||....||....||..  % 3
                        ..||....||....||....||....| % 3
                        |................||........ % 9
                        ..||....||....||....||....| % 3
                        |....||....||....||....||.. % 3
                        ........||................| % 9
                        |....||....||....||....||.. % 3
                        ..||....||....||....||....| % 3
                        |.......................... % 27


                        For upper rows, the expression is



                        (x + (x+y+1)%2) % (3 ** trailing_zeros_in_base3(3*(y+3**n)))


                        Explanation



                        { ... }o*R**3  # Feed $_ = 3^n into block

                        map ->y{ ... },^$_ # Map y = 0..3^n-1

                        |map { ... },<┌ ┐>,$_,<└ ┘>,1 # Map pairs (('┌','┐'),3^n) for upper rows
                        # and (('└','┘'),1) for lower rows.
                        # Block takes items as s and v

                        ( ... )xx$_*3 # Evaluate 3^(n+1) times, returning a list

                        (++$+y)%2 # (x+y+1)%2 for upper rows, (x+y)%2 for lower rows
                        ( +$++) # Add x
                        (y+$^v,*/3...*%3) # Count trailing zeros of 3*(y+v) in base 3
                        3** # nth power of 3
                        % # Modulo
                        ??$^s[$++%2] # If there's a remainder yield chars in s alternately
                        !!'│' # otherwise yield '│'





                        share|improve this answer















                        Perl 6, 117 bytes





                        {map ->y{|map {(((++$+y)%2+$++)%3**(y+$^v,*/3...*%3)??$^s[$++%2]!!'│')xx$_*3},<┌ ┐>,$_,<└ ┘>,1},^$_}o*R**3


                        Try it online!



                        0-indexed. Returns a 2D array of Unicode characters. The basic idea is that for lower rows, the expression



                        (x + (x+y)%2) % (3 ** trailing_zeros_in_base3(3*(y+1)))


                        yields the pattern



                        |....||....||....||....||..  % 3
                        ..||....||....||....||....| % 3
                        |................||........ % 9
                        ..||....||....||....||....| % 3
                        |....||....||....||....||.. % 3
                        ........||................| % 9
                        |....||....||....||....||.. % 3
                        ..||....||....||....||....| % 3
                        |.......................... % 27


                        For upper rows, the expression is



                        (x + (x+y+1)%2) % (3 ** trailing_zeros_in_base3(3*(y+3**n)))


                        Explanation



                        { ... }o*R**3  # Feed $_ = 3^n into block

                        map ->y{ ... },^$_ # Map y = 0..3^n-1

                        |map { ... },<┌ ┐>,$_,<└ ┘>,1 # Map pairs (('┌','┐'),3^n) for upper rows
                        # and (('└','┘'),1) for lower rows.
                        # Block takes items as s and v

                        ( ... )xx$_*3 # Evaluate 3^(n+1) times, returning a list

                        (++$+y)%2 # (x+y+1)%2 for upper rows, (x+y)%2 for lower rows
                        ( +$++) # Add x
                        (y+$^v,*/3...*%3) # Count trailing zeros of 3*(y+v) in base 3
                        3** # nth power of 3
                        % # Modulo
                        ??$^s[$++%2] # If there's a remainder yield chars in s alternately
                        !!'│' # otherwise yield '│'






                        share|improve this answer














                        share|improve this answer



                        share|improve this answer








                        edited 19 hours ago

























                        answered yesterday









                        nwellnhof

                        5,9881122




                        5,9881122






















                            up vote
                            6
                            down vote














                            K (ngn/k), 37 27 26 bytes



                            {+y,(|'y:x,,>*x),x}/1,&2*


                            Try it online!



                            returns a boolean matrix



                            |'y is syntax specific to ngn/k. other dialects require a : to make an each-ed verb monadic: |:'y






                            share|improve this answer



















                            • 1




                              To make the output more beautiful, highlight all occurences of (if supported by your browser)
                              – user202729
                              yesterday






                            • 3




                              @user202729 done - in the footer so it don't affect the byte count
                              – ngn
                              yesterday















                            up vote
                            6
                            down vote














                            K (ngn/k), 37 27 26 bytes



                            {+y,(|'y:x,,>*x),x}/1,&2*


                            Try it online!



                            returns a boolean matrix



                            |'y is syntax specific to ngn/k. other dialects require a : to make an each-ed verb monadic: |:'y






                            share|improve this answer



















                            • 1




                              To make the output more beautiful, highlight all occurences of (if supported by your browser)
                              – user202729
                              yesterday






                            • 3




                              @user202729 done - in the footer so it don't affect the byte count
                              – ngn
                              yesterday













                            up vote
                            6
                            down vote










                            up vote
                            6
                            down vote










                            K (ngn/k), 37 27 26 bytes



                            {+y,(|'y:x,,>*x),x}/1,&2*


                            Try it online!



                            returns a boolean matrix



                            |'y is syntax specific to ngn/k. other dialects require a : to make an each-ed verb monadic: |:'y






                            share|improve this answer















                            K (ngn/k), 37 27 26 bytes



                            {+y,(|'y:x,,>*x),x}/1,&2*


                            Try it online!



                            returns a boolean matrix



                            |'y is syntax specific to ngn/k. other dialects require a : to make an each-ed verb monadic: |:'y







                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited yesterday

























                            answered yesterday









                            ngn

                            6,24312459




                            6,24312459








                            • 1




                              To make the output more beautiful, highlight all occurences of (if supported by your browser)
                              – user202729
                              yesterday






                            • 3




                              @user202729 done - in the footer so it don't affect the byte count
                              – ngn
                              yesterday














                            • 1




                              To make the output more beautiful, highlight all occurences of (if supported by your browser)
                              – user202729
                              yesterday






                            • 3




                              @user202729 done - in the footer so it don't affect the byte count
                              – ngn
                              yesterday








                            1




                            1




                            To make the output more beautiful, highlight all occurences of (if supported by your browser)
                            – user202729
                            yesterday




                            To make the output more beautiful, highlight all occurences of (if supported by your browser)
                            – user202729
                            yesterday




                            3




                            3




                            @user202729 done - in the footer so it don't affect the byte count
                            – ngn
                            yesterday




                            @user202729 done - in the footer so it don't affect the byte count
                            – ngn
                            yesterday










                            up vote
                            5
                            down vote













                            Wolfram Language 83 36 bytes, (possibly -48 bytes with bonus)



                            As of version 11.1, PeanoCurve is a built-in.



                            My original, clumsy submission wasted many bytes on GeometricTransformation and ReflectionTransform.



                            This much reduced version was suggested by alephalpha.
                            Reverse was required to orient the output properly.



                            Graphics[Reverse/@#&/@PeanoCurve@#]&


                            Example 36 bytes



                            Graphics[Reverse/@#&/@PeanoCurve@#]&[3]


                            Peano curve





                            Bonus



                            If this qualifies for the 100 pt bonus, it weighs in at 52 - 100 = -48
                            The code [5] was not counted, only the pure function.



                            Table[Graphics[Reverse/@#&/@PeanoCurve@#]&@k{k,#}&[5]


                            sequence






                            share|improve this answer























                            • Graphics[Reverse/@#&/@PeanoCurve@#]&
                              – alephalpha
                              yesterday










                            • It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
                              – Peiffap
                              7 hours ago

















                            up vote
                            5
                            down vote













                            Wolfram Language 83 36 bytes, (possibly -48 bytes with bonus)



                            As of version 11.1, PeanoCurve is a built-in.



                            My original, clumsy submission wasted many bytes on GeometricTransformation and ReflectionTransform.



                            This much reduced version was suggested by alephalpha.
                            Reverse was required to orient the output properly.



                            Graphics[Reverse/@#&/@PeanoCurve@#]&


                            Example 36 bytes



                            Graphics[Reverse/@#&/@PeanoCurve@#]&[3]


                            Peano curve





                            Bonus



                            If this qualifies for the 100 pt bonus, it weighs in at 52 - 100 = -48
                            The code [5] was not counted, only the pure function.



                            Table[Graphics[Reverse/@#&/@PeanoCurve@#]&@k{k,#}&[5]


                            sequence






                            share|improve this answer























                            • Graphics[Reverse/@#&/@PeanoCurve@#]&
                              – alephalpha
                              yesterday










                            • It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
                              – Peiffap
                              7 hours ago















                            up vote
                            5
                            down vote










                            up vote
                            5
                            down vote









                            Wolfram Language 83 36 bytes, (possibly -48 bytes with bonus)



                            As of version 11.1, PeanoCurve is a built-in.



                            My original, clumsy submission wasted many bytes on GeometricTransformation and ReflectionTransform.



                            This much reduced version was suggested by alephalpha.
                            Reverse was required to orient the output properly.



                            Graphics[Reverse/@#&/@PeanoCurve@#]&


                            Example 36 bytes



                            Graphics[Reverse/@#&/@PeanoCurve@#]&[3]


                            Peano curve





                            Bonus



                            If this qualifies for the 100 pt bonus, it weighs in at 52 - 100 = -48
                            The code [5] was not counted, only the pure function.



                            Table[Graphics[Reverse/@#&/@PeanoCurve@#]&@k{k,#}&[5]


                            sequence






                            share|improve this answer














                            Wolfram Language 83 36 bytes, (possibly -48 bytes with bonus)



                            As of version 11.1, PeanoCurve is a built-in.



                            My original, clumsy submission wasted many bytes on GeometricTransformation and ReflectionTransform.



                            This much reduced version was suggested by alephalpha.
                            Reverse was required to orient the output properly.



                            Graphics[Reverse/@#&/@PeanoCurve@#]&


                            Example 36 bytes



                            Graphics[Reverse/@#&/@PeanoCurve@#]&[3]


                            Peano curve





                            Bonus



                            If this qualifies for the 100 pt bonus, it weighs in at 52 - 100 = -48
                            The code [5] was not counted, only the pure function.



                            Table[Graphics[Reverse/@#&/@PeanoCurve@#]&@k{k,#}&[5]


                            sequence







                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited 3 hours ago

























                            answered yesterday









                            DavidC

                            23.6k243101




                            23.6k243101












                            • Graphics[Reverse/@#&/@PeanoCurve@#]&
                              – alephalpha
                              yesterday










                            • It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
                              – Peiffap
                              7 hours ago




















                            • Graphics[Reverse/@#&/@PeanoCurve@#]&
                              – alephalpha
                              yesterday










                            • It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
                              – Peiffap
                              7 hours ago


















                            Graphics[Reverse/@#&/@PeanoCurve@#]&
                            – alephalpha
                            yesterday




                            Graphics[Reverse/@#&/@PeanoCurve@#]&
                            – alephalpha
                            yesterday












                            It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
                            – Peiffap
                            7 hours ago






                            It feels a bit like cheating to have a function which calculates the Peano curve by itself, but I'll take it as accepted answer since it's pretty impressive nonetheless ;). @LegionMammal978 I think you deserve to post your own answer, I'd argue that it's different enough to warrant accepting it as winning answer.
                            – Peiffap
                            7 hours ago












                            up vote
                            4
                            down vote













                            BBC BASIC, 142 ASCII characters (130 bytes tokenised)



                            Download interpreter at http://www.bbcbasic.co.uk/bbcwin/download.html



                            I.m:q=FNh(m,8,8,0)END
                            DEFFNh(n,x,y,i)
                            IFn F.i=0TO8q=FNh(n-1,x-i MOD3MOD2*2*x,y-i DIV3MOD2*2*y,i)DRAWBY(1AND36/2^i)*x,y*(12653/3^i MOD3-1)N.
                            =0


                            enter image description here






                            share|improve this answer

























                              up vote
                              4
                              down vote













                              BBC BASIC, 142 ASCII characters (130 bytes tokenised)



                              Download interpreter at http://www.bbcbasic.co.uk/bbcwin/download.html



                              I.m:q=FNh(m,8,8,0)END
                              DEFFNh(n,x,y,i)
                              IFn F.i=0TO8q=FNh(n-1,x-i MOD3MOD2*2*x,y-i DIV3MOD2*2*y,i)DRAWBY(1AND36/2^i)*x,y*(12653/3^i MOD3-1)N.
                              =0


                              enter image description here






                              share|improve this answer























                                up vote
                                4
                                down vote










                                up vote
                                4
                                down vote









                                BBC BASIC, 142 ASCII characters (130 bytes tokenised)



                                Download interpreter at http://www.bbcbasic.co.uk/bbcwin/download.html



                                I.m:q=FNh(m,8,8,0)END
                                DEFFNh(n,x,y,i)
                                IFn F.i=0TO8q=FNh(n-1,x-i MOD3MOD2*2*x,y-i DIV3MOD2*2*y,i)DRAWBY(1AND36/2^i)*x,y*(12653/3^i MOD3-1)N.
                                =0


                                enter image description here






                                share|improve this answer












                                BBC BASIC, 142 ASCII characters (130 bytes tokenised)



                                Download interpreter at http://www.bbcbasic.co.uk/bbcwin/download.html



                                I.m:q=FNh(m,8,8,0)END
                                DEFFNh(n,x,y,i)
                                IFn F.i=0TO8q=FNh(n-1,x-i MOD3MOD2*2*x,y-i DIV3MOD2*2*y,i)DRAWBY(1AND36/2^i)*x,y*(12653/3^i MOD3-1)N.
                                =0


                                enter image description here







                                share|improve this answer












                                share|improve this answer



                                share|improve this answer










                                answered yesterday









                                Level River St

                                20.1k32579




                                20.1k32579






















                                    up vote
                                    4
                                    down vote













                                    HTML+SVG+JS, 224 213 bytes



                                    The output is mirrored horizontally.



                                    n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)


                                    Try it online! (prints the HTML)






                                    (
                                    n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
                                    )(3)








                                    share|improve this answer



























                                      up vote
                                      4
                                      down vote













                                      HTML+SVG+JS, 224 213 bytes



                                      The output is mirrored horizontally.



                                      n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)


                                      Try it online! (prints the HTML)






                                      (
                                      n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
                                      )(3)








                                      share|improve this answer

























                                        up vote
                                        4
                                        down vote










                                        up vote
                                        4
                                        down vote









                                        HTML+SVG+JS, 224 213 bytes



                                        The output is mirrored horizontally.



                                        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)


                                        Try it online! (prints the HTML)






                                        (
                                        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
                                        )(3)








                                        share|improve this answer














                                        HTML+SVG+JS, 224 213 bytes



                                        The output is mirrored horizontally.



                                        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)


                                        Try it online! (prints the HTML)






                                        (
                                        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
                                        )(3)








                                        (
                                        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
                                        )(3)





                                        (
                                        n=>document.write(`<svg width=${w=3**n*9} height=${w}><path d="M1 ${(p=(n,z)=>n--&&(p(n,-z,a(a(p(n,-z,d+=z)),p(n,z))),d-=z))(n*2,r=d=x=y=1,a=_=>r+=`L${x+=~-(d&=3)%2*9} ${y+=(2-d)%2*9}`)&&r}"fill=#fff stroke=red>`)
                                        )(3)






                                        share|improve this answer














                                        share|improve this answer



                                        share|improve this answer








                                        edited yesterday

























                                        answered yesterday









                                        Arnauld

                                        69k584291




                                        69k584291






















                                            up vote
                                            3
                                            down vote













                                            Logo, 89 bytes



                                            to p:n:a
                                            if:n>0[rt:a
                                            p:n-1 0-:a
                                            fw 5
                                            p:n-1:a
                                            fw 5
                                            p:n-1 0-:a
                                            lt:a]end
                                            to f:n
                                            p:n*2 90
                                            end


                                            Port of @Arnauld's Atari BASIC answer. To use, do something like this:



                                            reset
                                            f 3





                                            share|improve this answer

























                                              up vote
                                              3
                                              down vote













                                              Logo, 89 bytes



                                              to p:n:a
                                              if:n>0[rt:a
                                              p:n-1 0-:a
                                              fw 5
                                              p:n-1:a
                                              fw 5
                                              p:n-1 0-:a
                                              lt:a]end
                                              to f:n
                                              p:n*2 90
                                              end


                                              Port of @Arnauld's Atari BASIC answer. To use, do something like this:



                                              reset
                                              f 3





                                              share|improve this answer























                                                up vote
                                                3
                                                down vote










                                                up vote
                                                3
                                                down vote









                                                Logo, 89 bytes



                                                to p:n:a
                                                if:n>0[rt:a
                                                p:n-1 0-:a
                                                fw 5
                                                p:n-1:a
                                                fw 5
                                                p:n-1 0-:a
                                                lt:a]end
                                                to f:n
                                                p:n*2 90
                                                end


                                                Port of @Arnauld's Atari BASIC answer. To use, do something like this:



                                                reset
                                                f 3





                                                share|improve this answer












                                                Logo, 89 bytes



                                                to p:n:a
                                                if:n>0[rt:a
                                                p:n-1 0-:a
                                                fw 5
                                                p:n-1:a
                                                fw 5
                                                p:n-1 0-:a
                                                lt:a]end
                                                to f:n
                                                p:n*2 90
                                                end


                                                Port of @Arnauld's Atari BASIC answer. To use, do something like this:



                                                reset
                                                f 3






                                                share|improve this answer












                                                share|improve this answer



                                                share|improve this answer










                                                answered 20 hours ago









                                                Neil

                                                78k744175




                                                78k744175






















                                                    Peiffap is a new contributor. Be nice, and check out our Code of Conduct.










                                                     

                                                    draft saved


                                                    draft discarded


















                                                    Peiffap is a new contributor. Be nice, and check out our Code of Conduct.













                                                    Peiffap is a new contributor. Be nice, and check out our Code of Conduct.












                                                    Peiffap is a new contributor. Be nice, and check out our Code of Conduct.















                                                     


                                                    draft saved


                                                    draft discarded














                                                    StackExchange.ready(
                                                    function () {
                                                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f176168%2fdrawing-the-peano-curve%23new-answer', 'question_page');
                                                    }
                                                    );

                                                    Post as a guest















                                                    Required, but never shown





















































                                                    Required, but never shown














                                                    Required, but never shown












                                                    Required, but never shown







                                                    Required, but never shown

































                                                    Required, but never shown














                                                    Required, but never shown












                                                    Required, but never shown







                                                    Required, but never shown







                                                    Popular posts from this blog

                                                    'app-layout' is not a known element: how to share Component with different Modules

                                                    android studio warns about leanback feature tag usage required on manifest while using Unity exported app?

                                                    WPF add header to Image with URL pettitions [duplicate]