2016-12-25 10 views
0

Hallo, wie zu teilen ein Intervall in gleiche Teile Beispiel zu teilen:wie ein Intervall in gleiche Teile

[1-100] divide by 5 part --> 

1- [1-20] 
2- [21-40] 
3- [41-60] 
4- [61-80] 
5- [81-100] 

oder

[1-102] divide by 5 part --> 

1- [1-20] 
2- [21-40] 
3- [41-60] 
4- [61-80] 
5- [81-100] 
6- [100-102]* 

ich einen Code versuchen, aber manchmal funktionieren und in anderen nums nicht Arbeit, da es diese muss ist, was ich mache (ich weiß, ich bin Woche in Mathe: P, i es vor 2 Wochen kodieren, und ich habe jetzt keine Ahnung, wie ich es machen: D)


Func vall($a , $b) 
Local $inval = '' 
$all = $a 

$c = $b ; - 1 

$evv = Int($all/$c) 
$rrt = Int($all/$evv) 

$trtr = $evv 
$ee = 1 
$fg = 0 


if Mod($a,$evv) == 0 Then 

for $ll = 1 to $rrt ; $all 

    if $ll = $rrt Then 
     $inval = $inval & $ee&':-:'& $trtr 
    Else 
     $inval = $inval & $ee&':-:'& $trtr&',' 
    EndIf 


$ee = $ee + $evv 
$trtr = $trtr + $evv 
Next 

Else 

for $ll = 1 to $rrt ; $all 
$inval = $inval & $ee&':-:'& $trtr&',' 
$ee = $ee + $evv 
$trtr = $trtr + $evv 
Next 
$uu = $trtr -$evv + 1 
$inval = $inval & $uu&':-:'& $all 

EndIf 

Return $inval 

EndFunc 

i verwenden autoit, aber ich brauche den Algorithmus in irgendeiner lang zu verwenden.

danke.

+0

Stellen Sie sicher, Anmerkungen zu verwenden, ab dem nächsten Zeit, wann immer du Code schreibst. Das wird dir in der Praxis helfen. –

Antwort

0

Hier ist eine Python-Implementierung, die ziemlich einfach zu verstehen ist.

def divide(number, parts): 
    '''number is the last number of the range and parts is no. of intervals you 
     want to make''' 
    chunksize = number//parts    # size of each interval 
    chunkstart = 1      # start of interval 
    chunkend = chunkstart + chunksize -1 # end of that interval 
    while chunkstart < number:   # don't go beyond the range 
     if chunkend > number:    # interval end is beyond the range 
      print chunkstart, number 
      break       # we are beyond the range now 
     print chunkstart, chunkend 
     chunkstart += chunksize   # take me to beginning of next interval 
     chunkend += chunksize    # also tell me where to end that 

Sample Input and Ouputs 

divide(100, 5) 
1 20 
21 40 
41 60 
61 80 
81 100 

divide(102, 5) 
1 20 
21 40 
41 60 
61 80 
81 100 
101 102 
+0

wow danke ich übersetze es in autoit und es funktioniert – max

+0

aber wenn ich 57 und 30 verwende, funktioniert es nicht – max

+0

das ist die autoit http://pastebin.com/4Cdu3VBY – max

0

@ Pulkit-goyal wie u sagte, ich habe gleiche analysieren [Code mir geholfen zu verstehen, wie es funktioniert nach dem alle Mathe ist süß: D] so bekomme ich, dass der beste Weg, um das richtige Ergebnis zu erhalten ist, die Teile zu ändern und Testteil-1 und Teil + 1, bis er den besten Teil

i einen einfachen Code erhalten kochen:

$number = 57 
$parts = 30 
$yy= 0 
$yusf = 0 
ConsoleWrite ('number :' & $number& ' | parts : '&$parts& @CRLF) 
$partsplus = $parts 
$partsmoins = $parts 
if Mod($number,$parts) > Int($number/$parts) Then 

while $yusf = 0 

$partsplus += 1 
$partsmoins -= 1 
if Mod($number,$partsplus) < Int($number/$partsplus) Then 

ConsoleWrite ("old part : "&$parts & "| new part :" & $partsplus &" | interval : "&Int($number/$partsplus) &@CRLF) 
$parts = $partsplus 
$yusf = 1 

ElseIf Mod($number,$partsmoins) < Int($number/$partsmoins) Then 
    ConsoleWrite ("old part : "&$parts & "| new part :" & $partsmoins &" | interval : "&Int($number/$partsmoins ) & @CRLF) 
    $parts = $partsmoins 

    $yusf = 1 
    EndIf 
WEnd 

EndIf 
    $chunksize = Int($number/$parts)   ;; size of each interval 
    $chunkstart = 1      ;; start of interval 
    $chunkend = $chunkstart + $chunksize -1 ;; end of that interval 

    while $chunkstart <= $number   ;; don't go beyond the range 
     if $chunkend > $number Then   ;; interval end is beyond the range 
     ; print $chunkstart, $number 
     ConsoleWrite ("[ "&$chunkstart &" : "& $number &" ]*"& @CRLF) 
     ExitLoop 
     EndIf 
       ;; we are beyond the range now 
    ConsoleWrite ("[ "& $chunkstart &" : "& $chunkend &" ]"& @CRLF) 
    $yy += 1 
    $chunkstart += $chunksize   ;; take me to beginning of next interval 
    $chunkend += $chunksize    ;; also tell me where to end that 
    WEnd 

einigen Test für 57-30, 30 geändert 28 gute Ergebnisse zu haben

number :57 | parts : 30 
old part : 30| new part :28 | interval : 2 
[ 1 : 2 ] 
[ 3 : 4 ] 
[ 5 : 6 ] 
[ 7 : 8 ] 
[ 9 : 10 ] 
[ 11 : 12 ] 
[ 13 : 14 ] 
[ 15 : 16 ] 
[ 17 : 18 ] 
[ 19 : 20 ] 
[ 21 : 22 ] 
[ 23 : 24 ] 
[ 25 : 26 ] 
[ 27 : 28 ] 
[ 29 : 30 ] 
[ 31 : 32 ] 
[ 33 : 34 ] 
[ 35 : 36 ] 
[ 37 : 38 ] 
[ 39 : 40 ] 
[ 41 : 42 ] 
[ 43 : 44 ] 
[ 45 : 46 ] 
[ 47 : 48 ] 
[ 49 : 50 ] 
[ 51 : 52 ] 
[ 53 : 54 ] 
[ 55 : 56 ] 
[ 57 : 57 ]* 

für 7-300, geändert 300-7: D

number :7 | parts : 300 
old part : 300| new part :7 | interval : 1 
[ 1 : 1 ] 
[ 2 : 2 ] 
[ 3 : 3 ] 
[ 4 : 4 ] 
[ 5 : 5 ] 
[ 6 : 6 ] 
[ 7 : 7 ] 

und im Normalfall für 10 -2, keine Änderung

number :10 | parts : 2 
[ 1 : 5 ] 
[ 6 : 10 ] 
Verwandte Themen