Oder vielleicht ist es in C++? . Validieren - eine Funktion mit einem einzigen Parameter. Vielleicht sollten wir es auf die alte Weise machen... Speicher zuweisen und einen bool zwischenspeichern für alle gültigen Werte des Arguments?
In MQL können Sie einen Auftrag eröffnen, falls sich die Hockeynummern wie durch ein Wunder gleichmäßig aufteilen! :))
Aber im Ernst, ich bin dir definitiv nicht ebenbürtig.
MetaDriver:
In diesem Fall ist "|=" ein bitweises "oder". Dadurch werden die Bits an den Positionen, die A[i] entsprechen, um XX erhöht.
Und wenn nach der Schleife alle Bits eins bis sechs 1 sind, bedeutet das, dass alle Ziffern von 1 bis 6 genau einmal in der Zahl X vorkommen.
0x7E ist die hexadezimale Darstellung der Binärzahl 1111110. (rechtes Bit ist Null)
Das ist es, was mich am meisten stört. Ich danke Ihnen. Ich hab's!
1. wie sieht es mit C++ aus? . 2. Validieren - Funktion mit einem Parameter. Vielleicht sollten wir es auf die altmodische Art machen... ...Speicher zuweisen und ein bool zwischenspeichern für alle gültigen Werte des Arguments?
1. Nun, die Sprache und das Umfeld sind nicht wirklich der Punkt. Der Punkt ist der Algorithmus selbst.
wird um ein Vielfaches schneller ausgeführt als die folgenden Zeilen:
int A = A6*100000+A5*10000+A4*1000+A3*100+A2*10+A1;
int B = B6*100000+B5*10000+B4*1000+B3*100+B2*10+B1;
Und dieser Zustand wird mehr als einmal ausgelöst. Das ist kein schlechter Geschwindigkeitszuwachs. Auch wenn es vielleicht nicht so wichtig ist. Wir können sie ausbauen und überprüfen. Aber ich bin immer noch der Meinung, dass dieser Zustand sich selbst rechtfertigt.
wird um ein Vielfaches schneller laufen als die folgenden Zeilen:
int A = A6*100000+A5*10000+A4*1000+A3*100+A2*10+A1;
int B = B6*100000+B5*10000+B4*1000+B3*100+B2*10+B1;
Und dieser Zustand wird mehr als einmal ausgelöst. Das ist ein schöner Gewinn an Leistung. Obwohl das vielleicht gar nicht so erheblich ist. Sie können sie entfernen und überprüfen. Aber ich bin immer noch der Meinung, dass dieser Zustand sich selbst rechtfertigt.
Dies scheint jedoch nicht korrekt zu sein. Wenn z. B. A4==B4 ist, ist die Bedingung falsch, während die Zahlen unterschiedlich sein können (z. B. 654321 und 124365).
Machen Sie sich also keine Gedanken über diese Bedingung.
Ich habe mich geirrt... Und ich spreche von Geschwindigkeit! :)) Ich kann nicht klar denken. Es ist schon nach meiner Schlafenszeit. Meine Ortszeit ist 6:00 Uhr morgens...
So machen Sie den Code:
for (int B1=1; B1<=6; B1++)
{
if (B1==B2 || B1==B3 || B1==B4 || B1==B5 || B1==B6) continue;
if (A6==B6 && A5==B5 && A4==B4 && A3==B3 && A2==B2 && A1==B1) continue;
int A = A6*100000+A5*10000+A4*1000+A3*100+A2*10+A1;
int B = B6*100000+B5*10000+B4*1000+B3*100+B2*10+B1;
if (A < B) continue;
if (MathMod(A,B)==0)
Print(A6,A5,A4,A3,A2,A1,"/",B6,B5,B4,B3,B2,B1,"=",A/B);
}
Das ist zu viel.
if (A==B) continue;
if (MathMod(A,B)==0)
...denn das Skript müsste das Weniger durch das Mehr dividieren...
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
MaxZ:
Ich verstehe die Änderungen. Ich habe es nur noch nicht herausgefunden:
"|=" ist das logische ODER? Und dann ist es eine Sackgasse...
"|=" ist in diesem Fall ein bitweises "oder". Dieses Ding hebt Bits um XX an Positionen an, die A[i] entsprechen.
Und wenn nach der Schleife alle Bits eins bis sechs 1 sind, bedeutet das, dass alle Ziffern 1 bis 6 genau einmal in der Zahl X vorkommen.
0x7E ist die hexadezimale Darstellung der Binärzahl 1111110. (rechtes Bit ist Null)
Oder vielleicht ist es in C++?
.
Validieren - eine Funktion mit einem einzigen Parameter.
Vielleicht sollten wir es auf die alte Weise machen... Speicher zuweisen und einen bool zwischenspeichern
für alle gültigen Werte des Arguments?
In MQL können Sie einen Auftrag eröffnen, falls sich die Hockeynummern wie durch ein Wunder gleichmäßig aufteilen! :))
Aber im Ernst, ich bin dir definitiv nicht ebenbürtig.
In diesem Fall ist "|=" ein bitweises "oder". Dadurch werden die Bits an den Positionen, die A[i] entsprechen, um XX erhöht.
Und wenn nach der Schleife alle Bits eins bis sechs 1 sind, bedeutet das, dass alle Ziffern von 1 bis 6 genau einmal in der Zahl X vorkommen.
0x7E ist die hexadezimale Darstellung der Binärzahl 1111110. (rechtes Bit ist Null)1. wie sieht es mit C++ aus?
.
2. Validieren - Funktion mit einem Parameter.
Vielleicht sollten wir es auf die altmodische Art machen... ...Speicher zuweisen und ein bool zwischenspeichern
für alle gültigen Werte des Arguments?
1. Nun, die Sprache und das Umfeld sind nicht wirklich der Punkt. Der Punkt ist der Algorithmus selbst.
2....Uh...Was ist noch?
Aber 125 ms sind eindeutig nicht aufholbar.
Das sollten Sie nicht tun. Ihr Wert beträgt 47 ms.
Schade, dass Sie keine Lösung haben, es ist schwer, die Ergebnisse zu vergleichen... :)))
.
Aber ich verstehe immer noch nicht, warum wir nach Personen vergleichen müssen.
if(A6!=B6 && A5!=B5 && A4!=B4 && A3!=B3 && A2!=B2 && A1!=B1)
?
Es scheint, dass die Überschneidungen in einer einzigen Position unkritisch sind?
Das sollten Sie nicht tun. Ihr Wert beträgt 47 ms.
Schade, dass Sie keine Lösung haben, es ist schwer, die Ergebnisse zu vergleichen... :)))
.
Aber ich verstehe immer noch nicht, warum wir nach Personen vergleichen müssen.
if(A6!=B6 && A5!=B5 && A4!=B4 && A3!=B3 && A2!=B2 && A1!=B1)
?
Ich habe den Eindruck, dass Zufälle an einer einzigen Stelle unkritisch sind?
Sieh dir das an! :DDD
Ich habe um Geschwindigkeit gekämpft.
Ich glaube, dass die Bedingung:
if (A6 != B6 && A5 != B5 && A4 != B4 && A3 != B3 && A2 != B2 && A1 != B1)wird um ein Vielfaches schneller ausgeführt als die folgenden Zeilen:
Und dieser Zustand wird mehr als einmal ausgelöst. Das ist kein schlechter Geschwindigkeitszuwachs. Auch wenn es vielleicht nicht so wichtig ist. Wir können sie ausbauen und überprüfen. Aber ich bin immer noch der Meinung, dass dieser Zustand sich selbst rechtfertigt.
Ich habe um Geschwindigkeit gekämpft:
Ich glaube, dass die Bedingung:
if (A6 != B6 && A5 != B5 && A4 != B4 && A3 != B3 && A2 != B2 && A1 != B1)wird um ein Vielfaches schneller laufen als die folgenden Zeilen:
Und dieser Zustand wird mehr als einmal ausgelöst. Das ist ein schöner Gewinn an Leistung. Obwohl das vielleicht gar nicht so erheblich ist. Sie können sie entfernen und überprüfen. Aber ich bin immer noch der Meinung, dass dieser Zustand sich selbst rechtfertigt.
korrigiert, so gemacht.
Gleiche 47 ms.
Also - kein Grund, sich mit dieser Bedingung zu beschäftigen.
korrigiert, so gemacht.
Gleiche 47 ms.
Machen Sie sich also keine Gedanken über diese Bedingung.
Ich habe mich geirrt... Und ich spreche von Geschwindigkeit! :)) Ich kann nicht klar denken. Es ist schon nach meiner Schlafenszeit. Meine Ortszeit ist 6:00 Uhr morgens...
So machen Sie den Code:
Das ist zu viel.
...denn das Skript müsste das Weniger durch das Mehr dividieren...
Das ist Scheiße. Wolodja Und damit müssen Sie einfrieren? Da haben wir es - Feuer! Wie oft noch!
Deines ist ein Schwein. Mit freundlichen Grüßen...
So machen Sie es mit dem Code:
Ja, so ist es besser. 31 ms.
Svinozavr 22.08.2011 01:58
Das ist Scheiße. Wolodja Und das ist zum Einfrieren? Bitte sehr - hören Sie auf! Wie viel Sie können!
Deines ist Schwein. Mit freundlichen Grüßen...Kapriolen des Künstlers.... :)
Kaufmännische Beweggründe werden in einer Woche langweilig. Manchmal kann man aus Liebe zur Kunst aussteigen. ;)