MiniBCC #18 - Abstimmung

Übersicht Sonstiges Projekte

Neue Antwort erstellen

Der Beitrag welchen Teilnehmers hat dich am meisten überzeugt?
DAK 0% 0% 0 Stimmen
Holzchopf 16% 16% 1 Stimmen
SpionAtom 83% 83% 5 Stimmen
Insgesamt 6 Stimmen

Xeres

Moderator

Betreff: MiniBCC #18 - Abstimmung

BeitragMo, Jan 06, 2014 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Grüße!

Wir haben drei Teilnehmer, die die Aufgabe gelöst haben. Die Ergebnisse sollten ja gleich sein, darum lohnt es sich, kurz den Code zu öffnen und dessen Zustand ein zu schätzen.

beitreage_minibcc18.zip [~500KB]

Die Originalaufgabe findet sich auf hackerrank.com/coinage wieder, von wo ich sieh geliehen habe, da mir nichts besseres einfiel.

Die Umfrage läuft 7 Tage, also sollte nächsten Montag das Ergebnis fest stehen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Di, Jan 14, 2014 19:46, insgesamt einmal bearbeitet

Holzchopf

Meisterpacker

BeitragMo, Jan 06, 2014 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich bei DAKs Programm die Zahlen vom Beispiel eingebe, Zitat:
Ihr besitzt 2x1c, 3x2c, 1x5c 1x10c und wollt ein Brötchen zu 15c Bezahlen.
Ihr könntet so bezahlen: 1x5c + 1x10c
oder so: 1x1c + 2x2c + 1x10c
Also sollte euer Programm ausgeben: 2

erhalte ich als Antwort 14. Sicher, dass da die richtige Version im Zip-Archiv beilag? Ändert man nämlich CHECKPERMUTATIONS auf true, dann stimmt's wieder Confused
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

DAK

BeitragMo, Jan 06, 2014 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab da eine verbuggte Version hochgeladen und wollte sie noch ändern, bin aber wegen mehreren Uni-Abgaben nicht mehr dazu gekommen.

Meine Abgabe könnte man da eigentlich rausnehmen und nicht bewerten.
Gewinner der 6. und der 68. BlitzCodeCompo

Krusby

BeitragMi, Jan 08, 2014 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Stimme geht an SpionAtom.
Ganz klar Optisch einwandfrei und macht genau das was es soll und das sehr zügig.
Was mich aber eigentlich dazu bringt hier zu Posten ist, weiß auch nicht obs an mir lag oder an euren Programmen aber DAK dein Programm zum Beispiel Listet garkeine möglichen kombinationen auf und Holz... seins läst sich so erst garnicht starten.
Gewinner des BCC 76

DAK

BeitragMi, Jan 08, 2014 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, die Version, die da oben ist, sollte wirklich nicht da sein.
Gewinner der 6. und der 68. BlitzCodeCompo

Holzchopf

Meisterpacker

BeitragDo, Jan 09, 2014 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann es sein, dass man hier genau sieht wer in der Industrie tätig ist und wer noch zur Schule geht? Rolling Eyes Das Programm soll laut Aufgabenstellung lediglich die Frage nach der Anzahl Kombinationen beantworten - mein Programm tut genau das. Nicht mehr, nicht weniger. Zugegeben: das ist minimalistisch, aber wir sind ja hier auch beim MiniBCC Laughing

Guckt man die Codes an (worauf man sogar vom Wettbewerbveranstalter hingewiesen wird), sieht man, dass Spion einen anderen Ansatz wählte als ich, nämlich einen rekursiven Algorithmus. Intuitiv sollte diese Lösung einiges schneller sein als meine, doch leider lässt sich die reine Rechenzeit mit den beiden Programmen so nicht direkt vergleichen: Spions Programm aktualisiert bei jeder gefundenen Möglichkeit die GUI, was dann eben zu erheblichen Verzögerungen führt, wenn viele Möglichkeiten existieren.

Also, Spion: Den Algorithmus in seinen Grundzügen hast du gut hingekriegt, von allen dreien bestimmt der fixeste und robusteste. Du hast dir auch die Mühe genommen, eine GUI hinzuzaubern. Aber du hast den Geschwindigkeits-Vorzug des Algos durch die ewige Aktualisierung zerstört. Und da machst du ein schickes Programm mit Bedieneroberfläche und bist dir zu schade die Readme dazu anzupassen. Spiesser, tzes... Und der Code erst Rolling Eyes Dass du kaum kommentierst mag ich dir ja noch verzeihen aber WER ZUM TEUFEL benutzt 3 (DREI!!!) Leerzeichen anstelle von Tabs? Also meine Stimme kriegst du nicht! Niemals! Andererseits fehlt's leider irgendwie an Alternativen Confused

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

SpionAtom

Betreff: Also das war so...

BeitragDo, Jan 09, 2014 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein ursprüngliches Paket beinhaltete neben der B+ Variante noch die BB Variante, und für diese war auch die Readme-Datei (kann ich ja nicht wissen, dass Xeres die Pakete brutal minimiert).
Ich habe mich letztendlich für die B+ Variante entschieden, weil die am geilsten aussah.
Die Leerzeichen kommen sicherlich daher, dass ich ständig aus der Hilfe Zeugs kopiert habe - ich habe noch nie etwas mit B+ zuvor gemacht.
Am Ende ist die Eingabe/Ausgabe natürlich nur schmückendes Beiwerk und man sollte sich im wesentlichen nur auf den Algorithmus konzentrieren... ...als ob sich ein Wähler hier die Zeit nehmen würde um Quelltext zu analysieren Rolling Eyes

Sicher hilft es, den Code zu kommentieren. Ich war zu faul.
Aber ich werd mal ne Algorithmus-erklärung nachliefern:

Der Algorithmus erhält als Parameter eine Summe sum, die man erreichen möchte, sowie die Anzahlen der vier verschiedenen Münzen a1, a2, a5, ax. (die Variable out$ vernachlässige ich, die ist nur für die Ausgabe)
Und er gibt zurück: die Anzahl an Münzkombinationen

Function CoinSums(Sum, a1, a2, a5, ax).

Dann habe ich mir überlegt, was passiert, wenn man eine Zehnermünze wegnimmt, und bin zum Ergebnis gekommen:

Wenn es noch Zehnermünzen gibt und die zu erreichende Summe auch größergleich 10 ist, dann gilt:

CoinSums(Sum, a1, a2, a5, ax) = CoinSums(Sum - 10, a1, a2, a5, ax - 1) + CoinSums(Sum, a1, a2, a5, 0)

Was steht hier?
Die Kombinationen um die Summe sum zu erreichen mit einem bestimmten Pool an Münzen
IST GLEICH (der Kombinationen die Summe sum - 10 zu erreichen mit einem bestimmten Pool an Münzen - eine Zehnermünze) PLUS (die Kombinationen um die Summe sum zu erreichen mit einem bestimmten Pool an Münzen ohne Zehnermünzen zu verwenden)

Harter Tobak, und ich habe auch lange daran rumprobiert. Das ganze muss man für alle Münzen durchspielen.

Ist die Summe bei einem Rekursionsaufruf mal bei 0 angekommen, so weiß ich, dass eine Lösung gefunden wurde.

Funfact: Die erste gefundene Lösung ist immer die optimale, also die mit den wenigsten Münzen
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Holzchopf

Meisterpacker

BeitragDo, Jan 09, 2014 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hihi Smile du brauchst dich doch nicht zu rechtfertigen, wollte nur sticheln Wink Ich ging auch nicht davon aus, dass jemand die Quelltexte analysieren würde. Das wär's ja noch Rolling Eyes

Dass du lange am Algo rumprobiert hast kann ich mir vorstellen. Ich nehme an, rumprobieren bezieht sich auf die mathematische Herleitung des Algorithmus und nicht dessen Umsetzung...
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Krusby

BeitragDo, Jan 09, 2014 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Holzchopf hat Folgendes geschrieben:
Kann es sein, dass man hier genau sieht wer in der Industrie tätig ist und wer noch zur Schule geht? Rolling Eyes


Verstehe nicht ganz was du mit diesen Satz aussagen möchtest und was das überhaupt damit zu tun hat Holzchopf Question
Gewinner des BCC 76

Holzchopf

Meisterpacker

BeitragFr, Jan 10, 2014 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, hab vergessen das auszuführen Embarassed

Ich habe mal ganz einfach unterstellt, dass ich nur das nötige gemacht habe, um die Aufgabe zu erfüllen, weil es so auch Gang und Gäbe ist, wenn man nach einem Pflichtenheft arbeitet. Genau genommen wäre es sogar verpönt, mehr als nur das nötige zu machen. Gefordert war ein Programm, dass die Frage nach der Anzahl Möglichkeiten beantwortet - es war keine Rede von GUI oder Auflistung der Möglichkeiten. Wäre die Aufgabe also ein Pflichtenheft, würde es genau das beschreiben, was mein Programm tut. Spions hingegen würde eher auf ein anderes (jedoch leider nie dagewesenen Razz ) passen Wink

In der Schule hingegen (auch im Studium) wird nicht mit PHs gearbeitet. Da sind Aufgaben nur Aufgaben um etwas vorzugeben mit dem man die Ergebnisse messbar vergleichen kann: Man kriegt eine Zielvorgabe, die man entweder nicht erreicht, erreicht oder gar übertrifft. Spions Abgabe übertrifft nun sogar im doppelten Sinne: Er liefert eine praktische GUI dazu und lässt das Programm sogar die Möglichkeiten auflisten.

Lässt man DAKs Beitrag aussen vor, gibt's zwei Beiträge wie Tag und Nacht - eine Minimal- und eine Maximalvariante. Das kam mir eben bekannt vor. Ich weiss nicht mal ob Spion noch studiert, aber mich erinnerte es halt daran, wie unterschiedlich man eine Vorgabe interpretieren kann, abhängig davon, ob man seine Brötchen oder seine Noten damit verdient.

Alles klar?

Nebenbei: Du sagst, meines liesse sich nicht ausführen - wie startest du das Programm denn?
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

SpionAtom

BeitragFr, Jan 10, 2014 0:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Studiere nicht.
Ich hatte auch erst "nur" die Minimalvariante. Aber da wir hier im Wettbewerbskontext sind und nicht in der Industrie, habe ich die Stimmenfanglösung gewählt. Tja, HC, ich bin eben der schlauere von uns beiden Wink


Wenn ich auf der Arbeit programmiere (was leider viel zu selten vorkommt), dann hält mich mein Chef auch dazu an, nur das nötigste zu programmieren.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Holzchopf

Meisterpacker

BeitragFr, Jan 10, 2014 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
Tja, HC, ich bin eben der schlauere von uns beiden Wink

Du hast "fleissigere" falsch geschrieben Mr. Green

Ich will mich auch nicht als faul darstellen (auch wenn meine Faulheit Grund für den minimalistischen Beitrag War), immerhin habe ich einen Beitrag abgeliefert... Wink
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xeres

Moderator

BeitragDi, Jan 14, 2014 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Massen haben abgestimmt und SpionAtom für siegreich erklärt!
Möge er wohlwollend den nächsten MiniBCC regieren.

Danke an alle Teilnehmer und Abstimmer!
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group