| Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann. |
Diskussion: Die Häuser vom Nikolaus im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige Jeder kennt das Haus vom Nikolaus (eine Figur mus in einem Zug gezeichnet werden - also ohne den Stift ...
![]() |
| | #1 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Anzeige Jeder kennt das Haus vom Nikolaus (eine Figur mus in einem Zug gezeichnet werden - also ohne den Stift abzusetzen oder über eine bereits gezeichnete Linie zu führen) . Aber keiner weiß, dass er inzwischen mehrere davon hat und auch ein schnelleres Fortbewegungsmittel Können folgende Figuren "in einem Zug" gezeichnet werden? Code: /\ /\
/ \ / \
+----+ +----+
|\ /| |\ /|
| \/ | | \/ |
/\ /\ /\ | /\ | | /\ |
/ \ / \ / \ |/ \| |/ \|
+----+ +----+----+ + + ......
|\ /| |\ / \ /| |\ /| /|\ /|\
| \/ | | \/ \/ | | \/ | / | \/ | \
| /\ | | /\ /\ | | /\ | / | /\ | \
|/ \| |/ \ / \| |/ \| / |/ \| \
+....+ +....+....+ +....+ /....+....+....\ Euer Programm sollte bei einer Eingabe sagen, ob es eine Möglichkeit gibt und wenn ja, möglichst alle auflisten. Damit es nicht zur GUI Plackerei ausartet (wer mag, kann natürlich trotzdem eine anbieten Wir bezeichnen einzelne Punkte mit Buchstaben oder Ziffern: Code: % G G % /\ /\ % / \ / \ % E----F E----F % |\ /| |\ /| % E G H | \/ | | \/ | % /\ /\ /\ | /\ | | /\ | % / \ / \ / \ |/ \| |/ \| % C----D D----E----F C D C....D % |\ /| |\ / \ /| |\ /| /|\ /|\ % | \/ | | \/ \/ | | \/ | / | \/ | \ % | /\ | | /\ /\ | | /\ | / | /\ | \ % |/ \| |/ \ / \| |/ \| / |/ \| \ % A....B A....B....C A....B H....A....B....I also: Input: punkt(A,B),punkt(A,C), punkt(A,D),punkt(E,D), punkt (E,C), punkt(D,C),punkt(D,B). Nur als Beispiel - ihr dürft das natürlich gerne variieren (z.B jeden Punkt aufzählen) oder im Programm festkodieren. Das Programm gibt dann einfach aus, in welcher Reihenfolge man den Stift führen müsste: z.B für das erste Haus: a, b, c, a, d, c, e, d, b
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #2 (permalink) |
| Registriert seit: 01.11.03 ![]() Likes: 0 | Noch kein Source ;) Source kommt noch... aber erstmal den anderen noch ne Chance geben |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Man, und ich dachte mir, dass ich euch meine Hausaufgaben erledigen lassen kann *Mist*. Ist ja eine Pein, die Koordinaten einzugeben B2T: Hab die gleichen Lösungen heraus. Edit: warum nur so wenig Interesse ? paar Hinweise und Beispielcode
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #4 (permalink) |
| Einerseits weil ich es gerade erst gesehen habe und zugegebener massen noch keine Ahnung habe wie ich das in ein Programm umsetzten könnte, muss mir mal gedanken machen ob ich nen Lösungsansatz finde. (Von der fertigen Programmierung ganz zu schweigen). greetz chris | |
| | |
| | #5 (permalink) |
| Registriert seit: 01.11.03 ![]() Likes: 0 | Ob noch was von anderen kommt!? Ka... aber hier mal mein Source Code: C++ |
| | |
| | #6 (permalink) |
| Registriert seit: 22.03.08 ![]() Likes: 0 | Auch in Prolog: poorlog edit: Hm, sieht CWD's Lösung schon gefährlich ähnlich. :| Aber das ist halt die einfachste/intuitivste Lösung des Problems. (Ihmo). Mit vordefinierten Fakten für die Knoten und dann wildem rumprobieren aller Möglichkeiten, bis mal ne Verbindung möglich ist (und sich dann noch die gegangenen Verbindungen zu merken), ist im Vergleich zu select doch sehr um die Ecke. EDIT: Falls Jemand noch nach nem Lösungsansatz für dieses Problem sucht, mit der richtigen Datenstruktur ist es ziemlich trivial. Die "richtige" Datenstruktur wäre hier eine Adjazenzmatrix, implementiert als 2dimensionales Array. Mehr dazu hier. |
| | |
| | #7 (permalink) | |
| Registriert seit: 21.04.08 ![]() Likes: 0 | In Python: Code: from time import time
def solve(edges, currEdge, currVertice, way=[]):
global sols
if len(way) == len(edges):
sols.add("%s" % map(lambda w: w[1], way))
for nextEdge in edges:
if currVertice in (nextEdge[0], nextEdge[1]):
if nextEdge not in map(lambda w: w[0], way):
nextVertice = nextEdge[1] if nextEdge[0] == currVertice else nextEdge[0]
if nextVertice not in map(lambda w: w[1], way[-1:]):
solve(edges, nextEdge, nextVertice, way + [(currEdge, currVertice)])
def process(edges):
global sols
sols = set()
for currEdge in edges:
for currVertice in currEdge:
solve(edges, currEdge, currVertice)
return len(sols)
if __name__ == '__main__':
h1 = [("A","B"),("A","C"),("A","D"),("B","D"),("B","C"),("C","D"),("E","C"),("E","D")]
h2 = [("A","B"),("A","E"),("A","D"),("B","C"),("B","F"),("B","D"),("C","F"),("C","E"),("F","E"),("F","H"),("E","H"),("E","G"),("E","D"),("D","G")]
h3 = [("A","B"),("A","D"),("A","C"),("B","D"),("B","C"),("C","F"),("C","E"),("D","E"),("D","F"),("F","G"),("F","E"),("E","G")]
h4 = [("H","A"),("H","C"),("A","B"),("A","D"),("A","C"),("B","I"),("B","D"),("B","C"),("I","D"),("C","D"),("C","F"),("C","E"),("D","F"),("D","E"),("F","G"),("F","E"),("E","G")]
for house in [h1, h2, h3, h4]:
t = time()
print ">> count: %i\ttime: %.2fs" % (process(house), time() - t) Zitat:
Felix | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |