Hat ein PHP Kenner eventuell gerade ein bisschen Langeweile?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hat ein PHP Kenner eventuell gerade ein bisschen Langeweile?

    Hi,

    ich bin gerade dabei einen riesen PHP Quellcode in Objectiv-C umzuschreiben und leider bin ich jetzt an eine Funktion gestossen, wo mein PHP Wissen nicht mehr ausreicht um die umzusetzen. Kann mir jemand eventuell helfen? Es muss nicht der fertige Code sein, es würde Pseudo Code reichen. Ansi-C wäre auch vollkommen ok wenn das leichter ist.

    Quellcode

    1. $dec2fracArray=array(
    2. '0.04'=>array(1,25),
    3. '0.05'=>array(1,20),
    4. '0.0666'=>array(1,15),
    5. '0.083'=>array(1,12),
    6. '0.111111111'=>array(1,9),
    7. '0.125'=>array(1,8),
    8. '0.142857143'=>array(1,7),
    9. '0.166666667'=>array(1,6),
    10. '0.2'=>array(1,5),
    11. '0.222222222'=>array(2,9),
    12. '0.25'=>array(1,4),
    13. '0.285714286'=>array(2,7),
    14. '0.333333333'=>array(1,3),
    15. '0.375'=>array(3,8),
    16. '0.4'=>array(2,5),
    17. '0.428571429'=>array(3,7),
    18. '0.444444444'=>array(4,9),
    19. '0.5'=>array(1,2),
    20. '0.555555556'=>array(5,9),
    21. '0.571428571'=>array(4,7),
    22. '0.6'=>array(3,5),
    23. '0.625'=>array(5,8),
    24. '0.666666667'=>array(2,3),
    25. '0.714285714'=>array(5,7),
    26. '0.75'=>array(3,4),
    27. '0.777777778'=>array(7,9),
    28. '0.8'=>array(4,5),
    29. '0.833333333'=>array(5,6),
    30. '0.857142857'=>array(6,7),
    31. '0.875'=>array(7,8),
    32. '0.888888889'=>array(8,9),
    33. '0.916666667'=>array(11,12),
    34. );
    35. function dec2frac($dec){
    36. global $dec2fracArray;
    37. $minD=1;
    38. $selD=0;
    39. foreach($dec2fracArray as $d=>$dArr){
    40. //echo $d.'#';
    41. if ( abs($d-$dec) < $minD) {
    42. $minD=abs($d-$dec);
    43. $selD=$d;
    44. }
    45. }
    46. return array($dec2fracArray[$selD][0],$dec2fracArray[$selD][1]);
    47. }
    Alles anzeigen


    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Dictionary mit Array dachte ich auch erst, aber wie bekomme ich dann den richtigen Dictionary Eintrag anhand des errechneten Index ( letzte Zeile). Aber wahrscheinlich ist es auch grade schon zu spaet. Morgen sieht es bestimmt wieder einfacher aus.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Dictionary mit Array dachte ich auch erst, aber wie bekomme ich dann den richtigen Dictionary Eintrag anhand des errechneten Index ( letzte Zeile). Aber wahrscheinlich ist es auch grade schon zu spaet. Morgen sieht es bestimmt wieder einfacher aus.

    Gruß

    Claus

    Aha. Da hat einer den Algorithmus nicht verstanden den er implementiert hat (was aber nicht an PHP liegt). Das ist nämlich ein ganz hundsgewöhnlicher linearer Suchalgorithmus der zum am besten passenden Float-Key (kleinster Abstand zu $dec) den Value ausgibt.

    Mache statt $selD=$d; doch $selD=$dArr; und spare Dir den komischen Indexmechanismus beim return [1]. Da reicht dann return $selD.

    [1] übersetzt in Obj-C:

    Quellcode

    1. return [NSArray arrayWithObjects:[[dict objectForKey:key] objectAtIndex:0], [[dict objectForKey:key] objectAtIndex:1], nil]
  • hns schrieb:

    Thallius schrieb:

    Der Code ist nicht von mir. Ergo habe ich den auch nicht implementiert.

    Habe ich ja auch nicht angenommen. Deshalb "da hat einer...".

    Ich habe meinen vorigen Beitrag nochmal editiert - bitte nochmal anschauen.


    Das ist nur einer der Merkwürdigkeiten dieses Codes. Du glaubst nicht was ich da schon alles fuer sinnloses Zeug gefunden habe. Deshalb mache ich es ja neu. Der Code ist vier Jahre alt und von mehr als fünf Leuten immer wieder geändert worden. Grausam sag ich dir.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • obco schrieb:

    Hat ein PHP Kenner eventuell gerade ein bisschen Langeweile?
    Frag doch mal Amin :-D

    Ich will hier Claus ausdrücklich belobigen: Er macht aus PHP-Code Objective-C-Code. Wieder ist die Welt ein kleines Stückchen besser.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?