gpt4 book ai didi

code-golf - Code Golf : Reversi

转载 作者:行者123 更新时间:2023-12-04 02:51:25 24 4
gpt4 key购买 nike

锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








好的,这是一个相当复杂的 Code Golf 挑战:实现 Reversi 的游戏(奥赛罗)。

  • 游戏应该显示游戏板的当前状态,并允许玩家在一台计算机上交替输入 Action 。
  • 必须捕获错误的输入和不允许的移动,但可以无声地忽略。
  • 当无法再进行任何移动时,游戏必须结束(因为棋盘已满或因为没有移动会翻转任何棋子)。
  • 然后游戏必须宣布谁赢了,或者是否是平局。

  • 以尽可能少的字符执行此操作。

    一个 session 应该是这样的:
     abcdefgh
    1
    2
    3
    4 wb
    5 bw
    6
    7
    8
    b>d3
    abcdefgh
    1
    2
    3 b
    4 bb
    5 bw
    6
    7
    8

    最佳答案

    Perl,408 个字符

    这是 Perl,现在减少到 408 个字符。可以用更简单的方法来宣布获胜者(比如说 "B" 而不是 "Winner: Black\n" )再砍掉 25 个字符。前两个换行符很重要;其他的都包括在内以提高可读性。

    sub O{2&$B[$q+=$_]*$%}sub A{grep{$q=$=;$"=''while&O;$B[$q]*O$q=$=}$B[$=]?():@d}
    sub F{$B[$q]=$%;O&&&F}sub D{print'
    ',a..h,$/,(map{($e="@B[$_*9+1..$_*9+8]
    ")=~y/012/ bw/;$_,$e}1..8),@_}
    @d=map{$_,-$_}1,8..10;@B=(@z=(0)x40,$%=2,1,(0)x7,1,2,@z);
    for$!(%!){$%^=3;for$=(9..80){$=%9*A&&do{{D$%-2?b:w,"> ";
    $_=<>;$==(/./g)[1]*9-96+ord;A||redo}F$q=$=for A;last}}}
    $X+=/1/-/2/for@B;D"Winner: ",$X<0?White:$X?Black:None,$/
    @B拿着游戏板。 $B[$i*9+$j]指行 $i (1..8) 和列 $j (1..8)
    @d是 8 个有效方向的列表
    O是一种方便的方法。它递增 $q来自 $_ (当前方向)并在 $B[$q] 处返回非零值。属于当前玩家的对手
    F处理当前方向的翻转块 $_ A检查当前玩家是否可以在 $B[$=] 进行合法移动并返回可以翻转棋子的方向集
    D(@_)画板和打印 @_
    主循环切换 $% (当前玩家)并遍历棋盘上的位置以找到该玩家的合法移动。
    如果找到任何合法的走法,从标准输入读取走法(重复直到输入有效的走法)并更新棋盘。

    关于code-golf - Code Golf : Reversi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582359/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com