initial commit
[urisagit/Sort-Maker.git] / paper / make_data.pl
1 #!/usr/local/bin/perl
2
3
4 @data = rand_ints( 10, 4, 8 ) ;
5
6 print "@data\n" ;
7
8
9 @data = rand_padded_ints( 10, 4, 8 ) ;
10
11 print "@data\n" ;
12
13 @data = rand_deal( 10, 4 .. 8 ) ;
14
15 print "@data\n" ;
16
17
18 @data = rand_deal( 10, 'aa0' .. 'zz9' ) ;
19
20 print "@data\n" ;
21
22 @data = rand_picks( 10, 'aa0' ) ;
23
24 print "@data\n" ;
25
26
27
28 sub rand_picks {
29
30         my( $count, $pattern ) = @_ ;
31
32         my( @rand, @chars, $char, $pick, @digits, @alphas ) ;
33
34         @chars = split( '', $pattern ) ;
35
36         @digits = ( '0' .. '9' ) ;
37         @alphas = ( 'a' .. 'z', 'A' .. 'Z' ) ;
38
39         while( $count-- ) {
40
41                 $pick = '' ;
42
43                 foreach $char ( @chars ) {
44
45                         if ( $char eq 'a' ) {
46
47                                 $pick .= $alphas[ rand 52 ] ;
48                                 next ;
49                         }
50
51                         if ( $char eq '0' ) {
52
53                                 $pick .= $digits[ rand 10 ] ;
54                                 next ;
55                         }
56                 }
57
58                 push( @rand, $pick ) ;
59         }
60
61         @rand ;
62 }
63
64 sub rand_deal {
65
66         my( $count, @deck ) = @_ ;
67
68         my( @rand ) ;
69
70         push( @rand, $deck[ rand( @deck ) ] ) while $count-- ;
71
72         @rand ;
73 }
74
75
76
77 sub rand_ints {
78
79         my( $count, $base, $range ) = @_ ;
80
81         my( @rand ) ;
82
83         push( @rand, int( rand( $range ) + $base ) ) while $count-- ;
84
85         @rand ;
86 }
87
88
89
90 sub rand_padded_ints {
91
92         my( $count, $base, $range ) = @_ ;
93
94         my( @rand, $pad ) ;
95
96         $pad = length( $base + $range ) ;
97
98         push( @rand, sprintf( "%0${pad}d", int( rand( $range ) + $base ) ) )
99                                                         while $count-- ;
100
101         @rand ;
102 }
103
104
105
106
107
108 #splice( @data, int( rand( @data + 1 ) ), 0, $base++ ) while $cnt-- ;
109
110 #print "@data\n" ;