Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Meinst du Sprachen, die nicht Turing-vollständig sind, oder solche bei denen man nicht weiß, ob sie es sind oder nicht?Für die echte Herausforderung lieber eine Sprache, deren Turing-Vollständigkeit noch nicht bewiesen ist ... gibts sowas überhaupt?
Ich weiß ja nicht, was andere Freaks noch so im Keller versteckt halten Ich glaube aber nicht, das ich so lange an einem BrainFuck-Programm(oder änlichem) sitzen würde, wenn ich nicht wüsste, dass es funktionieren kann...Ich sehe, hier gibts Leute die sich unbedingt selbst geißeln wollen...
Für die echte Herausforderung lieber eine Sprache, deren Turing-Vollständigkeit noch nicht bewiesen ist ... gibts sowas überhaupt?
Meinst du Sprachen, die nicht Turing-vollständig sind, oder solche bei denen man nicht weiß, ob sie es sind oder nicht?
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
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 .... 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
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
>.
]
# -*- 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()
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$
deshalb verwende ich sie ja auch nicht, nicht umsonst bin ich auch überzeugter Pinguin!objektorientierte GUI-Programmierung hast du mit der WindowsAPI doch auch nicht...