Matthias Reitinger
ɐɯıǝɹ
Quiz #6
World of Codecraft
Regeln
Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Lösungsansätze können und dürfen auch schon vorab untereinander ausgetauscht und diskutiert werden, allerdings nicht öffentlich im Forum. Verwendet stattdessen bitte private Nachrichten oder schaut im Chat vorbei.
Abgabe
Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist Sonntag, der 9. November 2008 um ca. 22 Uhr.
Das Problem
Du bist Beta-Tester des neuen, revolutionären MMORPG "World of Codecraft". Darin übernimmt der Spieler die Rolle eines Programmierers, der Programmieraufträge erfüllen muss, um seine Eigenschaftswerte zu verbessern. Der Programmierer besitzt die Eigenschaftswerte "Programmierung" und "Teamfähigkeit". Beide können ganzzahlige, positive Werte annehmen. Anfänglich besitzt man in beiden den Wert 1. Damit der Programmierer einen Auftrag annehmen kann, muss er in "Programmierung" oder in "Teamfähigkeit" eine bestimmte Mindestpunktzahl besitzen. Für die Erfüllung eines Auftrags bekommt der Programmierer Erfahrungspunkte. Diese kann er frei auf seine beiden Eigenschaftswerte verteilen.
Du hast dir nun bereits einige interessante Aufträge herausgesucht, von denen die Punkteanforderungen und die Erfahrungspunkte bekannt sind. Jetzt willst du herausfinden, wie viele dieser Aufträge du bei geschickter Wahl der Reihenfolge und Verteilung der Erfahrungspunkte höchstens erfüllen kannst. Da du im echten Leben auch ein Programmierer bist, schreibst du dir dafür natürlich ein Programm.
Die Eingabe besteht aus den Beschreibungen der ausgesuchten Aufträge. Jeder Auftrag wird durch zwei Zeilen spezifiziert. Die erste Zeile enthält den Titel (Benennung) des Auftrags. In der zweiten Zeile stehen durch Leerzeichen getrennt: die nötigen Punkte in "Programmierung", die nötigen Punkte in "Teamfähigkeit" und die Erfahrungspunkte, die man bei Erfüllung erhält. Das Ende der Eingabe wird durch eine Leerzeile markiert.
Als Ausgabe wird die maximale Anzahl der erfüllbaren Aufträge erwartet.
Erweiterung
Es sollen zusätzlich noch die Titel der auszuführenden Aufträge in der richtigen Reihenfolge und die zu wählende Punkteverteilung ausgegeben werden. Es bleibt euch überlassen, ob ihr alle möglichen (können sehr viele werden) oder nur die erstbeste Lösung ausgebt.
Beispiele
Eingabe:
Ausgabe:
Ausgabe (erweitert):
Hinweis 1: Es ist egal, ob man den einen Punkt aus "Taschenrechner" für PR (Programmierung) oder TF (Teamfähigkeit) verwendet. In beiden Fällen kann "Tabellenkalkulation" angenommen werden (da man ja die Punktegrenze in PR oder die in TF (oder beide) erfüllen muss).
Hinweis 2: Die Punkteverteilung von "Tabellenkalkulation" ist hier natürlich irrelevant und wurde willkürlich gewählt.
Eingabe:
Ausgabe:
Ausgabe (erweitert):
Eingabe:
Ausgabe:
Ausgabe (erweitert): Keine Ahnung, dazu müsste ich die Erweiterung erst mal selber implementieren ;-)
Viel Spaß!
World of Codecraft
Regeln
Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Lösungsansätze können und dürfen auch schon vorab untereinander ausgetauscht und diskutiert werden, allerdings nicht öffentlich im Forum. Verwendet stattdessen bitte private Nachrichten oder schaut im Chat vorbei.
Abgabe
Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist Sonntag, der 9. November 2008 um ca. 22 Uhr.
Das Problem
Du bist Beta-Tester des neuen, revolutionären MMORPG "World of Codecraft". Darin übernimmt der Spieler die Rolle eines Programmierers, der Programmieraufträge erfüllen muss, um seine Eigenschaftswerte zu verbessern. Der Programmierer besitzt die Eigenschaftswerte "Programmierung" und "Teamfähigkeit". Beide können ganzzahlige, positive Werte annehmen. Anfänglich besitzt man in beiden den Wert 1. Damit der Programmierer einen Auftrag annehmen kann, muss er in "Programmierung" oder in "Teamfähigkeit" eine bestimmte Mindestpunktzahl besitzen. Für die Erfüllung eines Auftrags bekommt der Programmierer Erfahrungspunkte. Diese kann er frei auf seine beiden Eigenschaftswerte verteilen.
Du hast dir nun bereits einige interessante Aufträge herausgesucht, von denen die Punkteanforderungen und die Erfahrungspunkte bekannt sind. Jetzt willst du herausfinden, wie viele dieser Aufträge du bei geschickter Wahl der Reihenfolge und Verteilung der Erfahrungspunkte höchstens erfüllen kannst. Da du im echten Leben auch ein Programmierer bist, schreibst du dir dafür natürlich ein Programm.
Die Eingabe besteht aus den Beschreibungen der ausgesuchten Aufträge. Jeder Auftrag wird durch zwei Zeilen spezifiziert. Die erste Zeile enthält den Titel (Benennung) des Auftrags. In der zweiten Zeile stehen durch Leerzeichen getrennt: die nötigen Punkte in "Programmierung", die nötigen Punkte in "Teamfähigkeit" und die Erfahrungspunkte, die man bei Erfüllung erhält. Das Ende der Eingabe wird durch eine Leerzeile markiert.
Als Ausgabe wird die maximale Anzahl der erfüllbaren Aufträge erwartet.
Erweiterung
Es sollen zusätzlich noch die Titel der auszuführenden Aufträge in der richtigen Reihenfolge und die zu wählende Punkteverteilung ausgegeben werden. Es bleibt euch überlassen, ob ihr alle möglichen (können sehr viele werden) oder nur die erstbeste Lösung ausgebt.
Beispiele
Eingabe:
Code:
Taschenrechner
1 1 1
Tabellenkalkulation
2 2 2
Code:
2
Code:
1. Nehme "Taschenrechner" an, verteile 1 PR, 0 TF.
2. Nehme "Tabellenkalkulation" an, verteile 1 PR, 1 TF.
Hinweis 2: Die Punkteverteilung von "Tabellenkalkulation" ist hier natürlich irrelevant und wurde willkürlich gewählt.
Eingabe:
Code:
A
1 1 2
B
3 1 1
C
1 3 1
D
10 20 5
E
3 3 1
Code:
4
Code:
1. Nehme "A" an, verteile 2 PR, 0 TF.
2. Nehme "B" an, verteile 0 PR, 1 TF.
3. Nehme "C" an, verteile 0 PR, 1 TF.
2. Nehme "E" an, verteile 1 PR, 0 TF.
Eingabe:
Code:
A
603 614 19
B
710 669 2
C
65 985 21
D
577 610 1
E
751 624 12
F
786 826 16
G
358 817 2
H
339 494 19
I
257 937 5
J
35 268 6
K
1 1 14
L
58 357 1
M
681 607 5
N
640 559 2
O
370 744 15
P
310 452 20
Q
1 1 16
R
194 737 16
S
1 1 9
T
664 744 1
U
617 51 15
V
748 990 15
W
135 253 20
X
705 814 15
Y
371 491 13
Z
1 1 13
a
552 794 8
b
148 477 8
c
145 564 22
d
1 1 21
e
780 106 10
f
35 747 13
g
1 1 6
h
628 414 16
i
175 402 17
j
278 117 13
k
2 990 19
l
609 385 13
m
271 94 9
n
437 728 4
o
424 841 8
p
652 76 7
q
771 179 13
r
616 948 2
s
688 975 8
t
749 378 11
u
694 180 2
Code:
16
Viel Spaß!