ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ½Ð±Ð3¦ì¼Æ±Æ¦C²Õ¦X

¥»©«³Ì«á¥Ñ stillfish00 ©ó 2019-2-21 13:53 ½s¿è

¦^´_ 1# eric7765
¥ô·N¦ì¼Æ±Æ¦C
  1. Sub Solution()
  2.     Range(Cells(2, "D"), Cells(Rows.Count, "E")).ClearContents  ' Clear result
  3.     If Cells(Rows.Count, "A").End(xlUp).Row < 2 Then Exit Sub   ' Exit if no input
  4.     Dim text As String, id, r
  5.     r = 1
  6.     For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
  7.         text = Cells(i, "A").text
  8.         id = Cells(i, "B").Value
  9.         If Len(text) > 0 Then
  10.             For Each s In GetAllPermutation(text)
  11.                 r = r + 1
  12.                 Cells(r, "D").Value = s
  13.                 Cells(r, "E").Value = id
  14.             Next
  15.         End If
  16.     Next
  17. End Sub
½Æ»s¥N½X
  1. Function GetAllPermutation(ansi_str As String)
  2.     Dim ans: Set ans = CreateObject("scripting.dictionary")
  3.     Dim ch, new_ans
  4.     ans("") = 0
  5.     For i = 1 To Len(ansi_str)
  6.         ch = Mid(ansi_str, i, 1)
  7.         Set new_ans = CreateObject("scripting.dictionary")
  8.         For Each s In ans.keys()
  9.             For j = 0 To Len(s)
  10.                 new_ans(Left(s, j) & ch & Mid(s, j + 1)) = 0
  11.             Next
  12.         Next
  13.         Set ans = new_ans
  14.     Next
  15.     GetAllPermutation = ans.keys()
  16. End Function
½Æ»s¥N½X
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

¦^´_ 7# eric7765
CÄ椤 ¦pªG¦³¥ô·N¦r¦A¶i¦æ±Æ¦C
  1. Sub Solution()
  2.     Range(Cells(2, "D"), Cells(Rows.Count, "E")).ClearContents  ' Clear result
  3.     If Cells(Rows.Count, "A").End(xlUp).Row < 2 Then Exit Sub   ' Exit if no input
  4.     Dim text As String, id, r
  5.     r = 1
  6.     For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
  7.         text = Cells(i, "A").text
  8.         id = Cells(i, "B").Value
  9.         If Len(text) > 0 Then
  10.             If Len(Cells(i, "C").text) > 0 Then
  11.                 For Each s In GetAllPermutation(text)
  12.                     r = r + 1
  13.                     Cells(r, "D").Value = s
  14.                     Cells(r, "E").Value = id
  15.                 Next
  16.             Else
  17.                     r = r + 1
  18.                     Cells(r, "D").Value = text
  19.                     Cells(r, "E").Value = id
  20.             End If
  21.         End If
  22.     Next
  23. End Sub
  24. Function GetAllPermutation(ansi_str As String)
  25.     Dim ans: Set ans = CreateObject("scripting.dictionary")
  26.     Dim ch, new_ans
  27.     ans("") = 0
  28.     For i = 1 To Len(ansi_str)
  29.         ch = Mid(ansi_str, i, 1)
  30.         Set new_ans = CreateObject("scripting.dictionary")
  31.         For Each s In ans.keys()
  32.             For j = 0 To Len(s)
  33.                 new_ans(Left(s, j) & ch & Mid(s, j + 1)) = 0
  34.             Next
  35.         Next
  36.         Set ans = new_ans
  37.     Next
  38.     GetAllPermutation = ans.keys()
  39. End Function
½Æ»s¥N½X
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

        ÀR«ä¦Û¦b : ¤Ó¶§¥ú¤j¡B¤÷¥À®¦¤j¡B§g¤l¶q¤j¡A¤p¤H®ð¤j¡C
ªð¦^¦Cªí ¤W¤@¥DÃD