RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 926927
Accepted
user285292
user285292
Asked:2020-12-30 01:47:04 +0000 UTC2020-12-30 01:47:04 +0000 UTC 2020-12-30 01:47:04 +0000 UTC

Code Golf:Snake 2D 数组遍历

  • 772

比赛挑战:

我有一个二维数组N x N。有必要编写一个函数来绕过带有右边缘的蛇的二维数组。图片中的一个例子。

在此处输入图像描述


二维数组的示例:

输入具有以下数组:

input = [[4, 3, 2, 1], [5, 6, 7, 8], [12, 11, 10, 9], [13, 14, 15, 16]]

遍历后的输出是一维数组:

output = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

可以使用任何语言。

主要条件:该函数必须对任何等边二维数组都能正常工作。

指定响应头中的语言名称和函数的缩小版本的字符数,用逗号分隔。

获胜者将是用更少字符写出来的人。为此,他获得300声望。获胜者将在 2 周内(1 月 12 日)确定。

选择获胜者时不考虑作者的回答。祝你好运 :)

排行榜:

execute("ru.stackoverflow.com", 926927);
<script src="https://mayorovp.github.io/codegolf/table-8c505e68f1349e4c69e7.js"></script>


获奖者:

第一名:Haskell - 39 (@AndreyNOP)

第二名:JavaScript - 40 (@Groxan)

第三名:Groovy - 42 (@Nick)

非常感谢大家的参与和有趣的解决方案;)

любой-язык
  • 18 18 个回答
  • 10 Views

18 个回答

  • Voted
  1. Best Answer
    Андрей NOP
    2020-12-30T03:28:58Z2020-12-30T03:28:58Z

    哈斯克尔 39 40 42

    r=reverse;s[]=[];s(h:t)=r h++s(map r t)
    

    https://ideone.com/JYttmr

    • 15
  2. MaxU - stop genocide of UA
    2020-12-30T04:21:25Z2020-12-30T04:21:25Z

    蟒蛇 56

    f=lambda l:sum([x[::i%2*2-1]for i,x in enumerate(l)],[])
    

    感谢@AndreyNOP 的提示!

    蟒蛇 60

    f=lambda l:sum([[x[::-1],x][i&1]for i,x in enumerate(l)],[])
    

    https://ideone.com/JPyzUQ(此 lambda 版本由 @Let's say Pie 友情提供)


    尝试 2:由于格式错误而无效 - 解决方案应作为函数实现

    蟒蛇 49

    sum([[x[::-1],x][i&1]for i,x in enumerate(l)],[])
    

    https://ideone.com/WdHq4n

    PS @KirillMalyshev 建议如何将代码再缩短 6 个字符-谢谢!!


    尝试1:

    蟒蛇 55

    sum([x if i&1 else x[::-1] for i,x in enumerate(l)],[])
    

    https://ideone.com/2hoF3P

    • 12
  3. Андрей NOP
    2020-12-30T19:40:14Z2020-12-30T19:40:14Z

    蟒蛇 43

    f=lambda m,a=-1:m and m.pop(0)[::a]+f(m,-a)
    

    https://ideone.com/fQVgtD

    • 11
  4. Кирилл Малышев
    2020-12-30T04:23:27Z2020-12-30T04:23:27Z

    八度 47

    @(l,b=l(1:2:end,:)=fliplr(l(1:2:end,:)))l'(:)';
    

    在线尝试!

    如果您允许返回的不是行向量,而是列向量,则它会减少 1 个字符:

    八度 46

    @(l,b=l(1:2:end,:)=fliplr(l(1:2:end,:)))l'(:);
    

    在线尝试!

    没有匿名函数的上一个版本:

    八度音阶 40

    l(1:2:end,:)=fliplr(l(1:2:end,:));l'(:)'
    

    在线尝试!

    • 10
  5. Groxan
    2020-01-05T00:22:55Z2020-01-05T00:22:55Z

    JavaScript, 38

    此代码在 Firefox 中有效,但在 V8 中无效(由于特定的排序算法)。如果这是不可接受的,请说 =)

    f=a=>a.flatMap((x,i)=>x.sort(_=>~i&1))
    
    console.log(f([[4,3,2,1],[5,6,7,8],[12,11,10,9],[13,14,15,16]]));


    JavaScript, 40

    f=a=>a.flatMap((x,i)=>i%2?x:x.reverse())
    
    console.log(f([[4,3,2,1],[5,6,7,8],[12,11,10,9],[13,14,15,16]]));

    • 10
  6. user285292
    2020-12-30T03:45:56Z2020-12-30T03:45:56Z

    蟒蛇6261 _

    到目前为止,我还没有想出比递归选项更好的东西:)

    f=lambda m,x:m and(x&1and m.pop(0)or m.pop(0)[::-1])+f(m,x+1)
    

    https://ideone.com/i2d0f6

    • 9
  7. user317779
    2020-12-30T03:00:32Z2020-12-30T03:00:32Z

    JavaScript, 54

    f=a=>a.reduce((c,n,i)=>c.concat(i%2?n:n.reverse()),[])
    
    console.log(f([[4, 3, 2, 1], [5, 6, 7, 8], [12, 11, 10, 9], [13, 14, 15, 16]]));

    • 9
  8. FoggyFinder
    2020-12-30T20:58:07Z2020-12-30T20:58:07Z

    F#,68

    let rec f=function|[]->[]|h::t->List.rev h@(t|>List.map List.rev|>f)
    

    https://ideone.com/S6PhEZ

    • 8
  9. user317779
    2020-12-31T23:36:03Z2020-12-31T23:36:03Z

    PowerShell 51

    $f={$args[0]|%{if(++$i%2){[Array]::Reverse($_)}$_}}
    

    在线尝试!

    • 7
  10. user285292
    2020-01-05T02:05:23Z2020-01-05T02:05:23Z

    PHP 9391 _

    function f($a){foreach($a as$v)$r[]=$_++&1?$v:array_reverse($v);return array_merge(...$r);}
    

    https://ideone.com/XsiPap

    • 7

相关问题

  • 是否可以使用指示语气来构建程序?[关闭]

  • 代码中的注释应该怎么说?

  • “生产”和“研究”编程语言

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5