Beiträge von Spockman

    Zitat von NonSense

    Kann mir jemand helfen einen 3-stelligen Prädikat loesche/3 zu schreiben, der ein Element aus einer Liste löscht?
    Es sollte so funktionieren:
    loesche(b,[a,b,c,d],X).
    X=[a,c,d]
    thx

    Imperativ 2. Pers. von "loeschen" ist "loesch", nicht "loesche". Verwende das built-in Praedikat delete/3:

    Code
    loesch(Elem, List0, List) :-
            delete(List0, Elem, List).

    Ad "stack overflow": Die gaengige Methode hier ist, den Call-Stack zu reifizieren; will meinen, anstatt den Stack implizit durch Prozeduraufruf aufzubauen, baust Du Dir einen eigenen Stack (als Datenstruktur innerhalb des Programms), der die fuer Dich wesentlichen Daten enthaelt (z.B. die besuchten oder noch zu besuchenden Knoten etc.). Statt N stack frames brauchst Du dann womoeglich nur N Worte an Speicher beim Traversieren.

    Zitat von huzi

    Dankeschön für die Antworten...Jetzt blick ich da ein Bisserl durch...

    Vieles was hier gepostet wurde ist falsch. Bezueglich Initialisierung muss In C++ zwischen lokalen, dynamischen und nicht-lokalen Variablen bzw. Objekten unterschieden werden; NULL stammt aus C-Tagen, in C++ fuehrt 0 zu weniger Problemen. Default-Initializer in C++ ist 0 (des entsprechenden Typs) usw.

    Zitat von JohnFoo

    Na ich frag' mich wie blöd jemand sein - bzw. wie verzerrt deine Realität ist. Ist ja mühsam mit dir. Werde nicht meine Zeit verschwenden dir offensichtliches zu erklären wenn du deine "ich liebe Lisp"-Scheuklappen so gern hast. Willst wohl lieber den dummen spielen um deinen Favoriten zu ehren. Schau' mal in die Stellenanzeigen, und zähl nach, wie oft imperative und wie oft deklarative gefragt sind - aber bitte erschreck' dich nicht.

    Lenk den Thread nicht auf mich ab. Es geht darum, legitime Fragen des OPs sachgemaesz und richtig zu beantworten. Persoenliche Beleidigungen sind kein Ersatz dafuer, und was ich liebe hat damit nichts zu tun. Auf welche Stellenanzeigen berufst Du Dich? Zeitung?

    Zitat von JohnFoo

    ich hab' die Verbreitung angesprochen ..

    Wo? Du hast bis jetzt folgendes angesprochen:

    • "Java am häufigsten auf der Uni verwendet" - ein voellig verzerrtes Bild
    • "nie eine real-life-Anwendung" - siehe Gegenbeispiele
    • "Lisp irgendwo weit hinten" - wo? Welche "Zahlen" meinst Du? Deine Nachhilfe-Kunden? Alter der Sprache?
    • "wie gefragt die Sprache ist" - von wem? bezueglich Nachhilfe?
    • "kaum über wenige Prozent" - wo? wie hast Du es gemessen?

    Und jetzt die "Verbreitung" - wo, und wie hast Du sie gemessen? Bis jetzt hast Du die Fragen des OPs irrefuehrend und teilweise falsch beantwortet. Deine Sig (Werbung fuer Java-Nachhilfe) legt bereits Zweifel an der Ausgewogenheit Deiner Meinung zum Thema nahe - sorg nicht dafuer, dass sie berechtigt sind.

    Zitat von JohnFoo

    Aber wenn man rein nach Zahlen geht müsst ich Lisp irgendwo weit hinten suchen nach Java, C/C++, PHP, C# und VB (und was da so gibt ..).


    Ich nehme an Du meinst mit "Zahlen" die Zeilen an notwendigem Source-Code - Du hast recht, Lisp-Loesungen sind meistens viel kuerzer.

    Zitat von JohnFoo

    Das schöne ist, dass bei deklarativen Programmiersprachen immer nette Codefetzen präsentiert werden aber nie eine real-life-Anwendung.

    Das ist voellig falsch. Emacs, MLDonkey, Darcs, Macsyma etc. sind (groszteils) in funktionalen Sprachen geschrieben und real-life Anwendungen. Du findest ohne Zweifel zahllose weitere wenn Du Dich umsiehst. Von weit verbreiteter closed-source Software (falls Du das mit "real-life" meinst) weisz man es meist gar nicht - so zum Beispiel ist angeblich der Kern von Microsoft Word in einer funktionalen/logikorientierten Sprache geschrieben, sowie Teile der Systemkonfiguration in Prolog. Kein Wunder - eine Firma wie Google, die durch die Verwendung von Hochsprachen einen Vorteil gegenueber der Konkurrenz hat, haengt das meist nicht an die grosze Glocke.

    Zitat von JohnFoo

    Aber man könnte ja vorschlagen, Lisp zu lernen .. damit findet man sicher später ne Arbeit.

    Dem kann ich nur zustimmen. Das gilt insbesondere fuer Medieninformatiker, denn fuer Spiele (z.B. Crash Bandicoot) und komplexe Graphik-Anwendungen (z.B. AutoCAD) ist Lisp hervorragend geeignet, und in Zukunft werden sehr schnelle funktionale und logikorientierte Sprachen wie Mercury sicher noch mehr eingesetzt werden als es bislang ohnehin der Fall ist (vor allem aufgrund des bereits sichtbaren Trends zu Multi-Cores und der wesentlich leichteren Parallelisierbarkeit von Seiteneffekt-freien Sprachen).

    Siehe auch z.B. http://en.wikipedia.org/wiki/AI_winter

    Zitat

    It has been suggested that functional languages have enjoyed a renaissance in the past few years, and that an "AI spring" may have already occurred. In particular, the online search company Google is rumoured to hire any lisp programmers they can find, as well as python.

    Zitat von Lillipip


    Naja, ich glaube nicht, dass ich ohne Programmierkenntnisse auskomme und irgendwo muss ich doch beginnen...


    Das ist klar. Java ist halt ziemlich low-level und fuer die Implementierung der meisten Algorithmen aus z.B. AlgoDat sehr schwerfaellig und letztlich ungeeignet. Ich empfehle das Buch Core Java 2 Volume 1, von Horstmann und Cornell.

    Zitat von Lillipip


    Hab jetzt AlgoDat usw...

    Was hat das mit Java zu tun? Verlangen sie jetzt Java-Kenntnisse in AlgoDat? Bei mir war Java nur in einer LVA zwingend erforderlich, naemlich EPROG.

    Zitat von Lillipip


    Reicht es, wenn ich Java lerne....

    Wofuer soll es reichen? Nur die wenigsten LVAs auf der TU verlangen Java-Kenntnisse, falls Du das meinst.

    EDIT: Ahja, DSLAB faehrt auch mit Java!

    Zitat von Swoncen


    Ist jetzt schlecht erklärt, ich erklär wofür ichs brauch. Wir wollen ein Wuzzlturnier machen und es ist nicht klar wieviele Teilnehmer mitspielen. Klar ist jedenfalls, dass wir immer 2 gegen 2 spielen. Es sollten alle Kombinationen gespielt werden. Mir fällt grad nicht ein, wie ich das programmiern soll. Bitte um schnelle Hilfe.


    Hier in Prolog:


    Getestet mit SWI-Prolog. Beispiel-Query:

    Code
    ?- wuzzel([a,b,c,d], P).
    
    
    P = [a+b gegen c+d, a+c gegen b+d, a+d gegen b+c] ;
    Zitat von Shine

    nur mal so ne frage, aber so ein sudoku lösen, dafür müsste sich ja prolog schon geradezu anbieten, da müsste man dann nur mehr die regeln in prolog-sprache packen, könnte eine schnelle (schnell geschriebene) lösung sein, mfg Shine


    http://groups.google.com/group/comp.lan…153e521d069e019

    Nicht nur schneller geschrieben, sondern mit hoher Wahrscheinlichkeit auch effizienter als eine selbst-gebastelte Version in C++ oder Java. Laeuft mit SWI-Prolog.