This page looks best with JavaScript enabled

Today I Learned/Thought

 ·  ☕ 1 min read
    🏷️
  • #TIL

我今天所学到的、想到的

*nix 环境,快速生成大量随机的leetcode 测试用例

当我在 leetcode做了一道算法题后, 我会先在心里考虑一下输入的边界情况(或者非法输入),时间复杂度(要是数据里过大并且我的算法时间复杂度太差就会 Time Limit Exceed)。

所以我要么手动在 test cases 里手写测试用例, 要么用 linux 下这么几个有用的命令随机生成大量的测试用例:

1
2
3
4
5
6
seq  # print a sequence of numbers

shuf #  generate random permutations

paste #   merge lines of files

用这三个简单的工具, 一般就能生成我想要的测试数据了。
比如我想生成一个数组, 数组的每个元素都是数字,整个数组要是 unsorted:

1

要是想要超大的数据量, 我一般会写到 /tmp/ 里,再配合 xclip 将内容读进到 粘贴板, 最终粘贴到网页里去

https://leetcode.com/problems/combination-sum/solution/

1
2
3

seq 100 | shuf | paste -s -d ,

我喜欢用 printf 配合这些工具输出我想要的格式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
> cat gen.sh
N=100
if [[ $# -eq 1 ]];then
    N=$1
fi
for n in $(seq $N) ;
do
    if [[ $(($RANDOM % 3 )) -eq 0 ]];then
        echo $n
    fi
done


> printf "[%s]\n" "$(./gen.sh 365 | paste -s -d , )" 

[3,10,11,18,21,22,32,37,40,44,45,46,48,50,52,53,55,57,61,63,64,65,66,68,69,76,79,90,91,93,95,96,99,100]

> printf "[%s]\n" "$(./gen.sh 365 | paste -s -d , )" | xclip -sel clip 
# 生成随机结果, 并且复制到粘贴板

心中的疑惑

  1. 在终端里快速生成大量随机数的最佳实践是什么?

zsh is running

Share on

EXEC
WRITTEN BY
EXEC
Evil EXEC