Suchergebnisse

Suchergebnisse 1-30 von insgesamt 971.

  • Benutzer-Avatarbild

    Return Linq Iterator

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @NoIde @Bluespide @VaporiZed Das problem mit diesen Ansätzen ist das die DetectValue Funktionen mehrfach aufgerufen werden. Um auf das Auto Beispiel Bluespide zurückzugreifen: Stell dir vor du hast 3 Autos in _items. Audi mit DetectValue 0, VW mit DetectValue 1, Mercedes mit DetectValue 2. Wenn ich das dann wie folgt ausführe: C#-Quellcode (2 Zeilen) Dann wird DetectValue von Audi 1 mal aufgerufen, von VW 2 mal und von Mercedes 2 mal. Das sollte doch eigentlich nicht notwendig sein oder?

  • Benutzer-Avatarbild

    Return Linq Iterator

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    Hm, bin mir nicht ganz sicher ob ich etwas offensichtliches übersehe, aber mir ist nicht klar wie man einen Linq iterator zurückgeben kann. Folgendes Bsp: C#-Quellcode (1 Zeile) Dieser Aufruf iteriert in _items, prüft holt sich von allen den Wert von DetectValue() und gibt davon den größten zurück. Wie kann ich aber das item/iterator selbst zurückbekommen, bei dem Detectvalue den höchsten Wert hat, anstatt nur des Wertes selbst?

  • Benutzer-Avatarbild

    Haha Hast du eventuell eine Idee wie man zuvor generierte Werte cachen könnte, und nur die "fehlenden" Primes generiert?

  • Benutzer-Avatarbild

    @exc-jdbi Du hast mich falsch verstanden Mein Code braucht 10 Sekunden für alle Zahlen von 1-1.000.000. Also eine Schleife von 1-1.000.000 und für jede Zahl wurden die Teiler berechnet. Ich werde jetzt mal deine Änderung benchmarken. Edit: Für int.MaxValue benötigt meine Klasse 10ms im Vergleich zu den 23ms von deinem Ansatz.

  • Benutzer-Avatarbild

    @exc-jdbi @RodFromGermany Danke für eure Antworten. Es lag daran das ich die Primzahlen bis n generiert habe. Dabei hat es ja gelangt nur bis (int) Math.Pow(n, 0.5) + 1 zu gehen. Jetzt ist das ganze schon mal um einiges schneller. Aber nach wie vor noch nicht maximal optimiert. Alle Teiler für die Zahlen von 1 bis 1.000.000 zu finden hat ~10.2 Sekunden gedauert. Ich habe noch zwei Ideen wie man eventuell noch einiges an Performance rausholen könnte. 1) Prime/Primefaktor Caching Zur Zeit werden f…

  • Benutzer-Avatarbild

    goto-Statement hier elegant?

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @φConst Guck dir das mal an bzgl nested loops: stackoverflow.com/questions/32…t-of-a-nested-loop#324837

  • Benutzer-Avatarbild

    @RodFromGermany Und eine Idee wo der Bug entsteht? Ich konnte es irgendwie nicht ermitteln. Die Primzahlfunktion scheint aber soweit intakt, zumindest als ich gedebugged habe waren alle Werte korrekt.

  • Benutzer-Avatarbild

    @RodFromGermany C#-Quellcode (95 Zeilen) Ich konnte noch nicht herrausfinden was für den Bug verantwortlich ist. Ich gehe davon aus es liegt entweder an der FindPrimeFactors oder an der FindDivisors Funktion.

  • Benutzer-Avatarbild

    Habs (mehr oder weniger) Irgendetwas stimmt noch nicht ganz. Manchmal schleichen sich falsche Teiler ein. Bspw für den Input 18 bekomme ich: wQzZog8.png Das passt nicht, 36 ist kein gültiger Teiler. Ebenso bekomme ich falsche Werte für manche höheren Zahlen wie 50, 90 etc

  • Benutzer-Avatarbild

    @RodFromGermany sieve ist einfach nur eine Variable. Ich habe den Code nochmal ein bisschen verbessert, da die Primzahlfunktion mehrfach invoked wurde. Das Hauptproblem in der Geschwindigkeit scheint meine FindPrimeFactors Funktion zu sein. Und zu deiner Anmerkung in Post #2, das ist falsch, ich muss schon for(int p = 2; p < sqrt; ++p) verwenden. Würde ich es so machen wie du gesagt hast lasse ich Zahlen die auch Teiler sein können.

  • Benutzer-Avatarbild

    @RodFromGermany In Python ist // die Flooring Division also bspw: 4.0 // 1.5 ergibt 2.0 Das Ändern des Loops beschleunigt ein bisschen, von 19s auf 16s, also scheinbar ist irgend etwas anderes die Große Bremse.

  • Benutzer-Avatarbild

    Hey, Ich möchte so effizient wie möglich alle Teiler eines gegebenen int finden. (Eventuell mit dem Hintergedanken das später auf long zu erweitern). Es gibt verschiedene Möglichkeiten dieses Problem zu lösen. Um das ganze jedoch so performant und effizient wie möglich zu machen, war die Idee zuvor Primzahlen auszuschließen. Man muss natürlich sagen der Begriff "effizient" ist hier nur relativ, da Primzahlfaktorisierung zu den NP-Vollständigen Problem gezählt wird. Ich habe im Internet recherche…

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @jvbsl @RodFromGermany @φConst Danke fuer die Tipps. Also irgendwie haut das nicht so ganz hin... Ich habe versucht auf Nan und Infinity zu pruefen aber das klappt nicht. C#-Quellcode (16 Zeilen) Wenn nicht so wie soll man es sonst pruefen. Muss doch irgendwie moglich sein. Ich wurde namlich gerne in die Funktion die @jvbsl geschrieben hat support fur floatingpoint types einfuegen. Fuer int's klappts ja bereits gut.

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @jvbsl Ich habe deine Loesung noch um den MinValue check erweitert, der hat noch gefehlt: C#-Quellcode (43 Zeilen) Mich wuerde trotzdem brennend interessieren wie man das noch erweitern kann das auch floatingpoint operations unterstuetzt werden, d.h. float und double.

  • Benutzer-Avatarbild

    Reverse Modulo Berechnung

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @exc-jdbi Danke fuer deine Antwort. Dein Beispiel deckt allerdings nur 0 - int.MaxValue / 2 ab. Kann man den restlichen Bereich nicht auch abdecken?

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @φConst hmmm okay. Wie wuerde man es denn fuer die anderen Datentypen testen? Bei float point operations kann man evtl auf positiv infinity oder negative infinity testen? Aber wieso funktioniert byte auch nicht? Seltsam.

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @φConst Das ist eigentlich recht clever, jetzt verstehe ich das auch. Allerdings scheint das ganze nicht sehr zuverlassig zu funktionieren. Hier ein Beispiel, das definitv overflowed aber die Funktion gibt false zuruck. Bei int und long scheint es zu gehen, bei byte, float und double irgendwie nicht so richtig, woran liegt das? C#-Quellcode (14 Zeilen)

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @φConst Danke deine generische Lösung ist auf jeden Fall interessant. Kannst du vielleicht noch erklären welche der vielen Interfaces in der Methodensignatur für was genau verwendet werdet werden, krieg das noch nicht so ganz in meinen Kopf ^^" Ist die Bedingung für Overflowchecks immer die Gleiche unabhängig von der Rechenoperation? Also was ist bspw mit Subtraktion statt Addition? Wenn ich die eine Zahl von der anderen abziehe um auf die Ursprüngliche Zahl zu kommen?

  • Benutzer-Avatarbild

    Reverse Modulo Berechnung

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @exc-jdbi Wie kommst du zu dieser Annahme? Ich kann dir nicht ganz folgen.

  • Benutzer-Avatarbild

    Reverse Modulo Berechnung

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    Hey, Also, hatte schon mal so eine ähnliche Frage, hier nochmal mit einer kleinen Abwandlung. Gegeben sei ein Integer x zwischen 0 bis int.MaxValue - 1. Es gilt a und b zu finden, sodass a % b = x. a ist random, aber es muss gelten a > x. Die Ausgangsfrage a % b = x lässt sich umformulieren in a = n*b + x. Daraus folgt a - x = n*b bzw (a - x)/n = b. Ich möchte also für jede Zahl zwischen 0 und int.MaxValue - 1 ein a und ein b finden sodass a % b = x gilt und auch das a und b beides ints sind, un…

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @φConst Das ist schon mal ein guter Ansatz. Ist zwar für int aber sollte ja genauso für longs funktionieren, werd ich gleich mal testen.

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    @slice Und wie wurde ich das am besten nutzen damit ich true oder false zuruckbekomme je nach dem ob die Operation overflowed?

  • Benutzer-Avatarbild

    Overflow boundary checking

    Rikudo - - Sonstige Problemstellungen

    Beitrag

    Hey, Folgendes: Gegeben ist eine Zahl. Diese Zahl soll in zwei Zahlen zerlegt werden die addiert die Ursprüngliche Zahl ergeben. Das ist kein Problem, allerdings gilt es, ein vernünftiges Boundary-checking zu machen. Für Int32 Werte habe ich das wie folgt gelöst: C#-Quellcode (15 Zeilen) Nun möchte ich aber das ganze für longs, d.h. Int64 Werte machen, und zwar ohne dabei BigInteger oder decimal zu verwenden. Kann man prüfen ob die Operation für zwei longs overflowed indem man evtl klevere Bit-c…

  • Benutzer-Avatarbild

    Zitat von Bluespide: „Dynamics, wenn es nicht performant sein soll. C#-Quellcode (3 Zeilen)“ Das scheint aber nicht immer zu funktionieren. Versuche mal: C#-Quellcode (14 Zeilen) Quellcode (1 Zeile) @ErfinderDesRades Was verstehst du an der Frage nicht?

  • Benutzer-Avatarbild

    Naja, danke schon mal für die ganzen Beitrage. Also soweit mir bekannt ist lasst sich operator overloading nicht für generische Methoden realisieren? Die Idee ist folgendes zu vermeiden, viele overloads für den selben Vorgang: C#-Quellcode (15 Zeilen) Ich hatte gedacht vllt kann man hier evtl mit einem Pattern wie dem Factorypattern ansetzen um so etwas elegant zu losen. Eine generische Methode allein geht leider nicht. Was gitbs denn noch so für Ideen?

  • Benutzer-Avatarbild

    Kann ja sein das der String den du ausließt bereits Zeilenumbrüche enthält. Wenn du nur A-Z a-z und 0-9 zulassen willst geh durch den String Zeichenweise und wenn das Zeichen nicht mit einem Zeichen aus deiner Whitelist übereinstimmt ersetze es mit einem leeren String. Kannste entweder geschickt mit Regex/Linq machen oder einfach mit ner Schleife durchgehen mit Deiner Zeichenliste vergleichen und dann halt ersetzen.

  • Benutzer-Avatarbild

    Hey, Was sind die besten Ansätze/Pattern für folgendes Szenario: Ich bekomme verschiedene Werte für die ich Rechenoperationen durchführen muss. (Sub, Add, Mul, Div, Mod, Shr Shl, Xor usw) Die gelieferten Werte konnen allerdings ints, uints, longs, ulongs, floats, doubles, bytes usw sein. Wie kann ich verhindern das ich bspw viele Overloads der Rechenmethoden für jeden Datentyp benötige? Gibt es da irgendwelche intelligenten Lösungen?

  • Benutzer-Avatarbild

    @RodFromGermany @Trade Ich habe mich nochmal auf ein paar Matheboards erkundigt was die beste herangehensweise für mein Problem ist. Ich habe jetzt einen Ansatz aber ich bin mir nicht so sicher wie ich das in C# umsetzen soll. Wenn ich eine Gleichung der Form $a*x^3+b*x^2+c*x+d=0$ lösen möchte wobei $a$ vorgegeben ist und eine reelle Lösung der kubischen Funktion eine bestimmte Zahl sein soll kann man das wie folgt umschreiben: $x^3+b*x^2+c*x+d=x^3+(B−r)x^2+(C−B*r)x−C*r $ Dabei gibt es folgende …

  • Benutzer-Avatarbild

    Zitat von RodFromGermany: „@Rikudo Na aber. Das ist doch nun wirklich so elementar einfach, dass Du das selbst hinkriegen solltest.“ Ich habe mich schlecht ausgegedrückt. Das programmieren an sich ist wahrscheinlich ein Kinderspiel aber ich durchsteige immer noch nicht die Mathematik deines Verfahrens..

  • Benutzer-Avatarbild

    @RodFromGermany Ja, beispielsweise.