Ein Java-Übungsproblem

9
___ answer1053982 ___

Ich denke, du kannst deinen zweiten Test einfach entfernen. Ich würde das versuchen:

%Vor%     
___ answer1054002 ___

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.

    
___ answer1054012 ___

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%     
___ answer1053985 ___

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.

    
___ answer1144456 ___

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.

    
___ answer10539913 ___

Das ist meine Antwort.

%Vor%     
___ answer3886375 ___

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?

    
___ answer20711345 ___
%Vor%

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.

    
___ answer26356527 ___

öffentliche Klasse Bricks {

%Vor%

}

    
___ answer29114076 ___
%Vor%

Das ist es. So wird es gemacht.

    
___ answer41924790 ___

Wahrscheinlich keine perfekte Lösung, aber vielleicht ein bisschen verständlicher als die vorherigen:

%Vor%     
___ answer38285414 ___

Hier ist die perfekte Lösung:

%Vor%     
___ answer43341419 ___
%Vor%     
___ answer44022241 ___

Auch Sie können das versuchen:

%Vor%     
___ answer49350294 ___

Dies ist eine ziemlich kurze und einfache Lösung, die ich beim Lösen des Problems codingbat verwendet habe:

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123logic ___ Logik bezieht sich auf den ultimativen Fluss Ihres Codes und darauf, wie Sie zu Ihrer gewünschten Lösung gelangen. Fragen sollten sich darauf beziehen, eine Kodierungslösung für ein gegebenes Problem zu finden (oder die vorhandene Kodierungslogik zu verbessern). Bitte verwenden Sie ein geeignetes Sprachtag, eine gründliche Beschreibung Ihrer Logik und den entsprechenden Code, an dem Sie gerade arbeiten. Allgemeine Logikfragen sind nicht Thema. Wenn Sie nur eine Codeüberprüfung benötigen, können Sie https://codereview.stackexchange.com in Betracht ziehen ___ answer1053980 ___

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%     
___ qstnhdr ___ Ein Java-Übungsproblem ___
fei 28.06.2009, 01:00
quelle

16 Antworten

18

Ich denke, du kannst deinen zweiten Test einfach entfernen. Ich würde das versuchen:

%Vor%     
Don Kirkby 28.06.2009, 01:08
quelle
11

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%     
cletus 28.06.2009 01:07
quelle
3

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.

    
Jeremy Salwen 28.06.2009 01:22
quelle
1

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%     
28.06.2009 01:37
quelle
1

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.

    
Victor 28.06.2009 01:09
quelle
1

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.

    
Victor 17.07.2009 16:44
quelle
1

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?

    
HermitInTheWoods 07.10.2010 22:34
quelle
0

Das ist meine Antwort.

%Vor%     
Warasint 10.05.2012 18:16
quelle
0
%Vor%

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.

    
dansalmo 20.12.2013 20:20
quelle
0

öffentliche Klasse Bricks {

%Vor%

}

    
Dileep Kumar Kottakota 14.10.2014 08:55
quelle
0
%Vor%

Das ist es. So wird es gemacht.

    
Jamhson 18.03.2015 04:21
quelle
0

Hier ist die perfekte Lösung:

%Vor%     
Prakhar Bhatt 09.07.2016 19:11
quelle
0

Wahrscheinlich keine perfekte Lösung, aber vielleicht ein bisschen verständlicher als die vorherigen:

%Vor%     
SteenDK 29.01.2017 19:03
quelle
0
%Vor%     
Kamesh Jagana 11.04.2017 09:07
quelle
0

Auch Sie können das versuchen:

%Vor%     
Morozov 17.05.2017 10:26
quelle
0

Dies ist eine ziemlich kurze und einfache Lösung, die ich beim Lösen des Problems codingbat verwendet habe:

%Vor%     
loo 18.03.2018 16:32
quelle

Tags und Links