05. juli 2017 - 17:36Der er
9 kommentarer og 1 løsning
Udfordring :-) - Gruppering af tilfældige tal
Hej
Jeg har fået en "udfordring" på arbejde, jeg ikke selv kan knække :-(
Har en række tilfældige tal fra 1 - 4, der skal grupperes så de giver 8 i hver gruppe. Eks. på tal 4,2,3,1,3,2,4,3,2,4,3,2,1,4,4,2............
De skal nu grupperes, så hver gruppe giver 8 4+4 = 8 4+4 = 8 osv. til 4 ikke optræder mere Næste 4+3+1 3+3+2 3+3+1+1 3+2+2+1 osv....... Den sidste gruppe kan så ende på en tilfældig sum, hvis ikke summen af tal går lige op når de deles med 8. (summen af tal er maksimum 288) 3+2+1 (kunne være slutningen.
Nogen der kan knække den i sommervarmen, så tager jeg hatten af :-) God sommer til jer alle
en rutine: læg alle tal i en tekststreng fjern det højeste (og husk det og forkort tekststreng left() og right() så dit tal er væk) træk dit tal fra 8, og du har en diff - find det første tal med diff hvis sum af dem giver 8, så udskriv og forfra - ellers fratræk 1 fra diff osv - der skal loopes, så du i værste fald opfanger 1+1+1+1+1+1+1+1
dvs hver tal, du finder og vælger fjernes i tekststreng, så den bliver kortere efterfølgende loop
s = "Start: " & printCombi(mycombi) & vbNewLine For i = 1 To UBound(combis, 1) Do While foundCombi(i, combis, mycombi) s = s & "Fjernet: " & popCombi(i, combis, mycombi) & vbNewLine Loop Next i s = s & "Rest: " & printCombi(mycombi) MsgBox s End Sub
Function foundCombi(n As Integer, combis As Variant, mycombi As Variant) As Boolean Dim i As Integer
foundCombi = True
For i = 1 To UBound(combis, 2) If mycombi(i) < combis(n, i) Then foundCombi = False Exit For End If Next i End Function
Function popCombi(n As Integer, combis As Variant, ByRef mycombi As Variant) As String Dim i As Integer
popCombi = ""
For i = 1 To UBound(combis, 2) mycombi(i) = mycombi(i) - combis(n, i) For j = 1 To combis(n, i) popCombi = popCombi & " " & i Next j Next i End Function Function printCombi(mycombi As Variant) As String Dim i As Integer
printCombi = "" For i = 1 To UBound(mycombi) printCombi = printCombi & i & ": " & mycombi(i) & " " Next i End Function
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.