cyaron icon indicating copy to clipboard operation
cyaron copied to clipboard

指出一个疑似的 bug?

Open dayanzaiHappy opened this issue 1 year ago • 1 comments

存在某些问题导致一部分(或者全部)的 in 文件没有成功生成数据。 并且如果用 output_gen 读入没有数据的 in 文件会死机。

虽然我也不知道具体什么原因。

#!/usr/bin/env python

from cyaron import * # 引入CYaRon的库

_n = ati([0, 7, 50, 1E4]) # ati函数将数组中的每一个元素转换为整形,方便您可以使用1E4一类的数来表示数据大小
_m = ati([0, 11, 100, 1E4]) 

# 这是一个图论题的数据生成器,该题目在洛谷的题号为P1339
for i in range(1, 4): # 即在[1, 4)范围内循环,也就是从1到3
    test_data = IO(file_prefix="heat", data_id=i) # 生成 heat[1|2|3].in/out 三组测试数据

    n = _n[i] # 点数
    m = _m[i] # 边数
    s = randint(1, n) # 源点,随机选取一个
    t = randint(1, n) # 汇点,随机选取一个
    test_data.input_writeln(n, m, s, t) # 写入到输入文件里,自动以空格分割并换行

    graph = Graph.graph(n, m, weight_limit=5) # 生成一个n点,m边的随机图,边权限制为5
    test_data.input_writeln(graph) # 自动写入到输入文件里,默认以一行一组u v w的形式输出

    test_data.output_gen("D:\\std_binary.exe") # 标程编译后的可执行文件,不需要freopen等,CYaRon自动给该程序输入并获得输出作为.out

这是官方给的代码。

我将这三行注释掉了,因为我没有 std_binary.exe 这个文件。

按照道理来说他还是会生成 heat1 heat2 heat3,但实际上生成的 heat3 并没有数据,而 heat1 和 heat2 有。

    graph = Graph.graph(n, m, weight_limit=5) # 生成一个n点,m边的随机图,边权限制为5
    test_data.input_writeln(graph) # 自动写入到输入文件里,默认以一行一组u v w的形式输出

    test_data.output_gen("D:\\std_binary.exe") # 标程编译后的可执行文件,不需要freopen等,CYaRon自动给该程序输入并获得输出作为.out

然后我把除了 output_gen 的其他行的注释删掉,发现却正常了。

upd:有时候是一个 in 都没数据。

dayanzaiHappy avatar Aug 24 '24 09:08 dayanzaiHappy

确实有这个 bug,,,,

liangruichen avatar Aug 28 '24 03:08 liangruichen

没有输出是不是要设置 disable_output=True

weilycoder avatar Sep 30 '24 16:09 weilycoder

你的问题可能和输出缓冲区有关,但现在我无法在我的最新版本复现,可能已经被修复。

weilycoder avatar Oct 04 '24 01:10 weilycoder

你现在还有问题吗 有问题的话就再reopen吧

Mr-Python-in-China avatar Oct 19 '24 05:10 Mr-Python-in-China