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