gpt4 book ai didi

php - 无法理解的条件和功能的错误操作

转载 作者:可可西里 更新时间:2023-10-31 23:13:14 24 4
gpt4 key购买 nike

有以下代码(demo here),函数(带递归)以螺旋方式收集值的矩阵:

function spiralmatrix($arr)
{
return $arr
? array_merge(
array_shift($arr),
spiralmatrix(array_reverse(transpose($arr)))
)
: $arr;
}

function transpose($arr)
{
return $arr
? count($arr) == 1
? array_chunk($arr[0], 1)
: array_map(null, ...$arr)
: $arr;
}

我知道使用多个三元表达式会导致代码不可读。但是代码高尔夫有更主要的运动兴趣。

因此,对于这个问题,是否有可能以某种方式改变条件以剪切更多字符?可以使用任何方法。

我也想问一下,奇怪的是下面的工作正常(demo):

function transpose($arr)
{
return $arr
? count($arr) == 1
? array_chunk($arr[0], 1)
: array_map(null, ...$arr)
: $arr;
}

表达式有点不对(demo):

function transpose($arr)
{
return count($arr) > 1 ? array_map(null, ...$arr) : $arr;
}

虽然,在单独的测试中(不是在这个函数 spiralmatrix 中)它们显示相同的结果,这可能是什么问题? (demo comparisons)。感谢任何帮助..

最佳答案

您的问题:

return count($arr) > 1 ? array_map(null, ...$arr) : $arr;

是你忽略了真实/虚假的初始检查:

return $arr
// v----------------------------truthy----
? count($arr) == 1 |
? array_chunk($arr[0], 1) |
: array_map(null, ...$arr) |
: $arr; |
// ^----------------------------falsey----

现在,我不是代码高尔夫球手,所以我不知道您张贴的空格是否“算”为字符。我不知道是不是到了“游戏时间”时,每个人都把他们的代码搞砸了,你只是在帮我们一个忙,让代码更易读。也就是说,这里有几个想法:

function transpose($arr)
{
return $arr
? //count($arr) == 1
//!isset($arr[1]) <-- if spaces "count", this is shorter
//!next($arr) <-- because no 0 in the arrays
@!$arr[1] // <-- the dirty stfu operator
? array_chunk($arr[0], 1)
: array_map(null, ...$arr)
: $arr;
}

现在,我在我的职业生涯中从未使用过 stfu 运算符,但如果手套脱落,也许值得一看。 Demo

我会一直盯着代码看,如果有任何问题,我会插话。

编辑:我刚刚意识到 !next($arr) 有效,因为示例数据中没有零。

其实,我为什么要玩否定,颠倒一切。呸!

function transpose($arr)
{
return $arr
? //isset($arr[1]) <-- if spaces "count", this is shorter
//next($arr) <-- because no 0 in the arrays
@$arr[1] // <-- the dirty stfu operator
? array_map(null, ...$arr)
: array_chunk($arr[0], 1)
: $arr;
}

关于php - 无法理解的条件和功能的错误操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53063556/

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