tutorials.de Buch-Aktion 02/2012
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Like Tree7Danke
ERLEDIGT
NEIN
ANTWORTEN
42
ZUGRIFFE
8657
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #16
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    Aber ich hoffe, dass sich das mit der Zeit ändert. Leider wird man damit aber dann mehr Zeichen benötigen, und 8 fand ich für eine Programmiersprache sehr passend.

    Ciao
    DosCoder
     
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  2. #17
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    Zitat Zitat von DosCoder Beitrag anzeigen
    Aber ich hoffe, dass sich das mit der Zeit ändert. Leider wird man damit aber dann mehr Zeichen benötigen, und 8 fand ich für eine Programmiersprache sehr passend.

    Ciao
    DosCoder
    Das ist auch garnicht wahr. Man könnte eine Art SysCall implementieren.
    zB können wir "Datei öffnen" so implementieren:
    1. Schreibe den Dateinamen, nullterminiert, in die Speicherzellen 2 bis n
    2. Schreibe eine '1' für "open" in die Speicherzelle 1
    3. Erhöhe den Wert in Speicherzelle 0 um 1
    4. Lese das Dateihandle aus Speicherzelle 1

    Der Interpreter achtet dann auf veränderungen der Speicherzelle 0. Wenn dort ein "+" ausgeführt wird, führe den Befehl in Speicherzelle 1 + die korrekte Anzahl an Argumenten aus, schreibe das Ergebnis nach Speicherzelle 1und setzte Speicherzelle 0 wieder auf 0, um bereit für den nächsten SysCall zu sein.

    So könnte man Dateizugriffe, Graphische Oberflächen, Netzwerkfähigkeit und ähnliches in Brainfuck implementieren, ohne wirklich was an der Sprache zu ändern.

    Hmm, ob ich Zeit finde *interessiert guck*
     

  3. #18
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    ... ohne wirklich was an der Sprache zu ändern...
    Außer sie noch unübersichtlicher zu machen. Grafische Oberflächen mit deiner Technik, ohne Objektorientierung! Oder willst du die auch noch irgendwie rein implementieren. Ich wünsch' dir viel Spaß, bitte benachrichtige mich, wenn du fertig bist .

    Ciao
    DosCoder
     
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  4. #19
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    Zitat Zitat von DosCoder Beitrag anzeigen
    Außer sie noch unübersichtlicher zu machen. Grafische Oberflächen mit deiner Technik, ohne Objektorientierung! Oder willst du die auch noch irgendwie rein implementieren. Ich wünsch' dir viel Spaß, bitte benachrichtige mich, wenn du fertig bist .

    Ciao
    DosCoder

    Naja komm, objektorientierte GUI-Programmierung hast du mit der WindowsAPI doch auch nicht.

    proof-of-concept: ein simples Brainfuck Programm, was eine Zeile mit einem Dateinamen von der Standardeingabe einließt, dann diese Dtaei öffnet und bis zum EOF (bzw zum ersten 0 byte) ließt

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    goto mem 2
    >>
     
    read line (the filename)
    ,----------[++++++++++>,----------]
     
    goto mem 1
    <[<]
     
    call syscall 1 (open)
    +<+
     
    goto 2 and set mem 2 to 0
    >>[-]
     
    move mem(1) to mem(2)
    <[->+<]
     
    put 1 to mem(1)
    +
     
    do while mem(1) != 0
    [
      set mem(1) = 0
      [-]
      
      call syscall 2 (read)
      ++<+
     
      print the result
      >.
    ]

    Und er zugehörige, grob zusammen geschusterte Interpreter:
    Code python:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    
    # -*- encoding: utf8 -*-
     
    import re, sys
     
    class Brainfuck( object ):
        def __init__( self ):
            self.code = []
        
        
        def parse( self, source ):
            self.code = []
            stack = []
            
            source = list( re.sub( r'[^+-.,<>\[\]]', "", source ) )
            for char in source:
                if char in "+-":
                    self.code.append( ('add', {'+': 1, '-': -1}[char] ) )
                
                if char in '<>':
                    self.code.append( ('move', {'>': 1, '<': -1}[char] ) )
                
                if char == '[':
                    stack.append( len( self.code ) )
                    self.code.append( [ 'push', None ] )
                
                if char == ']':
                    last = stack.pop()
                    self.code[last][1] = len( self.code ) - last
                    self.code.append( ( 'pop', len( self.code ) - last ) )
                
                if char == '.':
                    self.code.append( ('io_put', None) )
                
                if char == ',':
                    self.code.append( ('io_get', None) )
            
            # print self.code
                
        
        def run( self ):
            code = self.code
            ip = 0
            length = len( code )
            stack = []
            mem = [0] * 30000
            mp = 0
            files = {}
            
            while ip < length:
                op, arg = code[ip]
                #print op, arg, mp
                if op == 'add':
                    if mp == 0:
                        syscall = mem[1]
                        if syscall == 1:
                            fname = "".join( map( __builtins__.chr, mem[2: mem.index( 0, 2 ) ] ) )
                            fp = max( [0] + files.keys() ) + 1
                            files[ fp ] = open( fname, "rb" )
                            mem[1] = fp
                        
                        if syscall == 2:
                            fp = files[ mem[2] ]
                            ch = fp.read(1)
                            mem[1] = ord(ch) if ch else 0
                        
                    else:
                        mem[mp] = (mem[mp] + arg) % 255
                    
                elif op == 'move':
                    mp = (mp + arg) % 30000
                
                elif op == 'push':
                    if mem[mp] == 0:
                        ip += arg
                
                elif op == 'pop':
                    if mem[mp] != 0:
                        ip -= arg
                        
                elif op == 'io_put':
                    sys.stdout.write( __builtins__.chr(mem[mp]) )
                
                elif op == 'io_get':
                    chr = sys.stdin.read(1)
                    mem[mp] = ord( chr ) if chr else 0
                
                ip += 1
            
            # print mem[0:20]
     
     
    if __name__ == '__main__':
        source = "".join( open( sys.argv[1] ).readlines() )
        
        bf = Brainfuck()
        bf.parse( source )
        bf.run()

    Code :
    1
    2
    3
    4
    5
    
    olli@desktop:/tmp$ echo 'hallo tutorials.de!' > input.txt
    olli@desktop:/tmp$ python brainfuck.py open.bf
    input.txt
    hallo tutorials.de!
    olli@desktop:/tmp$
    Geändert von OnlyFoo (05.11.09 um 10:42 Uhr)
     

  5. #20
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    Hi,
    hast du eigentlich sonst nichts zu tun?
    Und zum Thema Objektorientierung:
    objektorientierte GUI-Programmierung hast du mit der WindowsAPI doch auch nicht...
    deshalb verwende ich sie ja auch nicht, nicht umsonst bin ich auch überzeugter Pinguin!

    Zurück zu BrainFuck:
    Wende dich doch mal an Urban Müller, vielleicht kauft der dir deinen Interpreter ab. Da der ja mit Python geschrieben ist, hat man dadurch auch endlich Plattformunabhängigkeit. Ist also noch eine Verbesserung.

    Ciao
    DosCoder
     
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  6. #21
    OnlyFoo OnlyFoo ist offline Mitglied Brokat
    Registriert seit
    Feb 2005
    Beiträge
    470
    Zitat Zitat von DosCoder Beitrag anzeigen
    Zurück zu BrainFuck:
    Wende dich doch mal an Urban Müller, vielleicht kauft der dir deinen Interpreter ab. Da der ja mit Python geschrieben ist, hat man dadurch auch endlich Plattformunabhängigkeit. Ist also noch eine Verbesserung.

    Ciao
    DosCoder
    Plattform unabhängigkeit ist doch nix neues? Wenn du mal Google fragst findest du sicher genug Interpreter in Java, Perl, Python, php + ko... Sogar hier im Archiv sind welche...

    Und nein, ich hab sonnst nichts zu tun gehabt. Ich muss allerdings gleich zur Uni... Bin fauler Student.
     

  7. #22
    Avatar von DosCoder
    DosCoder DosCoder ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Ort
    Kreis Würzburg(Bayern)
    Beiträge
    228
    Hi,
    mit der Interpetergeschichte von Brainfuck habe ich mich noch nicht beschäftigt, ich habe nämlich noch andere Sachen zu tun...
    Auf jeden Fall viel Spaß bei der Uni, ich habe zur Zeit gerade Ferien, xD.
    Ciao
    DosCoder
     
    Man kann mich für das verantwortlich machen, was ich hier schreibe, nicht für das, was andere verstehen.

    Sollte ich mal Mist labern weist mich bitte darauf hin.

    Ich freue mich über ein Danke, wenn ich helfen konnte!

  8. #23
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.774
    Blog-Einträge
    5
    Hallo zusammen,

    wie sieht es denn aus bei euch? Will noch jemand mitmachen, hatte aber noch nicht genügend Zeit? Dann könnten wir die Abgabefrist noch etwas nach hinten verschieben.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  9. #24
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.774
    Blog-Einträge
    5
    Hallo nochmal,

    es hat sich zwar niemand hier im Thema gemeldet, aber wir haben uns trotzdem mal dazu entschlossen, die Bearbeitungsphase zu verlängern. Der neue Abgabetermin ist jetzt Samstag, der 14. November 2009, irgendwann in den Abendstunden. Viel Spaß noch bei dieser Runde

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  10. #25
    Avatar von Chumper
    Chumper Chumper ist offline Eichhörnchen
    Registriert seit
    Mar 2006
    Ort
    Vancouver
    Beiträge
    440
    Oktober passt nicht ganz, ich vermute du meinst November.
    Leider habe ich aus Zeitmangel nicht die Ressourcen, um eine Lösung einzureichen.
     
    mfg Nils

    Problem gelöst?
    Dann bitte das Thema als erledigt anhaken
    und die Antwort bewerten, die weitergeholfen hat.


    Danke!

  11. #26
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.774
    Blog-Einträge
    5
    Trotz verlängerter Bearbeitungszeit nur 3 Abgaben von 2 Teilnehmern – schade! War euch das Thema zu schwierig, zu uninteressant, oder woran lag es?

    Grüße,
    Matthais
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  12. #27
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.724
    Blog-Einträge
    29
    Hallo,

    ich fande die Aufgabe sehr witzig und intessant...
    ich hatte auch mit einer Java / Python Variante begonnen, jedoch bin ich beim zusammenmixen der wav-Samples hängen geblieben und hatte dann auch keine Zeit mehr... mich weiter mit dem wav-Format zu beschäftigen.

    Ein paar Hinweise wie man die wav Samples kombinieren kann hätte vielleicht mehr Leute zur Abgabe einer Lösung motiviert.

    Im Prinzip konnte man sich das aus den WIKI Artikeln herleiten jedoch blieb da halt das schnelle Erfolgserlebnis aus und dann vergeht einem schon mal die Lust am Ganzen...

    Hätte mich damit auch vorher melden können...

    Für das nächste mal sollte man vielleicht ein paar mehr Hilfen (Spoiler) einstreuen. Bei den vorhergehenden Contests waren die Hilfestellungen meistens sehr brauchbar.

    Ein Ziel des Coding Quiz sollte es ja auch sein neben interessanten Fragestellungen auch mal über den Tellerrand zu schauen und unterschiedliche Technologien / Programmiersprachen auszuprobieren.

    Damit das gut klappt müsste man die Einstiegshürden etwas niedriger anlegen. Damit hier die Cracks nicht abgeschreckt werden sollte natürlich noch irgendwo etwas kniffeliges eingebaut werden so das die auch ihren Spaß haben - nur eben nicht in der Basisversion der Aufgabe.

    Freue mich auf die nächsten Coding Contests

    Btw. vielleicht sollten wir auch mal sowas wie Lernprogramme machen:
    Sprich als Aufgabe eine kleine Lernsoftware für einen bestimmten Bereich programmieren... Mathematik , Physik, Chemie?
    Muss nichts großes sein vielleicht auch einfach mal ein kleines Mashup

    Mit Lernprogrammen hätten nicht nur die Leute was davon, die die Software bauen (Wir), sondern auch die, die sie dann benutzen (Lehrer / Schüler)

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  13. #28
    Avatar von Chumper
    Chumper Chumper ist offline Eichhörnchen
    Registriert seit
    Mar 2006
    Ort
    Vancouver
    Beiträge
    440
    Thomas hat Recht, das Niveu war hier um einiges höher, was durchaus dazu geführt haben könnte, dass einige abgeschreckt waren.

    Ich hätte gerne mitgemacht, habe im Moment aber nicht die Zeit mich länger mit einem Thema auseinander zu setzen, weshalb ich auch keine Lösung einreichen konnte.

    Die Aufgabe an sich finde ich sehr interessant, da kann man vieles draus machen.
    Und ich habe tiefen Respekt davor, dass du dir immer die Mühe machst diese Aufgaben vorzubereiten.
    Und auch wenn ich keine Lösung einreichen kann, mache ich mir doch immer drei Tage intensiv Gedanken darüber, auf welchem Wege man die Aufgabe lösen kann.
     
    mfg Nils

    Problem gelöst?
    Dann bitte das Thema als erledigt anhaken
    und die Antwort bewerten, die weitergeholfen hat.


    Danke!

  14. #29
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.960
    Bei mir lags in den letzten 2 Wochen an mangelnder Zeit. Ich schiebs mal auf die Jahreszeit. Ich steh immer so spät auf, dass ich dann so lange arbeiten muss, dass ich danach mich denn auch nicht mehr unbedingt mit programmieren beschäftigen möchte

    Übernächste Woche hab ich Urlaub. Ich denke dann werde ich die Aufgabe nachträglich nochmal lösen.
     

  15. #30
    enne enne ist offline Mitglied Bronze
    Registriert seit
    Apr 2004
    Beiträge
    36
    Ich fand die Aufgabe sehr interessant.
    Leider überstieg sie meine Kenntnisse. :-/
    Ich wollte das ganze in Java lösen nur kam ich nicht sehr weit... deshalb wäre ich sehr froh wenn jemand ne Java-Lösung anbieten könnte damit ich mal sehen kann wie jemand anders das gelöst hat/hätte...
     

Thema nicht erledigt
Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Quiz?
    Von MeisterLampion im Forum Office-Anwendungen
    Antworten: 12
    Letzter Beitrag: 03.11.06, 15:48
  2. Quiz: Was bin ich?
    Von MrTwister im Forum Werkstatt
    Antworten: 3
    Letzter Beitrag: 05.04.06, 19:14
  3. Quiz
    Von JannyR im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.05.05, 15:58
  4. Quiz
    Von alkaline im Forum PHP
    Antworten: 0
    Letzter Beitrag: 27.09.04, 10:16
  5. php Quiz
    Von Sim im Forum PHP
    Antworten: 0
    Letzter Beitrag: 09.05.04, 12:43