2W8Tx5hUl2L0RzkL5YpxlS changeset

Changeset323136613639 (b)
ParentNone (a)
ab
0+Option Explicit
0+
0+Class cls_List
0+        Public Head
0+        Public Tail
0+End Class
0+
0+Function fun_cons(head, tail)
0+        Dim list
0+        Set list = New cls_List
0+        list.Head = head
0+        Set list.Tail = tail
0+        Set fun_cons = list
0+End Function
0+
0+Function fun_rev(list, rev)
0+        If list Is Nothing Then
0+                Set fun_rev = rev
0+        Else
0+                Set fun_rev = fun_rev(list.Tail, fun_cons(list.Head, rev))
0+        End If
0+End Function
0+
0+Function fun_join(list, sep)
0+        If list Is Nothing Then
0+                fun_join = ""
0+        Else
0+                If list.Tail Is Nothing Then
0+                        fun_join = list.Head
0+                Else
0+                        fun_join = list.Head & sep & fun_join(list.Tail, sep)
0+                End If
0+        End If
0+End Function
0+
0+Function fun_div(s, n)
0+        If Len(s) = "" Then
0+                Set fun_div = Nothing
0+        Else
0+                Dim list
0+                Set list = Nothing
0+
0+                Dim i
0+               
0+                For i = 1 + n To Len(s) Step n
0+                        Set list = fun_cons(Mid(s, i - n, n), list)
0+                Next
0+               
0+                Set list = fun_cons(Mid(s, i - n, Len(s) - (i - n) + 1), list)
0+               
0+                Set fun_div = fun_rev(list, Nothing)
0+        End If
0+End Function
0+
0+Function fun_format(num, n, sep)
0+        Dim r
0+        r = StrReverse(num)
0+        Set r = fun_div(r, n)
0+        r = fun_join(r, sep)
0+        r = StrReverse(r)
0+        fun_format = r
0+End Function
0+
0+Sub fun_main()
0+        Call WScript.Echo(fun_format("", 3, ","))
0+        Call WScript.Echo(fun_format("0", 3, ","))
0+        Call WScript.Echo(fun_format("90", 3, ","))
0+        Call WScript.Echo(fun_format("890", 3, ","))
0+        Call WScript.Echo(fun_format("7890", 3, ","))
0+        Call WScript.Echo(fun_format("67890", 3, ","))
0+        Call WScript.Echo(fun_format("567890", 3, ","))
0+        Call WScript.Echo(fun_format("4567890", 3, ","))
0+        Call WScript.Echo(fun_format("34567890", 3, ","))
0+        Call WScript.Echo(fun_format("234567890", 3, ","))
0+        Call WScript.Echo(fun_format("1234567890", 3, ","))
0+End Sub
0+
0+fun_main
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
--- Revision None
+++ Revision 323136613639
@@ -0,0 +1,78 @@
+Option Explicit
+
+Class cls_List
+ Public Head
+ Public Tail
+End Class
+
+Function fun_cons(head, tail)
+ Dim list
+ Set list = New cls_List
+ list.Head = head
+ Set list.Tail = tail
+ Set fun_cons = list
+End Function
+
+Function fun_rev(list, rev)
+ If list Is Nothing Then
+ Set fun_rev = rev
+ Else
+ Set fun_rev = fun_rev(list.Tail, fun_cons(list.Head, rev))
+ End If
+End Function
+
+Function fun_join(list, sep)
+ If list Is Nothing Then
+ fun_join = ""
+ Else
+ If list.Tail Is Nothing Then
+ fun_join = list.Head
+ Else
+ fun_join = list.Head & sep & fun_join(list.Tail, sep)
+ End If
+ End If
+End Function
+
+Function fun_div(s, n)
+ If Len(s) = "" Then
+ Set fun_div = Nothing
+ Else
+ Dim list
+ Set list = Nothing
+
+ Dim i
+
+ For i = 1 + n To Len(s) Step n
+ Set list = fun_cons(Mid(s, i - n, n), list)
+ Next
+
+ Set list = fun_cons(Mid(s, i - n, Len(s) - (i - n) + 1), list)
+
+ Set fun_div = fun_rev(list, Nothing)
+ End If
+End Function
+
+Function fun_format(num, n, sep)
+ Dim r
+ r = StrReverse(num)
+ Set r = fun_div(r, n)
+ r = fun_join(r, sep)
+ r = StrReverse(r)
+ fun_format = r
+End Function
+
+Sub fun_main()
+ Call WScript.Echo(fun_format("", 3, ","))
+ Call WScript.Echo(fun_format("0", 3, ","))
+ Call WScript.Echo(fun_format("90", 3, ","))
+ Call WScript.Echo(fun_format("890", 3, ","))
+ Call WScript.Echo(fun_format("7890", 3, ","))
+ Call WScript.Echo(fun_format("67890", 3, ","))
+ Call WScript.Echo(fun_format("567890", 3, ","))
+ Call WScript.Echo(fun_format("4567890", 3, ","))
+ Call WScript.Echo(fun_format("34567890", 3, ","))
+ Call WScript.Echo(fun_format("234567890", 3, ","))
+ Call WScript.Echo(fun_format("1234567890", 3, ","))
+End Sub
+
+fun_main