Ich denke, du kannst deinen zweiten Test einfach entfernen. Ich würde das versuchen:
%Vor%Der zweite Test ist völlig unnötig. Der erste überprüft, ob Sie genug Gesamtlänge haben, und alles ist gut.
Aber die zweite erneut prüft, ob Sie genug Gesamtlänge haben (Rückkehrziel / 5 & lt; = groß;), aber dies ignoriert die Länge, die von kleinen Steinen hinzugefügt wird. Das Problem ist, dass Sie prüfen, ob es ein Vielfaches von 5 ist, und automatisch davon ausgehen, dass Sie nur große Bausteine verwenden werden, wenn dies der Fall ist. In Wirklichkeit könnten Sie stattdessen fünf kleine Ziegelsteine verwenden. (oder, wie in Ihrem Beispiel, 10 kleine Steine.) Die letzte Überprüfung ist korrekt, testen, ob Sie genug Granularität haben, um die richtige Länge zu erhalten, vorausgesetzt, Sie haben genug Länge.
Ich habe ein paar andere Szenarien ausprobiert: "makeBricks (8, 1, 13)" "makeBricks (1, 2, 6)" wo entweder nicht genug oder zu viele große Steine sind, aber man braucht welche. Um beide Möglichkeiten zu berücksichtigen, benötigen Sie etwas wie:
%Vor%es gibt false zurück, weil Ihre zweite Prüfung es nur mit den großen vergleicht, die in Ihrem Gegenbeispiel Null haben.
also 2 & lt; = 0 ist falsch.
Hier ist ein guter Weg, es zu tun:
%Vor%Auf diese Weise werden Sie sicher nur so viele große Steine verwenden, wie Sie brauchen, aber nicht mehr. So können Sie nur erreichen, wenn Sie genügend kleine Steine haben.
Hier ist ein weiteres Übungsproblem, von dem ich dachte, dass es diesem Problem ziemlich ähnlich ist. Ich dachte nur, ich würde es posten und sehen, ob es für Leute funktioniert:
Sie erhalten einen int SO beginnend Reputation und ein Int SO Ziel Reputation, die höher ist als die Start-Rep. Sie beantworten nur Fragen, so dass Sie können Ruf nur durch 10 oder 15. Sie können auch abstimmen, so dass Sie den Ruf um 1 verlieren können. was ist die minimale Menge an Reputation, die Sie sollten verlieren, um das Ziel zu erreichen Ruf?
Beispiel: Sie beginnen mit 715 und Sie wollen 888 erreichen. Die Antwort ist 2.
Um die Herausforderung zu erhöhen, ändern Sie die Ints in Longs und verwenden Sie keine Schleife.
Das ist meine Antwort.
%Vor%Hier ist meine ursprüngliche Antwort; es hat bei den anderen tests nicht geklappt, aber zu der zeit konnte ich nicht herausfinden, wie es nicht ging (kann es immer noch nicht), und die richtige antwort pisst mich an, denn obwohl es check out saugt bälle dass es tatsächlich funktioniert, weil eine bestimmte Aussage verdammt falsch ist. Rant rant rant, na egal hier:
%Vor%
Richtige Antwort hier, obwohl es saugen kann:
%Vor%
Wenn klein ist & gt; = der Rest, sollte es wahr sein, und wird immer sein, und wenn es nicht ist, dann kann es nicht wahr sein. Warum funktioniert mein Weg nicht, und so arbeite ich in seiner Unvollkommenheit? Ja die vorherige Aussage (Ziel & lt; = ((big * 5) + small)) löscht alle Fälle, in denen es nicht funktioniert, aber ich habe diese pauschale Aussage gemacht, um zu annullieren, dass alles, was nicht der Gesamtsumme von Zoll entspricht, falsch ist, nicht zu diesem Zweck habe ich es aus dem alten mathematischen Problem in jedem mathematischen Fach, das ich bisher hatte, abgeleitet, das in der einfachsten Form zu diesem zerlegt wird: w = (ax + bx) wobei w = ganzes a = eine Zahl (in dieser Fall 5) werte eine Operation größer als die durch b dargestellte Zahl (in diesem Fall 1) und x ist der LCF zwischen den beiden gefundenen Werten (in diesem Fall wieder 1) am passendsten durch dieses geometrische algebraische Problem ist ein Winkel 36 Grad größer als zwei zweimal sein ergänzender Winkel (x = 2 (180-x) +36; x = 396-2x; 3x = 396; x = 132). Normalerweise wird ein Hinweis gegeben, ob eine Gruppenmenge vorliegt, nicht nur Variablen. Und was stimmt nicht mit meiner, wo ist die Instanz, wo es nicht funktioniert?
Verwendet nur boolesche Operatoren, um das Fehlen beider Fehlerfälle %code% zu prüfen. Die offensichtlichen, nicht genug Steine, um das Ziel %code% zu machen. Die weniger offensichtlichen, nicht genug kleinen Steine, wenn das Ziel nicht ein gleichmäßiges Vielfaches von 5 %code% ist.
öffentliche Klasse Bricks {
%Vor%}
Das ist es. So wird es gemacht.
Wahrscheinlich keine perfekte Lösung, aber vielleicht ein bisschen verständlicher als die vorherigen:
%Vor%Hier ist die perfekte Lösung:
%Vor%Auch Sie können das versuchen:
%Vor%Dies ist eine ziemlich kurze und einfache Lösung, die ich beim Lösen des Problems codingbat verwendet habe:
%Vor%Deine Logik ist falsch. Dies sollte es tun:
%Vor%ist ausreichend. Dies kann vereinfacht werden zu:
%Vor%Natürlich ist die Überprüfung der Vernunft auf ein negatives Ziel, klein oder groß, nicht unbedingt erforderlich, wird aber empfohlen. Ohne diese Prüfungen kann das Ergebnis einfach erhalten werden durch:
%Vor%Ich denke, du kannst deinen zweiten Test einfach entfernen. Ich würde das versuchen:
%Vor%Deine Logik ist falsch. Dies sollte es tun:
%Vor%ist ausreichend. Dies kann vereinfacht werden zu:
%Vor%Natürlich ist die Überprüfung der Vernunft auf ein negatives Ziel, klein oder groß, nicht unbedingt erforderlich, wird aber empfohlen. Ohne diese Prüfungen kann das Ergebnis einfach erhalten werden durch:
%Vor%Der zweite Test ist völlig unnötig. Der erste überprüft, ob Sie genug Gesamtlänge haben, und alles ist gut.
Aber die zweite erneut prüft, ob Sie genug Gesamtlänge haben (Rückkehrziel / 5 & lt; = groß;), aber dies ignoriert die Länge, die von kleinen Steinen hinzugefügt wird. Das Problem ist, dass Sie prüfen, ob es ein Vielfaches von 5 ist, und automatisch davon ausgehen, dass Sie nur große Bausteine verwenden werden, wenn dies der Fall ist. In Wirklichkeit könnten Sie stattdessen fünf kleine Ziegelsteine verwenden. (oder, wie in Ihrem Beispiel, 10 kleine Steine.) Die letzte Überprüfung ist korrekt, testen, ob Sie genug Granularität haben, um die richtige Länge zu erhalten, vorausgesetzt, Sie haben genug Länge.
Ich habe ein paar andere Szenarien ausprobiert: "makeBricks (8, 1, 13)" "makeBricks (1, 2, 6)" wo entweder nicht genug oder zu viele große Steine sind, aber man braucht welche. Um beide Möglichkeiten zu berücksichtigen, benötigen Sie etwas wie:
%Vor%es gibt false zurück, weil Ihre zweite Prüfung es nur mit den großen vergleicht, die in Ihrem Gegenbeispiel Null haben.
also 2 & lt; = 0 ist falsch.
Hier ist ein guter Weg, es zu tun:
%Vor%Auf diese Weise werden Sie sicher nur so viele große Steine verwenden, wie Sie brauchen, aber nicht mehr. So können Sie nur erreichen, wenn Sie genügend kleine Steine haben.
Hier ist ein weiteres Übungsproblem, von dem ich dachte, dass es diesem Problem ziemlich ähnlich ist. Ich dachte nur, ich würde es posten und sehen, ob es für Leute funktioniert:
Sie erhalten einen int SO beginnend Reputation und ein Int SO Ziel Reputation, die höher ist als die Start-Rep. Sie beantworten nur Fragen, so dass Sie können Ruf nur durch 10 oder 15. Sie können auch abstimmen, so dass Sie den Ruf um 1 verlieren können. was ist die minimale Menge an Reputation, die Sie sollten verlieren, um das Ziel zu erreichen Ruf?
Beispiel: Sie beginnen mit 715 und Sie wollen 888 erreichen. Die Antwort ist 2.
Um die Herausforderung zu erhöhen, ändern Sie die Ints in Longs und verwenden Sie keine Schleife.
Hier ist meine ursprüngliche Antwort; es hat bei den anderen tests nicht geklappt, aber zu der zeit konnte ich nicht herausfinden, wie es nicht ging (kann es immer noch nicht), und die richtige antwort pisst mich an, denn obwohl es check out saugt bälle dass es tatsächlich funktioniert, weil eine bestimmte Aussage verdammt falsch ist. Rant rant rant, na egal hier:
%Vor%
Richtige Antwort hier, obwohl es saugen kann:
%Vor%
Wenn klein ist & gt; = der Rest, sollte es wahr sein, und wird immer sein, und wenn es nicht ist, dann kann es nicht wahr sein. Warum funktioniert mein Weg nicht, und so arbeite ich in seiner Unvollkommenheit? Ja die vorherige Aussage (Ziel & lt; = ((big * 5) + small)) löscht alle Fälle, in denen es nicht funktioniert, aber ich habe diese pauschale Aussage gemacht, um zu annullieren, dass alles, was nicht der Gesamtsumme von Zoll entspricht, falsch ist, nicht zu diesem Zweck habe ich es aus dem alten mathematischen Problem in jedem mathematischen Fach, das ich bisher hatte, abgeleitet, das in der einfachsten Form zu diesem zerlegt wird: w = (ax + bx) wobei w = ganzes a = eine Zahl (in dieser Fall 5) werte eine Operation größer als die durch b dargestellte Zahl (in diesem Fall 1) und x ist der LCF zwischen den beiden gefundenen Werten (in diesem Fall wieder 1) am passendsten durch dieses geometrische algebraische Problem ist ein Winkel 36 Grad größer als zwei zweimal sein ergänzender Winkel (x = 2 (180-x) +36; x = 396-2x; 3x = 396; x = 132). Normalerweise wird ein Hinweis gegeben, ob eine Gruppenmenge vorliegt, nicht nur Variablen. Und was stimmt nicht mit meiner, wo ist die Instanz, wo es nicht funktioniert?
Verwendet nur boolesche Operatoren, um das Fehlen beider Fehlerfälle !(fail || fail)
zu prüfen. Die offensichtlichen, nicht genug Steine, um das Ziel big*5 + small < goal
zu machen. Die weniger offensichtlichen, nicht genug kleinen Steine, wenn das Ziel nicht ein gleichmäßiges Vielfaches von 5 small < goal%5
ist.