Nur mal so interessehalber, wer nimmt den an dem Wettbewerb teil?
Beiträge von James
-
-
Meinst du nicht eher (*.txt)?Stimmt, sorry.
-
Naja.......... Ersetz', mal ".txt" durch "(*.txt)", dann geht das auch.
-
-
chip Wenn das Bild in jede Richtung um 50% größer wird, hat es doch immernoch das gleiche Seitenverhältnis, oder etwa nicht?
-
Poste doch dein Skript am Besten gleich mit den AutoIt-Tags:
Spoiler anzeigen
Wer bietet weniger:
[autoit]MsgBox(0, 'Ergebnis', Execute( InputBox('Zahl 1', 'Bitte die erste Zahl eingeben:') & InputBox('Rechenzeichen', 'Bitte das Rechenzeichen eingeben:'&@CRLF&'+ - * / ^') & InputBox('Zahl 2', 'Bitte die zweite Zahl eingeben:')))
[/autoit] -
Wenn dann schon "[CLASS:IEFrame]".
-
-
Na dann auch von mir herzlich Willkommen im Forum!
-
[autoit]
$Breite = 400
[/autoit][autoit][/autoit][autoit]
$Hoehe = 400
$Links = (@DesktopWidth-$Breite)/2
$Oben = (@DesktopHeight-$Hoehe)/2WinMove('[CLASS:Notepad]', '', $Links, $Oben, $Breite, $Hoehe)
[/autoit]
Müsste funktionieren, davor dann eben noch das Run und das SplashTextOn.MfG, James
Edit: Xenobiologist war schneller.
-
Ich bin trotzdem der Meinung, man sollte den ganzen Wettbewerb (wenn's schon um Elektronik bzw. Kabel geht) auf Not und Or beschänken. Alles andere hat (wie ich finde) kaum etwas mit dem Thema zu tun, sorry.
Ich hab das gestern mal auf die schnelle geändert, siehe Post #1.
Ich finde es nach wie vor verwirrend, mit "Kabeln" zu arbeiten.
Dabei war der Hintergedanke eigentlich, dass es dadurch leichter verständlich wird, naja, wie schon gesagt, ich hab das Prinzip mal überarbeitet.
Wollte schon länger mal einen Simulator bauen mit dem man Schaltungen mit Wiederständen ect. bauen und simulieren kann.
Ich kanns kaum noch erwarten diesen Simulator hier im Forum zu sehen...
MfG, James
-
Ok, dann hast du mich falsch verstanden.
[autoit]
Ein AND-Gate habe ich schon, ich meinte ein If-Ersatz, bei dem du kein If mehr verwenden musst.
Sonst könnte ich das ja einfach so machen:If $Wire1 Then ...
[/autoit]PS: Ich bin der Meinung, dass du mit den momentan vorhandenen Funktionen (mal abgesehen von To und FromInteger) unmöglich dezimalen Input verarbeiten kannst. Außerdem würde das die Verwirrung bei allen noch erheblich steigern.
-
Schön dich auch mal wieder im Forum zu "sehen", Carsten.
Bei binärem Input hast du recht, aber für einen Rechner ist dezimaler Input vielleicht doch eher angebracht.
Des weiteren würde es mich interessieren, wie du If mit NOT-Gates realisieren würdest.MfG, James C.
-
James ich kenne mich mit Redstone super aus =D , aber die Funktionen von autoit versteh ich noch niccht so ganz =D
[autoit]
Um so besser:
Also, bei Redstone hast du ja deine Kabel, die du wo auch immer verlegst.
In meiner UDF erstellst du einfach ein Kabel mit$Kabel = _Wire_Create()
[/autoit](Da wir hier nicht graphisch arbeiten, musst du dir um Sachen wie Platz, Repeater und ähnliches keine Sorgen machen.
Wenn in Minecraft 2 (oder mehrere) Kabel nebeneinander liegen, sind sie automatisch verbunden. In diesem Fall brauchst du dafür _Wire_Attach. Z.B.:
[autoit]$Kabel1 = _Wire_Create()
[/autoit]
$Kabel2 = _Wire_Create()
_Wire_Power($Kabel2, 'On')
_Wire_Attach($Kabel1, $Kabel2, $Kabel)$Kabel hat dadurch Strom, weil $Kabel1 oder $Kabel2 Strom hatte.
Bei den meisten Gates wird nur das erste Kabel verändert, das zweite wird dann auf "Off" gesetzt. Falls du aber ein Kabel mehrmals verwenden willst/musst, spaltest du es vorher mit _Wire_Detach($Kabel1, $Kabel2) in $Kabel1 und $Kabel2 auf (welche dann beide den gleichen Wert haben).Bei Redstone ist eine Fackel ein NOT-Gate, in AutoIt machst du dafür einfach
[autoit]_Wire_NOT($Kabel1, $Ausgabe)
[/autoit]Jetzt brauchst du nur noch die anderen Gates, die machst du dann einfach so:
[autoit]Func _Wire_AND(ByRef $Input1, ByRef $Input2, ByRef $Output)
[/autoit]
; hier dann die Ganzen NOT-Gates und Verbindungen
EndFuncMfG, James
-
BugFix Ich versteh' dich immer noch nicht so ganz, nach Attach ist auf Kabel2 immer kein Strom, da es ja sozusagen nicht mehr existiert. Wenn du es trotzdem weiterverwenden willst, musst du davor eben Detach benutzen.
chip Ich habe auch nicht wirklich Ahnung von dem Ganzen, deshalb habe ich ja auch so viel Zeit gegeben.
Und da ja jeder abstimmen soll, ist das auch völlig unnötig... -
Auch von mir noch nachträglich alles Gute zum Geburtstag chip!
-
BugFix : Ich verstehe jetzt nicht so ganz was du meinst.
Also ja, der Sinn von Attach ist, zwei Kabel zu einem zusammenzuführen und ja, es ist ein OR-Gatter.
Aber wieso ist das jetzt nicht der Fall?
Die Werte lassen sich unabhängig ändern, aber auch nur, bis die zwei Kabel verbunden sind.Könntest du bitte nochmal erklären, was der Fehler in der Funktion ist?
MfG, James
-
Interessante Idee...
Kennst du Minecraft?
Dort bauen auch Freaks mit Redstone Taschenrechner, CPU's, Ram, ...
Ist im prinzip das gleiche.
Hast ein Kabel (Redstone), und "NOT"-Gates. Mehr nicht.
Dann kannst du dir garantiert auch denken, wodurch Carsten8 mich auf diese Idee gebracht hat.Aber ich selbst spiele kein Minecraft. -
Also du schlägst einen Taschenrechner vor aber es darf auch was anderes sein richtig?
Natürlich, ich hab' das nur erwähnt, falls jemandem spontan nichts sinnvolles einfällt.
Aber ich fänds jetzt unfair, wenn du bereits ein Programm geschrieben hättest hoffe fas hast du nicht (nur um die Schummelmöglichkeit auszuschliessen)?
Ich habe heute mal angefangen, bin aber noch sehr weit von einem funktionierenden Taschenrechner entfernt.
(Nur weil ich dieses Thema gewählt habe, heißt das ja nicht, dass ich Ahnung davon habe.)Ich persönlich bin bis jetzt mal so vorgegangen:
Als erstes braucht man natürlich außer dem NOT-Gate noch Andere (z.B. AND, XOR), die kann man sich aber relativ leicht durch logisches Denken basteln (ich habs ohne Internet geschafft, aber mit Google findet man sowas garantiert leichter heraus).
So, und weiter bin ich bis jetzt auch noch nicht gekommen...MfG, James
-
Carsten8 hat mich neulich daran erinnert, was man mit NOT- und OR-Gates alles bauen kann.
Deshalb habe ich diesen Wettbewerb gestartet, um zu sehen, was ihr aus diesen sehr begrenzten Möglichkeiten alles machen könnt.!!! Achtung! Ich habe alles hier nochmal überarbeitet, was aber zur Folge hat, dass die Funktionen leichter verständlich sind und der Code der anderen Gates (AND, XOR, ...) kürzer wird. !!!
Die Hauptänderung besteht darin, das die Funktionen nicht mehr die Inputs ändern, sondern eigene Outputs benutzen.Das Ziel
Ein funktionierendes, möglichst sinnvolles Skript (z.B. einen Rechner) zu schreiben.Die Regeln
[autoit]
Wie schon oben erwähnt, dreht sich bei diesem Wettbewerb alles um NOT- und OR-Gates.
Ihr habt jetzt zwei Möglichkeiten:
1) Ihr definiert eure Variablen und arbeitet dann nurnoch mit NOT und OR; z.B.:$A = True
[/autoit]
$B = False
$C = (Not ((Not $A) Or (Not $B)))
2) Ihr könnt natürlich auch folgende sinnlose UDF benutzen, die aber im Grunde genau das Gleiche macht:Wire.au3
[autoit]#include-once
[/autoit] [autoit][/autoit] [autoit]Func _Wire_Create()
[/autoit] [autoit][/autoit] [autoit]
Return False
EndFuncFunc _Wire_Power(ByRef $Wire, $Power='On')
[/autoit] [autoit][/autoit] [autoit]
Switch $Power
Case 'On', 1
$Wire = True
Case 'Off', 0
$Wire = False
Case Else
SetError(1)
$Wire = False
EndSwitch
EndFunc
Func _Wire_Value(ByRef $Wire)
Return Int($Wire)
EndFuncFunc _Wire_NOT(ByRef $Input, ByRef $Output)
[/autoit] [autoit][/autoit] [autoit]
$Output = (Not $Input)
EndFuncFunc _Wire_Connect(ByRef $Input1, ByRef $Input2, ByRef $Output)
[/autoit] [autoit][/autoit] [autoit]
$Output = ($Input1 Or $Input2)
EndFuncFunc _Wire_FromInteger($Integer, ByRef $Wires, $Length = 32)
[/autoit]
$Integer = Int(Abs($Integer))
Local $Binary, $i
Do
$Binary = Mod($Integer, 2) & $Binary
$Integer = Int($Integer / 2)
Until $Integer = 0
For $i = StringLen($Binary)+1 To $Length Step 1
$Binary = '0' & $Binary
Next
$Binary = StringRight($Binary, $Length)
$Binary = StringSplit($Binary, '', 2)
Dim $Wires[$Length]
For $i = 1 To $Length Step 1
$Wires[$i-1] = ($Binary[$Length-$i]==1)
Next
EndFunc
Func _Wire_ToInteger($Wires)
If (Not IsArray($Wires)) Then
$Wires = StringSplit($Wires, '|', 2)
EndIf
Local $Binary = '', $Integer = 0, $i
For $i = 0 To UBound($Wires)-1 Step 1
$Binary = Int($Wires[$i]) & $Binary
Next
$Binary = StringSplit($Binary, '')
For $i = 1 To $Binary[0] Step 1
$Integer += $Binary[$i] * 2^($Binary[0]-$i)
Next
Return $Integer
EndFunc
Des weiteren könnt ihr auch InputBox, MsgBox, ConsoleWrite und GUIs für Ein- und Ausgaben benutzen. Außerdem dürft ihr Funktionen definieren, um eueren Code kürzer und übersichtlicher zu machen.Das Hauptproblem bestand gestern darin, dass ich die Funktionen _Wire_FromInteger und _Wire_ToInteger hinzugefügt habe, damit das Ganze um einiges einfacher wird. Aber wie Carsten schon sagte, hat das nichts mehr mit dem eigentlichen Thema zu tun.
Deshalb würde ich sagen: Wer diese Funktionen verwenden will, kann dies gerne tun, und wer die Daten selbst unter Berücksichtigung der Regeln umwandeln will, um so besser.Der Wettbewerb endet vorerst am 31. Dezember 2012.
Dann postet einfach jeder seinen Code und sagt, welches Skript er am besten findet. Der mit den meisten Stimmen gewinnt dann.
(Denkt bei eurer Bewertung bitte daran, dass es schwieriger ist, die Daten umzuwandeln ohne die zwei oben beschriebenen Funktionen zu benutzen.MfG, James C.
PS: Im Anhang mal ein Bild meiner momentanen Ausgabe der einzelnen Bits, nur falls jemand (wie ich gestern) denkt, das sei nicht möglich...