Slither Like a Snake The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The PPCG Site design is on its way - help us make it awesome! Sandbox for Proposed ChallengesRotate the anti-diagonalsRotate every row and column in a matrixRotate every 2x2 block in a matrixZigzagify a MatrixMaximum Maxima!Is it a stochastic matrix?Rotating a 2D MatrixSum of first row and column, then second row and column … and so onProgression of Matrix ColumnsWhere is that snake going?Is the bus load legal?

Am I ethically obligated to go into work on an off day if the reason is sudden?

Python - Fishing Simulator

Road tyres vs "Street" tyres for charity ride on MTB Tandem

Match Roman Numerals

Reference for the teaching of not-self

Would an alien lifeform be able to achieve space travel if lacking in vision?

Why did all the guest students take carriages to the Yule Ball?

What is special about square numbers here?

Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?

Cooking pasta in a water boiler

Is every episode of "Where are my Pants?" identical?

How many people can fit inside Mordenkainen's Magnificent Mansion?

Relations between two reciprocal partial derivatives?

What LEGO pieces have "real-world" functionality?

What is this lever in Argentinian toilets?

Does Parliament need to approve the new Brexit delay to 31 October 2019?

How does ice melt when immersed in water?

How did passengers keep warm on sail ships?

Difference between "generating set" and free product?

How to split my screen on my Macbook Air?

Keeping a retro style to sci-fi spaceships?

Netflix Recommendations?

What was the last x86 CPU that did not have the x87 floating-point unit built in?

What's the point in a preamp?



Slither Like a Snake



The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The PPCG Site design is on its way - help us make it awesome!
Sandbox for Proposed ChallengesRotate the anti-diagonalsRotate every row and column in a matrixRotate every 2x2 block in a matrixZigzagify a MatrixMaximum Maxima!Is it a stochastic matrix?Rotating a 2D MatrixSum of first row and column, then second row and column … and so onProgression of Matrix ColumnsWhere is that snake going?Is the bus load legal?










7












$begingroup$


The Idea



We've done matrix spirals before, and full rotations, and even diagonal
rotations,
but not, as far as I can find, snake rotations!



What is a snake rotation?



Imagine the rows of a matrix snaking back and forth, with dividers between
them like the dividers of long queue:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+


Now imagine rotating these items by 2. Each item advances, like people moving
in a line, and the items at the end spill out and return to the beginning:



 +--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+


If there are an odd number of rows it will exit from the right, but still wrap
to the beginning. For example, here's a 3 rotation:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15
+--------------+


+--------------+
--> 13 14 15 1 2|
+------------ |
| 7 6 5 4 3|
| +-----------+
| 8 9 10 11 12 -->
+--------------+


A negative rotation will take you backwards. Here's a -2 rotation:



 +--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+


The Challenge



Your function or program will take 2 inputs, in any convenient format:



  • A matrix

  • A integer (positive or negative) indicating how many places to rotate it.

It will return:



  • The rotated matrix

Notes:



  • Code golf. Fewest bytes wins.

  • Matrixes need not be square, but will contain at least 2 rows and 2 columns

  • Positive integers will rotate row 1 toward the right

  • Negative integers will rotate row 1 toward the left

  • You may reverse the meaning of positive / negative rotation numbers, if convenient

  • The rotation number can be larger than the number of items. In that case, it
    will wrap. That is, it will be equivalent to the number modulo the number of
    items.

  • The matrix will contain only integers, but it may contain any integers,
    including repeats

Test Cases



Format:



  • Matrix

  • Rotation number

  • Expected return value


4 5
6 7

1

6 4
7 5



2 3 4 5
6 7 8 9
10 11 12 13

-3

5 9 8 7
12 11 10 6
13 2 3 4



8 8 7 7
5 5 6 6

10

5 5 8 8
6 6 7 7









share|improve this question











$endgroup$







  • 1




    $begingroup$
    Reversing meaning of +/- is fine. I think the entrance should stay at the top left though.
    $endgroup$
    – Jonah
    3 hours ago















7












$begingroup$


The Idea



We've done matrix spirals before, and full rotations, and even diagonal
rotations,
but not, as far as I can find, snake rotations!



What is a snake rotation?



Imagine the rows of a matrix snaking back and forth, with dividers between
them like the dividers of long queue:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+


Now imagine rotating these items by 2. Each item advances, like people moving
in a line, and the items at the end spill out and return to the beginning:



 +--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+


If there are an odd number of rows it will exit from the right, but still wrap
to the beginning. For example, here's a 3 rotation:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15
+--------------+


+--------------+
--> 13 14 15 1 2|
+------------ |
| 7 6 5 4 3|
| +-----------+
| 8 9 10 11 12 -->
+--------------+


A negative rotation will take you backwards. Here's a -2 rotation:



 +--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+


The Challenge



Your function or program will take 2 inputs, in any convenient format:



  • A matrix

  • A integer (positive or negative) indicating how many places to rotate it.

It will return:



  • The rotated matrix

Notes:



  • Code golf. Fewest bytes wins.

  • Matrixes need not be square, but will contain at least 2 rows and 2 columns

  • Positive integers will rotate row 1 toward the right

  • Negative integers will rotate row 1 toward the left

  • You may reverse the meaning of positive / negative rotation numbers, if convenient

  • The rotation number can be larger than the number of items. In that case, it
    will wrap. That is, it will be equivalent to the number modulo the number of
    items.

  • The matrix will contain only integers, but it may contain any integers,
    including repeats

Test Cases



Format:



  • Matrix

  • Rotation number

  • Expected return value


4 5
6 7

1

6 4
7 5



2 3 4 5
6 7 8 9
10 11 12 13

-3

5 9 8 7
12 11 10 6
13 2 3 4



8 8 7 7
5 5 6 6

10

5 5 8 8
6 6 7 7









share|improve this question











$endgroup$







  • 1




    $begingroup$
    Reversing meaning of +/- is fine. I think the entrance should stay at the top left though.
    $endgroup$
    – Jonah
    3 hours ago













7












7








7





$begingroup$


The Idea



We've done matrix spirals before, and full rotations, and even diagonal
rotations,
but not, as far as I can find, snake rotations!



What is a snake rotation?



Imagine the rows of a matrix snaking back and forth, with dividers between
them like the dividers of long queue:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+


Now imagine rotating these items by 2. Each item advances, like people moving
in a line, and the items at the end spill out and return to the beginning:



 +--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+


If there are an odd number of rows it will exit from the right, but still wrap
to the beginning. For example, here's a 3 rotation:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15
+--------------+


+--------------+
--> 13 14 15 1 2|
+------------ |
| 7 6 5 4 3|
| +-----------+
| 8 9 10 11 12 -->
+--------------+


A negative rotation will take you backwards. Here's a -2 rotation:



 +--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+


The Challenge



Your function or program will take 2 inputs, in any convenient format:



  • A matrix

  • A integer (positive or negative) indicating how many places to rotate it.

It will return:



  • The rotated matrix

Notes:



  • Code golf. Fewest bytes wins.

  • Matrixes need not be square, but will contain at least 2 rows and 2 columns

  • Positive integers will rotate row 1 toward the right

  • Negative integers will rotate row 1 toward the left

  • You may reverse the meaning of positive / negative rotation numbers, if convenient

  • The rotation number can be larger than the number of items. In that case, it
    will wrap. That is, it will be equivalent to the number modulo the number of
    items.

  • The matrix will contain only integers, but it may contain any integers,
    including repeats

Test Cases



Format:



  • Matrix

  • Rotation number

  • Expected return value


4 5
6 7

1

6 4
7 5



2 3 4 5
6 7 8 9
10 11 12 13

-3

5 9 8 7
12 11 10 6
13 2 3 4



8 8 7 7
5 5 6 6

10

5 5 8 8
6 6 7 7









share|improve this question











$endgroup$




The Idea



We've done matrix spirals before, and full rotations, and even diagonal
rotations,
but not, as far as I can find, snake rotations!



What is a snake rotation?



Imagine the rows of a matrix snaking back and forth, with dividers between
them like the dividers of long queue:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15|
+------------ |
20 19 18 17 16|
+--------------+


Now imagine rotating these items by 2. Each item advances, like people moving
in a line, and the items at the end spill out and return to the beginning:



 +--------------+
--> 19 20 1 2 3|
+------------ |
| 8 7 6 5 4|
| +-----------+
| 9 10 11 12 13|
+------------ |
<-- 18 17 16 15 14|
+--------------+


If there are an odd number of rows it will exit from the right, but still wrap
to the beginning. For example, here's a 3 rotation:



 +--------------+
1 2 3 4 5|
+------------ |
|10 9 8 7 6|
| +-----------+
|11 12 13 14 15
+--------------+


+--------------+
--> 13 14 15 1 2|
+------------ |
| 7 6 5 4 3|
| +-----------+
| 8 9 10 11 12 -->
+--------------+


A negative rotation will take you backwards. Here's a -2 rotation:



 +--------------+
<-- 3 4 5 6 7|
+------------ |
|12 11 10 9 8|
| +-----------+
|13 14 15 1 2 <--
+--------------+


The Challenge



Your function or program will take 2 inputs, in any convenient format:



  • A matrix

  • A integer (positive or negative) indicating how many places to rotate it.

It will return:



  • The rotated matrix

Notes:



  • Code golf. Fewest bytes wins.

  • Matrixes need not be square, but will contain at least 2 rows and 2 columns

  • Positive integers will rotate row 1 toward the right

  • Negative integers will rotate row 1 toward the left

  • You may reverse the meaning of positive / negative rotation numbers, if convenient

  • The rotation number can be larger than the number of items. In that case, it
    will wrap. That is, it will be equivalent to the number modulo the number of
    items.

  • The matrix will contain only integers, but it may contain any integers,
    including repeats

Test Cases



Format:



  • Matrix

  • Rotation number

  • Expected return value


4 5
6 7

1

6 4
7 5



2 3 4 5
6 7 8 9
10 11 12 13

-3

5 9 8 7
12 11 10 6
13 2 3 4



8 8 7 7
5 5 6 6

10

5 5 8 8
6 6 7 7






code-golf array-manipulation matrix






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 3 hours ago







Jonah

















asked 5 hours ago









JonahJonah

2,7161017




2,7161017







  • 1




    $begingroup$
    Reversing meaning of +/- is fine. I think the entrance should stay at the top left though.
    $endgroup$
    – Jonah
    3 hours ago












  • 1




    $begingroup$
    Reversing meaning of +/- is fine. I think the entrance should stay at the top left though.
    $endgroup$
    – Jonah
    3 hours ago







1




1




$begingroup$
Reversing meaning of +/- is fine. I think the entrance should stay at the top left though.
$endgroup$
– Jonah
3 hours ago




$begingroup$
Reversing meaning of +/- is fine. I think the entrance should stay at the top left though.
$endgroup$
– Jonah
3 hours ago










1 Answer
1






active

oldest

votes


















1












$begingroup$


Jelly, 10 bytes



UÐeẎṙṁ⁸UÐe


A dyadic Link accepting the marix on the left and the rotation integer on the right (uses the reverse meaning of positive / negative)



Try it online!



How?



UÐeẎṙṁ⁸UÐe - Link: matrix of integers, M; integer, R
Ðe - apply to even indices of M:
U - reverse each
Ẏ - tighten
ṙ - rotate left by R
ṁ - mould like:
⁸ - chain's left argument, M
Ðe - apply to even indices of M:
U - reverse each





share|improve this answer











$endgroup$













    Your Answer






    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',
    autoActivateHeartbeat: false,
    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
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f183153%2fslither-like-a-snake%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1












    $begingroup$


    Jelly, 10 bytes



    UÐeẎṙṁ⁸UÐe


    A dyadic Link accepting the marix on the left and the rotation integer on the right (uses the reverse meaning of positive / negative)



    Try it online!



    How?



    UÐeẎṙṁ⁸UÐe - Link: matrix of integers, M; integer, R
    Ðe - apply to even indices of M:
    U - reverse each
    Ẏ - tighten
    ṙ - rotate left by R
    ṁ - mould like:
    ⁸ - chain's left argument, M
    Ðe - apply to even indices of M:
    U - reverse each





    share|improve this answer











    $endgroup$

















      1












      $begingroup$


      Jelly, 10 bytes



      UÐeẎṙṁ⁸UÐe


      A dyadic Link accepting the marix on the left and the rotation integer on the right (uses the reverse meaning of positive / negative)



      Try it online!



      How?



      UÐeẎṙṁ⁸UÐe - Link: matrix of integers, M; integer, R
      Ðe - apply to even indices of M:
      U - reverse each
      Ẏ - tighten
      ṙ - rotate left by R
      ṁ - mould like:
      ⁸ - chain's left argument, M
      Ðe - apply to even indices of M:
      U - reverse each





      share|improve this answer











      $endgroup$















        1












        1








        1





        $begingroup$


        Jelly, 10 bytes



        UÐeẎṙṁ⁸UÐe


        A dyadic Link accepting the marix on the left and the rotation integer on the right (uses the reverse meaning of positive / negative)



        Try it online!



        How?



        UÐeẎṙṁ⁸UÐe - Link: matrix of integers, M; integer, R
        Ðe - apply to even indices of M:
        U - reverse each
        Ẏ - tighten
        ṙ - rotate left by R
        ṁ - mould like:
        ⁸ - chain's left argument, M
        Ðe - apply to even indices of M:
        U - reverse each





        share|improve this answer











        $endgroup$




        Jelly, 10 bytes



        UÐeẎṙṁ⁸UÐe


        A dyadic Link accepting the marix on the left and the rotation integer on the right (uses the reverse meaning of positive / negative)



        Try it online!



        How?



        UÐeẎṙṁ⁸UÐe - Link: matrix of integers, M; integer, R
        Ðe - apply to even indices of M:
        U - reverse each
        Ẏ - tighten
        ṙ - rotate left by R
        ṁ - mould like:
        ⁸ - chain's left argument, M
        Ðe - apply to even indices of M:
        U - reverse each






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 3 hours ago

























        answered 4 hours ago









        Jonathan AllanJonathan Allan

        54.2k537174




        54.2k537174



























            draft saved

            draft discarded
















































            If this is an answer to a challenge…



            • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


            • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
              Explanations of your answer make it more interesting to read and are very much encouraged.


            • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.


            More generally…



            • …Please make sure to answer the question and provide sufficient detail.


            • …Avoid asking for help, clarification or responding to other answers (use comments instead).




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f183153%2fslither-like-a-snake%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

            Magento 2 duplicate PHPSESSID cookie when using session_start() in custom php scriptMagento 2: User cant logged in into to account page, no error showing!Magento duplicate on subdomainGrabbing storeview from cookie (after using language selector)How do I run php custom script on magento2Magento 2: Include PHP script in headerSession lock after using Cm_RedisSessionscript php to update stockMagento set cookie popupMagento 2 session id cookie - where to find it?How to import Configurable product from csv with custom attributes using php scriptMagento 2 run custom PHP script

            Can not update quote_id field of “quote_item” table magento 2Magento 2.1 - We can't remove the item. (Shopping Cart doesnt allow us to remove items before becomes empty)Add value for custom quote item attribute using REST apiREST API endpoint v1/carts/cartId/items always returns error messageCorrect way to save entries to databaseHow to remove all associated quote objects of a customer completelyMagento 2 - Save value from custom input field to quote_itemGet quote_item data using quote id and product id filter in Magento 2How to set additional data to quote_item table from controller in Magento 2?What is the purpose of additional_data column in quote_item table in magento2Set Custom Price to Quote item magento2 from controller

            How to solve knockout JS error in Magento 2 Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?(Magento2) knockout.js:3012 Uncaught ReferenceError: Unable to process bindingUnable to process binding Knockout.js magento 2Cannot read property `scopeLabel` of undefined on Product Detail PageCan't get Customer Data on frontend in Magento 2Magento2 Order Summary - unable to process bindingKO templates are not loading in Magento 2.1 applicationgetting knockout js error magento 2Product grid not load -— Unable to process binding Knockout.js magento 2Product form not loaded in magento2Uncaught ReferenceError: Unable to process binding “if: function()return (isShowLegend()) ” magento 2