HA2 7

Wambolo
Computerversteher
Computerversteher
Beiträge: 381
Registriert: 18. Okt 2007 11:36

Beitrag von Wambolo »

wenn ich jetzt in 7.3 anstelle eines Binärbaums eine Primzahl ausgebe, dann ist aber der Vertrag verletzt. Wie kann man das geschickt umgehen oder reicht es wenn ich in der Prozedurbeschreibung diesen Fall erläutere?
Interpreter/Parser reported on Nov 12, 2008 8:30:04 PM:
Number too big (102 > 42).

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Beitrag von marek »

Natrürlich können beide Kinder Primzahlen sein (z.B. wenn der 2. Faktor nicht zerlegt werden kann).
Somit muss auch die Datendefinition enthalten, dass Bäume auch Zahlen sein können (für den Fall, dass sie nicht ganzzahlig zerlegt werden können).
Es bietet sich bei der weiteren Implementierung logischerweise eine Abfrage zwischen Zahlen und Bäumen an.

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Beitrag von marek »

Damit wäre auch das Problem der "leeren Bäume" meiner Meinung nach gelöst. Die Primzahlen sind keine leeren Bäume, weil sie keine Bäume sind!

Benutzeravatar
bearmann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 121
Registriert: 20. Okt 2006 13:53
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von bearmann »

Servus,
stehe gerade etwas aufm Schlauch ... bei der 7.3:

Es soll ja so aussehen:
(list 1 2 3 4)
Bei mir ists aber nun:
(list 1 (list 2 (list 3 4)))

Ich weiss, wo der Hund begraben liegt - nämlich, dass er mir bei jedem rekursivem Aufruf ne neue (Unter-)liste anfängt ... aber ich komm nicht drauf, wie ich das umgehen kann?!
Hab momentan nen schönen 3 Zeiler für factor-list ...

Tipps?

Grüße,
bearmann

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Probiers mal mit cons!

Benutzeravatar
bearmann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 121
Registriert: 20. Okt 2006 13:53
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von bearmann »

yeah! Mein Held! :)

Dank' dir ... in meinem kleinen verwirrten Kopf war irgendwie, dass wenn cons reinkommt, auch cons rauskommt.
Aber eigentlich Schwachsinn, da ja cons = list ...

Besten Dank!

Grüße,
bearmann

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Beitrag von marek »

Endlich ein praktisches Beispiel dafür, dass list und cons nicht dasselbe sind!

Benutzeravatar
bearmann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 121
Registriert: 20. Okt 2006 13:53
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von bearmann »

Das stimmt, aber wenn du Scheme mit cons fütterst, macht es dir daraus eben einen (list ....) Ausdruck...

Grüße,
bearmann

Benutzeravatar
vwm
Mausschubser
Mausschubser
Beiträge: 94
Registriert: 7. Mai 2007 09:42
Wohnort: Rodenbach

Beitrag von vwm »

@intenso

was diesen automatisch wurzel drin kram angeht...

was ist denn, wenn die wurzel der zahl, die du suchst keine ganze zahl ist?
eine beliebige Primzahl z.b.
17: sqrt(17) ist ungefähr 4,123
17%2 = 1,
17%3 = 2
17%4 = 1
17%5 = 2
usw.

dann hat deine prozedur eine worst-case laufzeit von n statt von sqrt(n)
sprich: 1 tag berechnungszeit statt 5min!

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Du sollst ja auch nicht überprüfen, ob das modulo größer sqrt(17) ist, sondern der nächste zu testene Teiler größer sqrt(17) ist. :lol:
Demnach wäre schon nach 4 schluss und 17/5 würde er nicht mehr probieren.

Benutzeravatar
bearmann
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 121
Registriert: 20. Okt 2006 13:53
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von bearmann »

Den Sinn dieser Überprüfung hab ich sowieso nicht verstanden (ok, hab' den Satz auch nur überflogen). Ich starte einfach bei 2 und die erste Zahl, die mit remaind eine 0 gibt wird genommen ... Ende aus die Maus?! O_o
So hab ichs zumindest implementiert und druch exzessives Zufallszahlen einhacken kann ich bestätigen, dass es lüppt. :D

Good night and good luck.
bearmann

Benutzeravatar
Youssef
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 3. Mai 2006 21:02

Beitrag von Youssef »

Hallo
Bitte erklärt ihr mir was soll ich in 7.5 außer die Product funktion machen
ich meine es wurde verlangt das wir testen ob die Faktoriesierung gültig ist
(factor-list (factor-tree 30)) --> (list 2 3 5)
2 * 3 * 5 = 30 (gultige Faktoriesierung)
(factor-list (factor-tree 45)) --> (list 3 5)
3*5 = 15 (ungültige Faktoriesierung)
mussen wir auch ein Funktion die Boolean zurück gibt für diese Test
Vielen Dank

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus »

Liefert dein Programm beim Aufruf von (factor-list (factor-tree 45)) wirklich (list 3 5), dann hast du wohl was falsch gemacht ;) Es soll natürlich das richtige Ergebnis dabei herauskommen.

Benutzeravatar
Youssef
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 3. Mai 2006 21:02

Beitrag von Youssef »

Schreiben Sie eine Prozedur factor-list : tree -> list-of-num welche alle Blätter eines
Faktorbaumes als Liste zurückgibt.
Beispiel: (factor-list (factor-tree 30)) -> (list 2 3 5)

ich weiss nicht das steht doch so in Aufgabe ,wieso sagst du dass es falsch ist

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus »

Ich spreche von dem anderen Beispiel. Du merkst doch selbst, dass mit der Zahl 45 wohl eine ungültige Faktorisierung erzeugt wird. Aber warum?

Antworten

Zurück zu „Archiv“