過去ログ

通りすがり
ExcelVBAだと、こんな感じかなぁ〜

Public Sub 第790回問題()
  Cells.Clear
  Dim cards() As String
  cards = Split("赤1,白1,青1,緑1,赤2,白2,青2,緑2,赤3,白3,青3,緑3,赤4,白4,青4,緑4,赤5,白5,青5,緑5", ",")
  Dim fcards(1 To 6) As String
  Dim count As Integer
  Fetch LBound(fcards), fcards, LBound(cards), cards, count
  Cells(1, 1) = count
End Sub

Private Sub Fetch(p As Integer, fcards() As String, n As Integer, cards() As String, count As Integer)
  If p > UBound(fcards) Then
    Dim colors As String
    Dim nos As String
    Dim s As String
    Dim i As Integer
    For i = LBound(fcards) To UBound(fcards)
      If InStr(colors, Left(fcards(i), 1)) = 0 Then colors = colors + Left(fcards(i), 1)
      If InStr(nos, Right(fcards(i), 1)) = 0 Then nos = nos + Right(fcards(i), 1)
      s = s + fcards(i) + " "
    Next
    If Len(colors) = 3 And Len(nos) = 3 Then
      count = count + 1
      Cells(count, 2) = s
    End If
    Exit Sub
  End If
  If n > UBound(cards) Then Exit Sub
  Fetch p, fcards, n + 1, cards, count
  fcards(p) = cards(n)
  Fetch p + 1, fcards, n + 1, cards, count
End Sub
   5月10日(木) 10:26:35     39317

過去問題一覧へ戻る