Java Aufgabe Hilfe

Johganan

Grünschnabel
Hallo ich brauche hilfe bei meinen Java Hausaufgaben ich verstehe diese Aufgabe nicht.

Ein Stapel Münzen besteht aus folgenden Münzsorzen: 20, 15,3 Cent, 1- und 2 Euro Münzen.

  1. Erzeugen sie einen Stapel mit 20 verschiedenen Münzen.
  2. Sortieren sie das Geld nach Münzen und geben sie an, wie viel jeder Stapel wert ist und wie viele Münzen auf jedem Stapel liegen.
Ich weiß einfach nicht wie ich das programmieren soll.

Danke im voraus.
 

Technipion

Erfahrenes Mitglied
Hallo Johganan,
Ich weiß einfach nicht wie ich das programmieren soll.
es ist problemlos möglich einen wunderschönen, großen Kristall aus nur einem einzigen Salzkorn zu züchten. Allerdings braucht man halt irgendeinen Anfang. Was hast du dir denn bis jetzt konkret überlegt? Gerne auch Code posten falls du schon irgendwas hast!

Gruß Technipion
 

tklustig

Erfahrenes Mitglied
Die Programmierung ist weniger wichtig. Wichtig, ist das Verständnis der Mathematik. Nur die Mathematik erlaubt dir, diese Aufgabe zu lösen., sprich, du musst geeignete Algorithmen bilden können. Frage: In welchem Semester wurde diese Aufgabe gestellt? Hast Du das Grundstudium bereits bestanden, sprich, alle Mathescheine bekommen?
Ich werde versuchen, ein Lösung in C# zu entwickeln, habe aber spontan auch keine Idee. Du kannst mich gerne auch über meine Website kontaktieren. Sollte die Fragestellung algorithmisch nicht lösbar sein, werde ich Dir das mathematisch beweisen!
LG
Kipp, Thomas (Dipl.-Math. && beruflicher Softwareentwickler)
PS.: Mich irritiert folgendes
  1. Erzeugen sie einen Stapel mit 20 verschiedenen Münzen(Singular)
  2. Sortieren sie das Geld nach Münzen und geben sie an, wie viel jeder Stapel wert ist und wie viele Münzen auf jedem Stapel liegen.(Plural)
Wäre 2. im Singular geschrieben, Die Aufgabe wäre lösbar, so aber ist sie konfus gestellt! Außerdem müsste "sie" groß geschrieben sein, => Fake Job??
 
Zuletzt bearbeitet:

Technipion

Erfahrenes Mitglied
Vielleicht sollten wir auf sowas einfach mit Codegolfing antworten? :D
Na dann leg ich doch mal vor:
Python:
from random import randint as ri
l=[[20,15,3,1,100,200][ri(0, 5)] for i in range(20)];lc=l.count
[print(f'{lc(c)} * {c/100:.2f}€ = {c/100*lc(c):.2f}€') for c in sorted(set(l))]

Absichtlich in Python, man will ja niemanden in Versuchung bringen abzuschreiben.

@Johganan : Fangen wir Schritt für Schritt an.
Erzeugen sie einen Stapel mit 20 verschiedenen Münzen.
Hast du dazu schon was?
 

tklustig

Erfahrenes Mitglied
Dein Code funktioniert nicht, ist aber nachvollziehbar.(siehe Anhang). Python ist eine der dämlichsten Interpreter Sprachen, die ich kenne. Warum formulierst du Deine Lösung nicht in C oder meinetwegen in JavaScript oder PHP??
Anbei noch dein Code, ausgeführt von Python 2.7! Nicht von Python 3.X. Da liegt wohl der Hund begraben:confused:
Python:
import platform
import time
print"Python Version %s:" % platform.python_version()
time.sleep(3)
from random import randint as ri
l=[[20,15,3,1,100,200][ri(0, 5)] for i in range(20)];lc=l.count
[print(f'{lc(c)} * {c/100:.2f}€ = {c/100*lc(c):.2f}€') for c in sorted(set(l))]

Ich würde in C# ähnlich vorgehen wie du, nämlich über einen Zufallsgenerator 20 Münzen erzeugen lassen und diese in eine generische Liste packen und sortieren, Wäre ihm aber mit Pseudocode oder Struktogrammen nicht eher geholfen? Ich meine, solange sich "Johagan" nicht mehr meldet, sollte dieser Thread geschlossen werden. Informatiker, die nix auf'm Kasten haben und sich nicht mehr melden, nun ja, nein Danke!!
 

Anhänge

  • battle.JPG
    battle.JPG
    38,3 KB · Aufrufe: 3
Zuletzt bearbeitet:

ComFreek

Mod | @comfreek
Moderator
Frage: In welchem Semester wurde diese Aufgabe gestellt? Hast Du das Grundstudium bereits bestanden, sprich, alle Mathescheine bekommen?
Diesen Gedankengang kann ich nicht ganz nachvollziehen. Diese Aufgabe bedarf keiner höheren Mathematik. Mit genügend Erklärungen könnte man die Aufgabe auch mit 4. Klässlern spielen.

@Technipion Ich unterbiete hiermit mit 127 Bytes in JavaScript :p
Javascript:
c={1:0,3:0,15:0,20:0,100:0,200:0};for(o=Object,i=20;i--;)c[o.keys(c)[~~(Math.random()*6)]]++;o.entries(c).map(t=>[t,t[0]*t[1]])
Die Ausgabe ist beispielsweise
Code:
[[["1",0],0],[["3",3],9],[["15",4],60],[["20",3],60],[["100",7],700],[["200",3],600]]
Das bedeutet, dass die Münze mit Wert 1€ 0 Mal gezogen wurde, die Münze mit 3€ genau 3 Mal (und damit 9€ Wert), die Münze mit Wert 15€ genau 4 Mal (damit 60€ Wert) usw.[/code]

Falls jemand Ideen hat, wie ich die Null-Initialisierungen wegbekomme, immer her damit!

Update: Runter auf 112 Bytes:
Javascript:
c=[1,3,15,20,100,200];d=[];for(i=20;i--;)j=~~(Math.random()*6),d[j]=d[j]?d[j]+1:1;d.map((x,i,_,e=c[i])=>[e,e*x])

Update 2: Runter auf 110 Bytes:
Javascript:
c=[1,3,15,20,100,200];d=[];for(i=20;i--;)d[j=~~(Math.random()*6)]=d[j]?d[j]+1:1;d.map((x,i,_,e=c[i])=>[e,e*x])

Update 3: Runter auf 105 Bytes:
Javascript:
c=[1,3,15,20,100,200];d=[];for(i=20;i--;)d[j=~~(Math.random()*6)]=~~d[j]+1;d.map((x,i,_,e=c[i])=>[e,e*x])

Update 4: Runter auf 103 Bytes:
Javascript:
c=[1,3,15,20,100,200];d=[];for(i=20;i--;)d[j=Math.random()*6|0]=~~d[j]+1;d.map((x,i,_,e=c[i])=>[e,e*x])

Update 5: Runter auf 100 Bytes:
Javascript:
c=[1,3,15,20,100,200];d=[];for(i=20;i--;)d[j=Math.random()*6|0]=~~d[j]+1;d.map((x,i)=>[c[i],c[i]*x])

Update 6: Runter auf 98 Bytes:
Javascript:
c=[1,3,15,20,100,200];d=[];for(i=20;i--;)d[j=Math.random()*6|0]=-~d[j];d.map((x,i)=>[c[i],c[i]*x])

Jemand anderes hat es sogar auf 93 Bytes geschafft, aber ehrlich gesagt verstehe ich die Lösung nicht ganz :) 93 Byte Variante im 'The Nineteenth Byte' Chat auf CodeGolf.StackExchange.com

Hilfreich waren:
 
Zuletzt bearbeitet:

tklustig

Erfahrenes Mitglied
Ich bin der Ansicht, wir verrennen uns hier in Absurditäten. Ob der Code 98 Bytes umfasst, oder 127 Bytes ist doch völlig irrelevant.

Die Bedingung war doch:

  • Erzeugen sie einen Stapel mit 20 verschiedenen Münzen.
Das umzusetzen ist fürwahr trivial

aber:

  • Sortieren sie das Geld nach Münzen und geben sie an, wie viel jeder Stapel wert ist und wie viele Münzen auf jedem Stapel liegen.


Ist damit der Stapel innerhalb des ersten Stapels gemeint, und wie soll sortiert werden. Aufsteigend oder absteigend. Nach welchen Münzen soll sortiert werden? Meiner Ansicht nach ist diese Aufgabe Unsinn, und da sich „Johagann“ nicht mehr meldet, für mich auch nicht mehr relevant!

Happy Coding

Kipp, Thomas
 

Technipion

Erfahrenes Mitglied
Hallo tklustig,
Ich bin der Ansicht, wir verrennen uns hier in Absurditäten. Ob der Code 98 Bytes umfasst, oder 127 Bytes ist doch völlig irrelevant.
@ComFreek hat sich hier nur an CodeGolf versucht. Einfach ausgedrückt: Im Golf versucht man, mit so wenigen Schlägen wie möglich ans Ziel zu kommen. Genau darum geht es beim CodeGolf: So wenig Programmcode wie möglich, der das Problem löst.

An der Stelle übrigens:
Update 6: Runter auf 98 Bytes:
Respekt alter! Ich beuge mich dem Meister :D

Meiner Ansicht nach ist diese Aufgabe Unsinn, und da sich „Johagann“ nicht mehr meldet, für mich auch nicht mehr relevant!
Ja der Thread ist ein bisschen entglitten, allerdings meldet sich @Johganan ja auch nicht mehr. Auch in seinem Cross-Post ist seither Funkstille. Ich nehme an der feiert jetzt das Wochenende durch, und erwartet sich morgen fertige Lösungen von uns. Von daher bitte ich einfach mal, hier nichts fertiges (in Java) zu posten.

Gruß Technipion