Làm sao ghép ngẫu nhiên các từ lại với nhau? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

othanhquango

Thành viên hoạt động
Tham gia
6/3/09
Bài viết
138
Được thích
7
Cả nhà ơi, em đang gặp vấn đề sau và không biết phải làm thế nào nên mong cả nhà giúp em vụ này với:

Vd có chuỗi như sau tại ô A1: "Cả nhà giúp em với, em cảm ơn rất nhiều".

Bây giờ làm thế nào để sau khi em nhập liệu (hoặc thay đổi) xong ô A1 thì ô A2 sẽ có một chuỗi mới trên qui tắc ghép ngẫu nhiên và xáo trộn các từ đó với nhau. Vd như: "cả giúp, ơn em, em, cảm ơn nhiều, với em giúp em với ..."

Đại khái là như thế, và nếu được cả nhà giúp em thỏa các điều kiện sau nha:
1. Các từ được ghép với nhau phải là ngẫu nhiên về thứ tự cũng như ngẫu nhiên về số từ, và cách nhau dấu phẩy.
2. Cụm từ được ghép sẽ có ngẫu nhiên từ 1 đến 5 từ.
3. Các cụm từ được tạo ra sẽ nối với nhau bằng dấu phẩy, tối thiểu là 5 cụm từ và tối đa là 10 cụm từ (hoặc từ) được tạo ra.

Em nói vậy không biết cả nhà có hiểu ý em không nhỉ?
Rất mong cả nhà giúp đỡ em.
Em chân thành cảm ơn.
 
Phân tách vấn đề từng giai đoạn và giải quyết

làm thế nào để sau khi em nhập liệu (hoặc thay đổi) xong ô A1 thì ô A2 sẽ có một chuỗi mới

Đặt một event, khi ô A1 thay đổi thì event sẽ khởi động 1 macro. Macro này là một code, ghi trị vào A2

1. Các từ được ghép với nhau

Dúng hàm split tách dùng chữ ra thành từng từ (tới đây bạn sẽ thấy đề bài của bạn dỏm: dấu phẩy bỏ vào đâu?)

phải là ngẫu nhiên về thứ tự cũng như ngẫu nhiên về số từ, và cách nhau dấu phẩy.

Để thực hiện được tình trạng ngẫu nhiên, dùng hàm random.
Có tất cả là 3 hai giai đoạn random - giai đoạn này lồng vào giai đoạn kia:
Giai đoạn thứ nhất random số câu muốn ghép #1#
Giai đoạn thứ hai, mỗi câu muốn ghép, random số từ muốn ghép #2#
Giai đoạn thứ ba, mỗi từ muốn ghép random từ mảng từ được split ra bên trên (số random là chỉ số của từ trong mảng) #3#

Vòng #1# và #2# là số random tự do, Vòng #3# là số random có điều kiện (tức là từ nào đã được dùng rồi thì không được dùng nữa).

2. Cụm từ được ghép sẽ có ngẫu nhiên từ 1 đến 5 từ.

Đặt giới hạn cho số random vòng #2#

3. Các cụm từ được tạo ra sẽ nối với nhau bằng dấu phẩy

Tạo các cụm từ trong một mảng. Tạo xong thì join chúng lại

tối thiểu là 5 cụm từ và tối đa là 10 cụm từ (hoặc từ) được tạo ra.

Đặt giới hạn cho số random vòng #1#

Trước khi kết thúc:
Sau khi làm xong, xem lại để chỉnh sửa đáp ứng với giới hạn do input - đôi khi có những cụm từ bị giới hạn: Ví dụ trong A1 chỉ có 2 từ thì chỉ có thể có tối đa 4 cách gộp thành cụm từ trong A2.
 
Upvote 0


Dúng hàm split tách dùng chữ ra thành từng từ (tới đây bạn sẽ thấy đề bài của bạn dỏm: dấu phẩy bỏ vào đâu?)

Hic, cái này là cố tình đó anh. Em quên note thêm là nếu trong câu có bất kỳ dấu nào trong các dấu sau thì bỏ tất: dấu than, dấu chấm, dấu hỏi, dấu phẩy, @, #, $, %, &, (,),-,+


Vòng #1# và #2# là số random tự do, Vòng #3# là số random có điều kiện (tức là từ nào đã được dùng rồi thì không được dùng nữa).

Từ nào đã dùng thì vẫn được dùng nữa nha anh. Miễn sao là không bao giờ được phép có 02 cụm từ giống nhau.
vd: nếu đã có cụm "giúp em" rồi thì sẽ không được có thêm một cụm "giúp em" nhưng nếu như là "em giúp" thì vẫn được hoặc "giúp em với", "giúp", "em", ... thì vẫn được. Nói chung là không có cụm nào giống nhau 100% là được.

Nếu được nhờ anh code dùm em thử với. Code em cũng không rành lắm.

Chân thành cảm ơn anh.
 
Lần chỉnh sửa cuối:
Upvote 0
Cả nhà ơi, em đang gặp vấn đề sau và không biết phải làm thế nào nên mong cả nhà giúp em vụ này với:

Vd có chuỗi như sau tại ô A1: "Cả nhà giúp em với, em cảm ơn rất nhiều".

Bây giờ làm thế nào để sau khi em nhập liệu (hoặc thay đổi) xong ô A1 thì ô A2 sẽ có một chuỗi mới trên qui tắc ghép ngẫu nhiên và xáo trộn các từ đó với nhau. Vd như: "cả giúp, ơn em, em, cảm ơn nhiều, với em giúp em với ..."

Đại khái là như thế, và nếu được cả nhà giúp em thỏa các điều kiện sau nha:
1. Các từ được ghép với nhau phải là ngẫu nhiên về thứ tự cũng như ngẫu nhiên về số từ, và cách nhau dấu phẩy.
2. Cụm từ được ghép sẽ có ngẫu nhiên từ 1 đến 5 từ.
3. Các cụm từ được tạo ra sẽ nối với nhau bằng dấu phẩy, tối thiểu là 5 cụm từ và tối đa là 10 cụm từ (hoặc từ) được tạo ra.

Em nói vậy không biết cả nhà có hiểu ý em không nhỉ?
Rất mong cả nhà giúp đỡ em.
Em chân thành cảm ơn.

1> Copy code dưới đây vào 1 module:
Mã:
Function Draw(Arr, Amount As Long)
  Application.Volatile
  Dim index As Long, k As Long, d As Long, c As Long, tmpArr, original
  If Amount > UBound(Arr) - LBound(Arr) + 1 Then Exit Function
  original = Arr
  ReDim tmpArr(1 To Amount)
  d = LBound(original)
  c = UBound(original)
  Randomize
  For k = 1 To Amount
    index = Int(Rnd() * (c - d + 1)) + d
    tmpArr(k) = original(index)
    original(index) = original(k + LBound(original) - 1)
    d = d + 1
  Next k
  Draw = tmpArr
End Function
Mã:
Function RandText(ByVal Text As String) As String
  Dim Arr, chk As Boolean, tmp As String
  Dim lCount As Long, lComma As Long
  On Error Resume Next
  tmp = Trim(Text)
  If InStr(1, tmp, ",") Then
    chk = True
    tmp = Replace(tmp, ",", "")
  End If
  Arr = Split(tmp, " ")
  lCount = UBound(Arr) + 1
  Arr = Draw(Arr, lCount)
  If chk Then
    Randomize
    lComma = Int(Rnd() * (lCount - 1)) + 1
    Arr(lComma) = Arr(lComma) & ","
  End If
  RandText = Join(Arr, " ")
End Function
2> Áp dụng
Gõ công thức vào cell A2: =RandText(A1)
---------------------
Chưa hiểu lắm yêu cầu nên làm đại ---> Sai sẽ làm tiếp
Ẹc... Ẹc...
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh đã giúp đỡ, tuy nhiên sau khi test thì em thấy như sau:
1. Chưa bỏ các dấu câu (chấm, phẩy, than, ...)
2. Chưa phân thành các cụm từ (cách nhau bằng dấu phẩy) mà chỉ là xáo trộn vị trí của đoạn cũ.
3. Đoạn mới không nhất thiết phải có độ dài bằng đoạn cũ.

VD: "giúp em với" sau khi dùng có thể thành đoạn thế này: "giúp, với em, em giúp với, với em giúp, giúp em với em giúp, giúp em giúp em, ...". Đại khái là như thế, và nếu được nên có các tham số sau.
1. Quy định được độ dài tối đa của chuối mới là 255 ký tự, tuy nhiên không được cắt bỏ từ. VD thế này là ko được: "giúp em v" (thiếu phần ới)
2. Quy định được số từ tối đa trong cụm từ mới. Ví dụ nếu để là 4 từ thì đoạn mới mỗi cụm từ được ghép lại sẽ có <= 4 từ. Vd: "Giúp em với" => "Giúp em, với em, với em giúp, giúp với em giúp,..." không được nhiều hơn số từ đã quy định.
3. Quy định cụm từ tối đa phát sinh trong chuỗi mới, ví dụ nếu để là 3 thì đoạn mới sẽ có 3 cụm từ được sinh ra.
VD: "Giúp em với" => "em giúp với , giúp, với em".
Hic, không biết cả nhà có hiểu ý em không nhỉ? Mong cả nhà giúp em. Hy vọng các anh không bị rối :(.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh đã giúp đỡ, tuy nhiên sau khi test thì em thấy như sau:
1. Chưa bỏ các dấu câu (chấm, phẩy, than, ...)
2. Chưa phân thành các cụm từ (cách nhau bằng dấu phẩy) mà chỉ là xáo trộn vị trí của đoạn cũ.
3. Đoạn mới không nhất thiết phải có độ dài bằng đoạn cũ.

VD: "giúp em với" sau khi dùng có thể thành đoạn thế này: "giúp, với em, em giúp với, với em giúp, giúp em với em giúp, giúp em giúp em, ...". Đại khái là như thế, và nếu được nên có các tham số sau.
1. Quy định được độ dài tối đa của chuối mới là 255 ký tự, tuy nhiên không được cắt bỏ từ. VD thế này là ko được: "giúp em v" (thiếu phần ới)
2. Quy định được số từ tối đa trong cụm từ mới. Ví dụ nếu để là 4 từ thì đoạn mới mỗi cụm từ được ghép lại sẽ có <= 4 từ. Vd: "Giúp em với" => "Giúp em, với em, với em giúp, giúp với em giúp,..." không được nhiều hơn số từ đã quy định.
3. Quy định cụm từ tối đa phát sinh trong chuỗi mới, ví dụ nếu để là 3 thì đoạn mới sẽ có 3 cụm từ được sinh ra.
VD: "Giúp em với" => "em giúp với , giúp, với em".
Hic, không biết cả nhà có hiểu ý em không nhỉ? Mong cả nhà giúp em. Hy vọng các anh không bị rối :(.

Vậy mục đích cuối cùng của bạn là để ứng dụng vào cái gì vậy?
 
Upvote 0
Vậy mục đích cuối cùng của bạn là để ứng dụng vào cái gì vậy?

Tôi nghĩ bài này được NV giảng dạy đưa ra để dạy cách phân tích vấn đề và từ đó đưa ra giải thuật - code chỉ là việc phụ. Vì vậy tôi mới cố tình chỉ cho quy trình phân tích.
 
Upvote 0
Vậy mục đích cuối cùng của bạn là để ứng dụng vào cái gì vậy?

Mục đích cuối cùng của mình là cho một đoạn văn (gồm các dấu câu) => Xuất ra một đoạn mới trong đó bao gồm các cụm từ (bất kỳ) là các từ được sử dụng trong đoạn văn. Tuy nhiên, đoạn mới phải thỏa các điều kiện như mình đã nêu ở trên.
 
Upvote 0
Vậy mục đích cuối cùng của bạn là để ứng dụng vào cái gì vậy?

Mục đích cuối cùng của mình là xuất ra một đoạn văn mới trong đó bao gồm các cụm từ (bất kỳ) là các từ được sử dụng trong đoạn văn mẫu nối lại với nhau. Tuy nhiên, đoạn mới phải thỏa các điều kiện như mình đã nêu ở trên.
 
Upvote 0
Mục đích cuối cùng của mình là cho một đoạn văn (gồm các dấu câu) => Xuất ra một đoạn mới trong đó bao gồm các cụm từ (bất kỳ) là các từ được sử dụng trong đoạn văn. Tuy nhiên, đoạn mới phải thỏa các điều kiện như mình đã nêu ở trên.

Cái đó thì bạn đã trình bày từ đầu rồi (tôi hiểu). Cái tôi muốn hỏi là ĐỂ LÀM CÁI GÌ?
Chẳng lẽ tạo ra mấy câu vô nghĩa ấy để NHÌN CHƠI?
Tôi làm cái gì cũng phải biết ý nghĩa, mục đích của nó ---> Làm mà hổng biết để làm gì thì thôi.. nghỉ làm cho rồi
 
Upvote 0
Mục đích cuối cùng của mình là xuất ra một đoạn văn mới trong đó bao gồm các cụm từ (bất kỳ) là các từ được sử dụng trong đoạn văn mẫu nối lại với nhau. Tuy nhiên, đoạn mới phải thỏa các điều kiện như mình đã nêu ở trên.

Mục đích của bạn là để dùng vào việc gì? Hay chỉ viết chơi, luyện thuật toán, luyện cách code?
Bạn cho vd. "Tôi đi ăn cơm bụi đây". Tôi hỏi: những cụm như "cơm đi bụi", "cơm ăn tôi" bạn định dùng vào việc gì?
Tôi nghĩ là ý của ndu là thế.
 
Upvote 0
Ah, mục đích của mình là tách ra các từ hoặc cụm từ để làm meta keyword từ đoạn meta description có liên quan (Cái này là làm bên SEO web nhằm để đưa website lên top google đó mà).
Mình ví dụ đơn giản như sau, ví dụ mình có đoạn "giải pháp excel" chẳng hạn, mình muốn nó có các keyword tự động như:"excel, giải, pháp, giải excel, pháp excel, excel giải pháp, ..." như vậy khi người dùng tìm các từ khóa bất kỳ có liên quan đến nội dung trên đều thấy website mình trên google.com
 
Upvote 0
Web KT

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

Trả lời
59
Đọc
46K
Back
Top Bottom