Compiler info: go1.15.6, windows, 386
编写一个 run(io.Reader, io.Writer) 函数来处理输入输出。这样写的理由是:
- 在
main中调用run(os.Stdin, os.Stdout)来执行代码; - 测试时,将测试数据转换成
strings.Reader当作输入,并用一个strings.Builder来接收输出,将这二者传入run中,然后就能比较输出与答案了; - 对拍时需要实现一个暴力算法
runAC,参数和run一样。通过随机数据生成器来生成数据,分别传入runAC和run,通过比对各自的输出,来检查run中的问题。
交互题的写法要复杂一些,为方便测试,需要把涉及输入输出的地方抽象成接口,详见 interactive_problem。