Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Zully

Zuhörer

  • "Zully" is male
  • "Zully" started this thread

Posts: 1

Date of registration: Oct 9th 2006

Occupation: Informatik - Ersi

1

Thursday, November 2nd 2006, 12:03am

Übungsblatt 2 - Programmieren (Scheme) - Hilfe!

Ich probiere jetzt schon einige Zeit an Aufgabe 3 herum. Es geht darum an den Ecken eines Quadrats positive Zahlen zu schreiben und dann den Absolutwert der Differenz zweier benachbarter Zahlen in die Mitte der Kante zu schreiben.
Dann definiert man wieder ein Quadrat, dessen Ecken mit den gerade berechneten Zahlen matkiert sind. Das geht immer so weiter bis man auf ein Quadrat stößt, dessen vier Ecken mit 0 markiert sind.

Dazu soll man jetzt eine Prozedur schreiben (diffy-length 7 3 6 4) ---> 4
Ich und einige Mitkomilitonen haben uns daran einige Stunden dran versucht, wir kriegen es hin die einzelnen Quadrate auszurechnen, dass am Ende 0 rauskommt.. aber wieviele Quadrate man nun braucht bzw. wie man das programmiert, da stehen wir auf dem Schlauch.

Hat jemand von euch eine Ahnung bzw hat jemand einen kleinen Tipp? braucht man einen bestimmten Befehl?

Danke schonmal :)

oixio

Senior Schreiberling

  • "oixio" is male

Posts: 517

Date of registration: Oct 3rd 2004

2

Thursday, November 2nd 2006, 12:20am

Also bekommt ihr es hin, die einzelnen Quadrate auszurechen. Ich nehem mal an, ihr habt eine Prozedur, die aus vier gegebenen Ecken die vier neuen berechnet (oder so ähnlich).

Jetzt gibt es sogar mindestens zwei Möglichkeiten zu zählen:

1) über eine interne Hilfsprozedur, die als einen weiteren Parameter einen counter hat

2) man rechnet mit der Prozedur selber


Welchen Prozess diese beiden Möglichkeiten jeweils beschreiben sollt ihr ja auch mit angeben, deswegen verrate ich das jetzt nicht!


Ich hoffe das reicht als Hinweis. Wenn nicht, nochmal nachfragen.
Dieser Post wurde aus 100 % chlorfrei gebleichten, handelsüblichen, freilaufenden, glücklichen Elektronen erzeugt!

Warui

Turner, Serveradmin & Workaholic

  • "Warui" is male

Posts: 717

Date of registration: Apr 25th 2006

Location: Südstadt

Occupation: (iter (B.Sc. Inf, 8)) \n (be-a-slave ("SRA", "Bachelor Thesis")) \n (be-a-programmer-slave ("Freelancer", "Programming"))

3

Thursday, November 2nd 2006, 1:06am

du brauchst dich doch an sich gar nicht mit den neuen Werten belasten ^,^
Es geht einfach nur um die Anzahl der Durchläufe (Stichwort "Counter" passt da schon gut), bis alle ecken 0 sind (du kannst auch nur eine davon überprüfen ;))
ich knabbere gerade an diffy-longest, hat da jemand nen ansatz, den er mit uns teilen mag?
Erwachsenwerden? Ich mach ja viel Scheiß mit, aber nicht jeden!

s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

4

Thursday, November 2nd 2006, 1:53am

...neben dem Startwert und dem counter einfach noch zwei variablen, z.B. longest und longest-value;
jedes mal wenn diffylength(x) größer ist als der größte bisherige wert, wird dieser dann beim nächsten aufruf der iteration als parameter verwendet, ansonsten einfach der aktuelle wert weitergereicht... longest könnte man eigentlich sogar weglassen, wenn man später nur wissen will, wie groß die längste ist, und nicht von welchem wert sie [als erstes] verursacht wurde :D
geht aber bestimmt auch noch irgendwie eleganter... :P ;)

und aufgabe 4 is dann nochmal genau das gleiche wie 3 ?( :rolleyes: =)

This post has been edited 1 times, last edit by "s-quadrat" (Nov 2nd 2006, 1:54am)


Warui

Turner, Serveradmin & Workaholic

  • "Warui" is male

Posts: 717

Date of registration: Apr 25th 2006

Location: Südstadt

Occupation: (iter (B.Sc. Inf, 8)) \n (be-a-slave ("SRA", "Bachelor Thesis")) \n (be-a-programmer-slave ("Freelancer", "Programming"))

5

Thursday, November 2nd 2006, 7:34am

... aber klingt doch schon mal gut :D
Und ich bezweifle gerade, ob es zumindest in Scheme und den Befehlen, die wir verwenden dürfen, eleganter geht ;)
Erwachsenwerden? Ich mach ja viel Scheiß mit, aber nicht jeden!

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

6

Thursday, November 2nd 2006, 5:17pm

Wieso, ist doch elegant?!
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

7

Thursday, November 2nd 2006, 9:01pm

naja, aber ich kleines dummes scriptkiddie finde so ne for-schleife (aus javascript, php,... Java,...) einfach schöner als sowas... :D :P
(auch wenns letztendlich bei der ausführung gar nich soo unterschiedlich ist ;) )

und die rückgabe der methode gleich in ne variable rein, um die nicht unnötig mehrfach ausführen zu müssen... :rolleyes:
(aber wir sollen ja in scheme bis jetzt nur ne vorgegebene auswahl an operatoren verwenden... :P )

ich finds so jedenfalls wesentlich schöner:

Source code

1
2
3
4
5
6
7
8
function diffy-longest(x){
	longest = 0;
	longestval = 0;
	for(i=0; i<x; i++){
		temp = diffy-length(x);
		if(temp > longestval){longest = x; longestval = temp;};
	};
};


:D :D :D

This post has been edited 1 times, last edit by "s-quadrat" (Nov 2nd 2006, 9:04pm)


Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

8

Thursday, November 2nd 2006, 9:43pm

Quoted

Original von s-quadrat
und die rückgabe der methode gleich in ne variable rein, um die nicht unnötig mehrfach ausführen zu müssen... :rolleyes:
(aber wir sollen ja in scheme bis jetzt nur ne vorgegebene auswahl an operatoren verwenden... :P )


Diesen :rolleyes:-Smilie gebe ich hiermit mal an dich zurück. Warum modifizierst du nicht deine Funktion einfach so, dass diffy-length nur einmal ausgeführt werden muss? Macht den Code 1. kürzer 2. übersichtlicher und 3. schneller. Und ein größerer Funktionsumfang als der gegebene ist dafür nicht nötig :rolleyes:
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

Tim Buktu

Praktikant

Posts: 5

Date of registration: Oct 30th 2006

9

Friday, November 3rd 2006, 12:48am

kann mir vllt mal jemand per icq helfen?

komm bei aufgabe 3 überhaupt nicht weiter und so langsam läuft mir die zeit davon..

will hier nicht bis 6 uhr morgens sitzen..aber ich glaube dann hätte ich immernoch keine lösung. :(

329 046 341

This post has been edited 2 times, last edit by "Tim Buktu" (Nov 3rd 2006, 12:49am)


s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

10

Friday, November 3rd 2006, 12:50am

hmm, joa, jetzt lässt sich die rückgabe der funktion plötzlich auch ganz brav als variable definieren... :D tz.. ^^
(hatte das schonmal so versucht, aber wollte irgendwie nicht... :rolleyes: (das klammerchaos hat gesiegt... :D ))

aber habt ihr das auch so, dass diffy-length ziemlich schnell gegen 7 konvergiert? ?(
hmm, seltsame folge... ;)

Tim Buktu

Praktikant

Posts: 5

Date of registration: Oct 30th 2006

11

Friday, November 3rd 2006, 12:53am

Quoted

Original von s-quadrat
hmm, joa, jetzt lässt sich die rückgabe der funktion plötzlich auch ganz brav als variable definieren... :D tz.. ^^
(hatte das schonmal so versucht, aber wollte irgendwie nicht... :rolleyes: (das klammerchaos hat gesiegt... :D ))

aber habt ihr das auch so, dass diffy-length ziemlich schnell gegen 7 konvergiert? ?(
hmm, seltsame folge... ;)


kannst du mir das mal genauer erklären?

s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

12

Friday, November 3rd 2006, 1:13am

ehm... naja, das bezog sich jetzt auch eigentlich nur auf den beitrag davor... ;)

Posts: 1

Date of registration: Oct 2nd 2006

13

Friday, November 3rd 2006, 2:14am

Habe leider auch ein oder mehrere Bretter vorm Kopf bezüglich Aufgabe 3. ?(

s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

14

Friday, November 3rd 2006, 7:41pm

hmm, stimmt eigentlich... auf das mit dem (max ...) wär ich jetz gar nicht gekommen... ^^ :D

obwohl, dann hat man aber auch wieder sowas ähnliches wie bei der rekursion, also dass erst hinterher alles nochmal durchgegangen werden muss... :(

also is on-the-fly-sortieren da schon effizienter ;)

This post has been edited 1 times, last edit by "s-quadrat" (Nov 3rd 2006, 7:48pm)


  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

15

Friday, November 3rd 2006, 8:02pm

Quoted

Original von s-quadrat
hmm, stimmt eigentlich... auf das mit dem (max ...) wär ich jetz gar nicht gekommen... ^^ :D

obwohl, dann hat man aber auch wieder sowas ähnliches wie bei der rekursion, also dass erst hinterher alles nochmal durchgegangen werden muss... :(


Hm, also ich hab auch mit (max) einen iteratve funktion geschrieben. Das is nix mit rekursion.

Quoted


also is on-the-fly-sortieren da schon effizienter ;)

Was willst du denn hier sortieren? ;)

s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

16

Friday, November 3rd 2006, 8:57pm

aber scheme muss doch alle werte speichern und hinterher nochmal durchgehen, um das größte (ja, ok - is ja nur eins, also nix mit 'sortieren' ;) ) von denen zu bestimmen;
oder is es tatsächlich so schlau, die ganzen werte gar nicht erst zu speichern, sondern nur den bisher größten...!? ?( :P

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

17

Saturday, November 4th 2006, 11:36am

Quoted

Original von s-quadrat
aber scheme muss doch alle werte speichern und hinterher nochmal durchgehen, um das größte (ja, ok - is ja nur eins, also nix mit 'sortieren' ;) ) von denen zu bestimmen;
oder is es tatsächlich so schlau, die ganzen werte gar nicht erst zu speichern, sondern nur den bisher größten...!? ?( :P


Du übergibst bei jedem Aufruf immer nur den bis zum aktuellen Zeitpunkt größten Wert. Warum sollten die anderen Werte gemerckt werden? (:
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...