[php+wiskunde] dagdelen omzetten in hele dagen

Pagina: 1
Acties:

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
ok ik heb een hele tijd zitten prutsen maar ik kom er maar niet uit... Logisch+ abstract denken dat is volgens mij de crux van dit verhaal maar volgens mij ben ik in een rondje aan het denken. Hopelijk kunnen jullie me uit het cirkeltje helpen:
ik heb deze array:
PHP:
1
2
3
4
5
6
7
8
9
10
$weg = Array
(
    [1] => Array
        (
            [dag] => 2
            [ochtend] => 3
            [middag] => 1
            )

)

in de tag dag zitten de boten die een hele dag weg zijn, in de ochtend de hoeveelheid ochtenden en je raad het al in middag de hoeveelheid middagdagdelen die weg zijn.
Wat iedereen begrijpt natuurlijk is dat 1 ochtend en 1 middag samen 1 dag maken.
ik wil dus nu eigenlijk uit deze gegevens en het feit dat het totaal aantal boten bekend is uit rekenen hoeveel hele dagen er een boot/boten beschikbaar is/zijn, eventueel hoeveel ochtenden en eventueel hoeveel midagen.
in bovenstaande situatie met als gegeven dat beschikbaar=6 zou dit resulteren in:
2 dagen en 3 ochtenden weg dus vrij: 3 midagen en 1 dag over

ik heb echter geen flauw idee hoe ik mijn gedachten gang hoe ik deze hierboven zo uit mn mouw schud om gezet kan krijgen in een PHP functie....
PHP:
1
2
3
4
5
6
function geefBeschikbaar(dagWeg, ochtendWeg, middagWeg,totaalBeschikbaar){

//do some magic

return $beschikbaar = array('dag' => XX, 'middag' => XX, 'ochtend' => XX)
};


ik heb al zitten spelen met de absolute waarde van middag-ochtend maar daarmee kwam ik niet veel verder zeg maar. Hopelijk loopt er hier een verlichte geest rond die mij het helderder kan maken _/-\o_

[ Voor 11% gewijzigd door hobbeldebobbel op 30-07-2006 21:33 ]

hier zou een slimme opmerking kunnen staan
maar die staat er niet


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:32
Ik kom hierop uit:

code:
1
2
3
4
5
6
7
8
9
10
11
dagenOver = totaalBeschikbaar - dagWeg - grootste(ochtend, middag);

middagenOver = (ochtendWeg - middagWeg)
if (middagenOver < 0) {
    middagenOver = 0;
}

ochtendenOver = (middagWeg - ochtendWeg)
if (ochtendenOver < 0) {
    ochtendenOver = 0;
}

[ Voor 18% gewijzigd door Jaap-Jan op 30-07-2006 21:48 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Lijkt me niet lastig? :)
PHP:
1
2
3
4
5
6
7
8
9
function geefBeschikbaar($dagWeg, $ochtendWeg, $middagWeg, $totaalBeschikbaar){
  $ret = array();

  $ret['dag']     = $totaalBeschikbaar - $dagWeg;
  $ret['middag']  = $totaalBeschikbaar - $middagWeg - $dagWeg;
  $ret['ochtend'] = $totaalBeschikbaar - $ochtendWeg - $dagWeg;

  return $ret;
}

Dit lijkt me precies te doen wat jij wilt, en zó wiskundig is het nu ook weer niet? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:32
-NMe- schreef op zondag 30 juli 2006 @ 21:42:
Lijkt me niet lastig? :)
PHP:
1
2
3
4
5
6
7
8
9
function geefBeschikbaar($dagWeg, $ochtendWeg, $middagWeg, $totaalBeschikbaar){
  $ret = array();

  $ret['dag']     = $totaalBeschikbaar - $dagWeg;
  $ret['middag']  = $totaalBeschikbaar - $middagWeg - $dagWeg;
  $ret['ochtend'] = $totaalBeschikbaar - $ochtendWeg - $dagWeg;

  return $ret;
}

Dit lijkt me precies te doen wat jij wilt, en zó wiskundig is het nu ook weer niet? :)
Een paar denkfoutjes denk ik:
1) als een boot een middag of ochtend weg is, kan hij geen hele dag meer weg.
2) Uit het voorbeeld (6 dagen beschikbaar; 2 dagen en 3 ochtenden weg; geeft 1 dag en 3 middagen) blijkt dat als een boot hele dagen weg kan, die hele dagen niet opnieuw geteld worden bij de ochtenden en de middagen.

[ Voor 3% gewijzigd door Jaap-Jan op 30-07-2006 21:54 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
hmmm even denken hooor... ik ga beide oplossingen eens even bekijken....
maar vooralsnog denk ik dat de oplossing van japie het dichtst bij mijn eigen manier van uitrekenen van de return value ligt...

[ Voor 110% gewijzigd door hobbeldebobbel op 30-07-2006 21:56 ]

hier zou een slimme opmerking kunnen staan
maar die staat er niet


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Japie_17 schreef op zondag 30 juli 2006 @ 21:53:
[...]
Een paar denkfoutjes denk ik:
1) als een boot een middag of ochtend weg is, kan hij geen hele dag meer weg.
Ah, klopt. Dom foutje, maar makkelijk op te lossen. :)
2) Uit het voorbeeld (6 dagen beschikbaar; 2 dagen en 3 ochtenden weg; geeft 1 dag en 3 middagen) blijkt dat als een boot hele dagen weg kan, die hele dagen niet opnieuw geteld worden bij de ochtenden en de middagen.
Of ik snap niet wat je hier zegt, of wat je hier beschrijft klopt gewoon? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:32
-NMe- schreef op zondag 30 juli 2006 @ 21:59:
[...]

Ah, klopt. Dom foutje, maar makkelijk op te lossen. :)

[...]

Of ik snap niet wat je hier zegt, of wat je hier beschrijft klopt gewoon? :P
Je hebt wel gelijk, het is wat wazig omschreven :P. De topicstarter zegt het volgende
in bovenstaande situatie met als gegeven dat beschikbaar=6 zou dit resulteren in:
2 dagen en 3 ochtenden weg dus vrij: 3 midagen en 1 dag over
Je ziet dus dat het 'aantal middagen vrij' is gewoon afhankelijk is van het 'aantal ochtenden weg'. Er is ook nog 1 hele dag over, waarop het natuurlijk ook mogelijk is om een ochtend en een middag te varen, maar die wordt niet meegerekend voor het 'aantal middagen vrij'.

Oef, best lastig om dat nog uit te leggen, ik hoop dat het duidelijker is :o.

Ik heb ook nog een andere variant bedacht en hem even omgeschreven naar PHP met als basis de code van -NMe-:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function geefBeschikbaar($dagWeg, $ochtendWeg, $middagWeg, $totaalBeschikbaar){
  $ret = array();

  $ret['dag'] = $totaalBeschikbaar - $dagWeg - max($ochtendWeg, $middagWeg);
  $ret['middag'] = $ret['ochtend'] = 0;

  if ($ochtendWeg > $middagWeg) {
    $ret['middag']  = $ochtendWeg - $middagWeg;
  }
  else {
    $ret['ochtend'] = $middagWeg - $ochtendWeg;
  }

  return $ret;
}

[ Voor 15% gewijzigd door Jaap-Jan op 30-07-2006 22:33 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
Japie_17 schreef op zondag 30 juli 2006 @ 22:31:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function geefBeschikbaar($dagWeg, $ochtendWeg, $middagWeg, $totaalBeschikbaar){
  $ret = array();

  $ret['dag'] = $totaalBeschikbaar - $dagWeg - max($ochtendWeg, $middagWeg);
  $ret['middag'] = $ret['ochtend'] = 0;

  if ($ochtendWeg > $middagWeg) {
    $ret['middag']  = $ochtendWeg - $middagWeg;
  }
  else {
    $ret['ochtend'] = $middagWeg - $ochtendWeg;
  }

  return $ret;
}
aight
het is inderdaad moeilijk te beschrijven japie... maar het klopt wat je bedoeld en je functie werkt perfect. zoals altijd keek ik weer te moeilijk naar het ding :(

maaar nu is het perfect.. zal straks een screenie maken en je laten zien hoehet geworden is :)
thanx

hier zou een slimme opmerking kunnen staan
maar die staat er niet

Pagina: 1