Nhờ giúp hàm: ghép 5 số tự nhiên thành 1 số

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

mrjun80

Thành viên mới
Tham gia
30/3/23
Bài viết
29
Được thích
-1
Các bác chỉ giúp hàm ghép 5 số ngẫu nhiên từ 0 đến 9, thành 1 số có 5 chữ số
ví dụ: 0-1-2-3-4 thành các số: 01234, 02134, 12340, 14023, 23041, 24301, 30142, 42301.... (ko có 2 số trùng nhau cả ở đầu vào, lẫn kết quả ghép)
trên excel các số sẽ ở các cột từ A1:E1 , chuỗi các số ghép đc sẽ nằm ở cột F1:F999
xin cảm ơn
 
Tôi không khè ai hết nhé! Bạn nói năng diễn đạt không rõ ràng làm mất công người khác rồi phản ứng khi người khác góp ý là bạn sai. Tôi chỉ nhắc bạn cái sai khi vặc lại người góp ý.
5 số đảo đi đảo lại đó là hoán vị, toán lớp 10 mà không nhớ rồi nói lung tung cho mất công người ta.
Cỡ cách ăn nói của thớt mà được giúp đữ như vậy cũng khá bất công. Tôi nghĩ người viết code chỉ muốn thử nghề của mình thôi.

Nếu là tôi thì tôi dùng giải thuật khác:
` Tìm số lớn, nhất và nhỏ nhất trong 5 số được cho. Ví dụ 7, 2
- Xét số từ 22222 đến 77777 (thiệt ra nếu siêng thì tìm ra 23456 và 76543)
-- Số nào không chứa đủ 5 số kia thì loại.
Hết. Tuy hơi chậm nhưng chắc ăn.

Function So2Chuoi(s1 As String, s2 As String) As Boolean
' xét xem tất cả các ký tự trong s1 đều có trong s2
Dim i As Long
For i = 1 To Len(s1)
If InsStr(s2, Mid(s1,i,1)) = 0 Thên Exit Function
Next i
So2Chuoi = True
End Function

' code chính
chuoiSo = CStr(soLon)
doDai = Len(chuoiSo)
For i = soNho To soLon
If So2Chuoi(chuoiSo, String(doDai-Len(i), "0") & i) Then ghi i xuống
Next i
 
Lần chỉnh sửa cuối:
Upvote 0
Trường hợp trong 5 ô đó có số 0, code cần phải bẫy thêm. Hahaha ...
Bẫy chỉ cần đại khái thôi. Với thái độ của thớt không cần phải làm gì nhiều.

- Xét số từ 22222 đến 77777 (thiệt ra nếu siêng thì tìm ra 23456 và 76543)s
1. Số 01234 thì cũng như 1234.

' code chính
chuoiSo = CStr(soLon)
doDai = Len(chuoiSo)
For i = soNho To soLon
If So2Chuoi(chuoiSo, String(doDai-Len(i), "0") & i) Then ghi i xuống
Next i
2. Cái chỗ đỏ đỏ là chỗ chèn thêm 0's cho đủ số ký tự. Lúc So2Chuoi nhận tham số thì đã có đủ 0's nếu cần.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom