登录 立即注册

首页 > 绿虎论坛 > 建站 > 讨论/求助 (发帖)

问一个js分割数组的问题,


『回复列表(35|隐藏机器人聊天)』

20.

@echo醉老仙,我才发现,我和ChatGPT陷入了完全相同的逻辑陷阱。

把11个数分成均匀的5份是需要让其中一份有3个,其他有2个。

按3个分只能分4份。

按2个分会分出6份。

(/@Ta/2023-04-26 21:29//)

21.

这几天用过几次,发现chat都是瞎掰的,它不会验证是否正确,只能机械的给出答案
image.png(24.79 KB)

但反复问几次,改变方法后,还真有一个可以实现差不多的

function divideArrayIntoParts(arr, parts) {
  var results = [];
  var length = arr.length;
  var i = 0;

  while (i < length) {
    var size = Math.ceil((length - i) / parts);
    results.push(arr.slice(i, i + size));
    i += size;
    parts--;
  }

  return results;
}

var arrayToDivide = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
var parts = 5;
var result = divideArrayIntoParts(arrayToDivide, parts);

console.log(result); 

image.png(26.9 KB)
image.png(57.67 KB)

(/@Ta/2023-04-26 21:31//)

22.

@echo醉老仙

它不会验证是否正确,只能机械的给出答案

说起来,我确实亲自运行了我这个代码(和GPT给的逻辑一样),而且还运行了好几次,但我没有意识到它只分了4份,根本不符合要求,所以我也直接发出来了。

可以这么说,除了编造错误结果这一点不一样之外,GPT和我具有一致的行为逻辑

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
console.log(arrayParts(arr, 5));

function arrayParts(arr, n) {
    var result = [];
    var partSize = Math.ceil(arr.length / n); 
    for (var i = 0; i < arr.length; i += partSize) {
        result.push(arr.slice(i, i + partSize));
    }
    return result;
}
(/@Ta/2023-04-26 21:35//)

23.

@echo醉老仙,以下是一个真的能分成5份的代码,它会把多余的元素放在末尾:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
let n = 5;

let partSize = Math.floor(arr.length / n);
for (let i=1; arr.length > 0; i++) {
    if (i == n) {
        partSize = arr.length;
    }
    console.log(arr.splice(0, partSize)); 
}

图片.png(12.95 KB)

(/@Ta/2023-04-26 21:39//)

24.

23楼不好,12个分不均匀
图片.png(14.04 KB)

(/@Ta/2023-04-26 21:41//)

25.

看起来GPT给的答案确实挺好的:
图片.png(25.8 KB)

(/@Ta/2023-04-26 21:42//)

26.

而且“把M个元素均匀分成N份”这个问题比想象中的难很多,我其实想不到简单的解决方案。

(/@Ta/2023-04-26 21:43//)

27.

看起来GPT的方法是每次都重新评估接下来该怎么分。最开始拿走3个,然后就会发现再拿3个不够分,就改成拿2个。
这应该是很好的方法,不过我没想到。

(/@Ta/2023-04-26 21:45//)

28.

@老虎会游泳,我不想问它也是基于这个原因,就比如昨天有个朋友有一个需求

  • 把这段文本进行处理
  • 要求1:保持原格式
  • 要求2:删除句号后到</p>没有句号的内容,且要保留每个句号
  • 要求3:没有句号的行移除

<h1>树深时见鹿<h1/>
<p>树深时见鹿,溪午不闻钟,听雨寒更彻。开门落叶深!</p>
<p>客子光阴诗卷里,杏花消息雨声中?昨夜醉眠西浦月。今宵独钓南溪雪。</p>
<p>山近觉寒早,草堂霜气晴,树凋窗有日。池满水无声;芦花轻泛微澜。蓬窗独自清闲?</p>

  • 结果预览

<h1>树深时见鹿<h1/>
<p>树深时见鹿,溪午不闻钟,听雨寒更彻。</p>
<p>客子光阴诗卷里,杏花消息雨声中?昨夜醉眠西浦月。今宵独钓南溪雪。</p>
<p>山近觉寒早,草堂霜气晴,树凋窗有日。池满水无声;芦花轻泛微澜。</p>

  • 和朋友讨论得出的较好的解决代码(如有更好的建议请告知)
function cutp($str){
    $str=str_replace(PHP_EOL,'|||||',$str);
    $str=str_replace('。','。'.PHP_EOL,$str);
    $str=str_replace('</p>','</p>'.PHP_EOL,$str);
    $nrr=explode(PHP_EOL,$str);
    $nre='';
    foreach ($nrr as $row){
        if ($row){
            if (strstr($row,'。') || !strstr($row,'p>')){
                $nre.= $row;
            }elseif (strstr($row,'</p>') and !strstr($row,'<p>')){
                $nre.= '</p>';
            }
        }
    }
    $nre=str_replace('|||||',PHP_EOL,$nre);
    return $nre;
}

$nrr=explode(PHP_EOL,$nr);
$nrr_='';
foreach ($nrr as $row){
    $nrr_.=cutp($row).PHP_EOL;
}
echo $nrr_;

完事后,我想起来问一下gpt,结果就是都用正则,不用正则话就是substr的计算分割,关键它给出的代码运行后,得不到它给出的结果

image.png(128.49 KB)
image.png(59.26 KB)

朋友又尝试问了个简单的,这个已经很简答了吧,结果上来就是这,没有更加详细的语义引导,着实得不到好结果
image.png(248.12 KB)
image.png(12.85 KB)

(/@Ta/2023-04-26 21:57//)

29.

@echo醉老仙,它其实并没有运行代码,只是“凭感觉”写出“预想”的结果。所以它得到的结果和人类凭感觉写的差不多。

比如在这个案例中,GPT就把两个很相似但并不一样的字符串看成一样了,和人类的表现相同:

https://hu60.cn/q.php/bbs.topic.104384.html#nav

(/@Ta/2023-04-26 22:03//)

30.

所以如果GPT能装上插件真正运行代码查看结果,它应该就能和人类程序员一样进行调试和错误修复了。

我们手动粘贴结果给它也有类似的效果。

(/@Ta/2023-04-26 22:05//)

31.

我们手动粘贴结果给它也有类似的效果。

在这个过程中,人类和机器的地位似乎反转了——机器成了拥有主观能动性的那一方,而人类成了它的调试器;机器成了完成创造性工作的那一方,而人类只是简单的提供客观事实(运行结果)。

(/@Ta/2023-04-26 22:11//)

32.

可以这么说,除了编造错误结果这一点不一样之外,GPT和我具有一致的行为逻辑

所以@老虎会游泳,你到底是不是真人

(/@Ta/2023-05-05 10:30//)

33.

@水木易安,这需要你自己去发现。

(/@Ta/2023-05-05 10:31//)

34.

@老虎会游泳,插件怎么实现呢?我们认为chatgpt是能动性,然后限制一个语言的执行插件来规定某一结果的执行,
掌缘生灭(白)

(/@Ta/2023-05-05 22:29//)

35.

@c,什么插件

(/@Ta/2023-05-06 09:03//)

上一页 2/2页,共35楼

回复需要登录

5月13日 01:43 星期一

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1