@@ -13,14 +13,24 @@ function checkForNextLine($arr)
13
13
return $ arr ;
14
14
}
15
15
16
- function bubbleSort ($ sort_array )
16
+ function castToInt ($ firstNum , $ secondNum )
17
+ {
18
+ return (int )$ firstNum < (int )$ secondNum ;
19
+ }
20
+
21
+ function checkForEquality ($ firstNum , $ secondNum )
22
+ {
23
+ return $ firstNum < $ secondNum ;
24
+ }
25
+
26
+ function bubbleSort ($ sort_array , $ checkEquality )
17
27
{
18
28
$ array_indexes = count ($ sort_array );
19
29
$ sorted = false ;
20
30
21
31
for ($ i = 0 ; $ i < $ array_indexes ; $ i ++) {
22
32
for ($ j = 0 ; $ j < $ array_indexes - $ i - 1 ; $ j ++) {
23
- if ($ sort_array [$ j + 1 ] < $ sort_array [$ j ]) {
33
+ if ($ checkEquality ( $ sort_array [$ j + 1 ], $ sort_array [$ j ]) ) {
24
34
$ tmp = $ sort_array [$ j + 1 ];
25
35
$ sort_array [$ j + 1 ] = $ sort_array [$ j ];
26
36
$ sort_array [$ j ] = $ tmp ;
@@ -37,10 +47,18 @@ function bubbleSort($sort_array)
37
47
return $ sort_array ;
38
48
}
39
49
40
- if ($ argc > 1 && substr ($ argv [1 ], 0 , 1 ) !== '- ' ) {
41
- $ fileName = $ argv [1 ];
50
+ $ optind = null ;
51
+ $ options = getopt ("n " , [], $ optind );
52
+ if (key_exists ("n " , $ options )) {
53
+ $ funcCallback = 'castToInt ' ;
54
+ } else {
55
+ $ funcCallback = 'checkForEquality ' ;
56
+ }
57
+
58
+ if (isset ($ argv [$ optind ])) {
59
+ $ fileName = $ argv [$ optind ];
42
60
} else {
43
61
$ fileName = 'php://stdin ' ;
44
62
}
45
63
46
- echo implode ("" , bubbleSort (checkForNextLine (file ($ fileName ))));
64
+ echo implode ("" , bubbleSort (checkForNextLine (file ($ fileName )), $ funcCallback ));
0 commit comments