dual layered A.I puzzles

  • 10 Replies
  • 3549 Views
*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
dual layered A.I puzzles
« on: October 05, 2016, 07:42:24 pm »
basically what this puzzles are about is
find out the algorithm that generates the puzzle's solution algorithm.
or in other words automatic programming.

therefore the third layer puzzle is the strongest auto programming
algorithm generated by the fusion of the 2nd layered A.I puzzles.
or the puzzle megazord.

dual layered A.I puzzle #1
an algorithm that gets :
an array of elevators : current floor, destination floor
and a person's floor and direction (up or down)
min and max floors of the building
output : the elevator designated (would get fastest) to the waiting person.

*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #1 on: October 08, 2016, 04:42:10 pm »
lets write down the whole process to see how my brain works
HAAAAAAAAAAAAAAAAAAAAAAAAA
battle programming...BURST MODE

APAI puzzle #1 phase 1 :


for I =1 to lastelevator
_if me = up and elevatorfloor <= myfloor and elevatorIgoesup
__get distance
__if distance < minDistance minDistance = distance
__elevatormark = I

'copy paste mutate :
_elseif me = down and elevatorfloor >= myfloor and elevatorgoesdown
__get distance
__if distance < minDistance minDistance = distance
__elevatormark = I
'copy paste mutate :
_elseif elevatorIidle
__get distance
__if distance < minDistance minDistance = distance
__elevatormark = I

elevator.addstop(elevatormark,myfloor)

next mutate above line to :
if elevatormark<>-1
_elevator.addstop(elevatormark,myfloor)

and elevatormark = -1 before the for loop 8)




*

kei10

  • It's a honor to meet everyone!
  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 430
  • Just kidding.
Re: dual layered A.I puzzles
« Reply #2 on: October 09, 2016, 05:54:35 am »
There are two three kinds of people; One is like you, replying with simplified answers. Another is someone like me, going fully insane for fun -- I don't want to mention the last. LOL

In programming, there are five or more types of programming process.
Quote
  • Translate
  • Relocate
  • Insert
  • Modify
  • Remove
Six or more important programming design to look out for.

Quote
  • Comparison
  • Compability
  • Efficiency
  • Productivity
  • Performance
  • Structure
To even start with auto-programming, the system must understand what it is trying to achieve. To do that, there are three or more ways -- one is through visualization, second is through natural language, third is through pseudo-logic, and so on.

But the biggest problem is that, the system is required to know how to even program anything. It needs to understand programming language.



We have the following objects:
Quote
  • Floors
    • Lobby Button Panel
      • Up Call-Button
      • Down Call-Button
    • Elevator
      • Elevator Door
      • Elevator Button Panel
        • Elevator Floor Buttons
        • Elevator Door-Open-Button
        • Elevator Door-Close-Button
Before the system were to delve into programming the Elevator, the system is required to understand the basics of an Elevator mechanism, given some time and thought, let's say this is what the system deduced:

Quote
  • Elevator
    • A platform or compartment housed in a shaft for raising and lowering people or things to different floors or levels.
    • The Elevator has three States; Ascend, Descend, and Idle.
      • The Elevator State will change into Idle from its moving state once it has reached its destination, and changing its Elevator State from Closed-Idle into Opening State.
  • Lobby Up and Down Call-Buttons
    • The Lobby Up Call-Button stops only a rising elevator, this is for efficiency.
    • The Down Call-Button stops only a descending elevator.
  • Elevator Floor Buttons
    • Queues floor presses to move the elevator to that floor, once the elevator has reached its destination, that floor will be dequeued, freeing the button to be pressed again.
    • If there are no Queue, the Elevator will move, and retains at Idle State with its Elevator Door as Closed-Idling state.
  • Elevator Door
    • The Elevator has a safety mechanism to ensure no one gets crushed when closing, anyone can probe the door open and it will change its Closing-state into Opening-State.
    • The Elevator's door has four states; Opening, Closing, Opened-Idling, and Closed-Idling.
      • Let's start at Opening State.
      • The door can detect once the door has been fully opened, it will change its state into Open-Idling State, additionally resetting the countdown timer for automatically closing the door, the timer will start.
      • Once the timer ends, or the Door-Close button has been pressed, the door state will change into Closing State.
        • In this state, probing the door open or pressing the Open-Door Button will change its state to Opening-State.
      • As the door fully closed, it will reset and initiate a second countdown. Once the countdown ends, Elevator State will change from Idle State to either one of the Ascend state or Descend state, depending on which destination floor relative to the location floor of the elevator.
        • The door can still be reopened by either probing between the elevator door or pressing the Open-Door Button before the countdown timer ends.
    • The Elevator Door presumably has two timers
      • One is to automatically closing the Elevator Door.
      • Another is a short pause before initiating Elevator movement after the door has been closed.
  • Elevator Door-Close and Door-Open buttons
    • The Elevator Door-Close Button forces Elevator Door into Closing State, regardless of probing the door.
    • The Elevator Door-Open Button only forces the Closed-State of elevator into Opening State.
  • Elevator Weight
    • If the Elevator Weight exceeds a certain threshold, the Elevator Door will always be stuck at Open-Idling state, rendering the Elevator unusable.
  • Elevator Floor Detection
    • The Floor where the Elevator Car is can be detected by sensors between the Elevator Car and the Shaft.
Now we have all information we need (Not really, I've left out a few things). To begin auto programming, one would need to start from somewhere. One would, perhaps, begin by preparing the fields and properties. The preparation isn't easy, it will have to go through its logic over and over until it is found completed, which requires to insert, modify, and/or remove the codes.

All of these are done in Notepad++, language used as presentation: C#

Code
    ///<summary>Elevator Direction.</summary>
    public enum ElevatorDirection : byte
    {
        Null
        , Ascend
        , Descend
    }
   
    ///<summary>Elevator State.</summary>
    public enum ElevatorState : byte
    {
        Idle
        , Move
        , Align
    }
   
    ///<summary>Elevator Door State.</summary>
    public enum ElevatorDoorState : byte
    {
        Opening
        , Closing
        , OpenedIdle
        , ClosedIdle
    }
   
    ///<summary>IElevator Interface.</summary>
    public interface IElevator
    {
        //interface declaration
    }

    ///<summary>Elevator.</summary>
    public partial sealed class Elevator : ElevatorSystem, IElevator
    {
        private static Elevator instance; ///<summary>Array of FloorLobby Instances.</summary>
        public static Elevator Instance { get { return floors; } }
       
        private FloorLobby[] floors; ///<summary>FloorLobby Instances.</summary>
        public FloorLobby[] Floors { get { return floors; } }
       
        private float currentIndex; ///<summary>Current Index of where the Elevator Car is.</summary>
        public float CurrentIndex { get { return currentFloor; } }
       
        private ElevatorDirection elevatorDirection; ///<summary>Elevator Direction of travel.</summary>
        public ElevatorDirection ElevatorDirection { get { return elevatorDirection; } }
       
        private FloorLobby floorDestination; ///<summary>Floor Lobby Destination.</summary>
        public FloorLobby FloorDestination { get { return floorDestination; } }
       
        private FloorLobby floorDestination2; ///<summary>Floor Lobby Destination 2.</summary>
        public FloorLobby FloorDestination2 { get { return floorDestination2; } }
       
        private Dictionary<ElevatorFloorButton> floorButtons; ///<summary>ElevatorFloorbutton Instances.</summary>
        public Dictionary<ElevatorFloorButto> FloorButtons { get { return floorButtons; } }
       
        private Timer moveTimer; ///<summary>Maximum Countdown Time Interval in miliseconds for moving the Elevator.</summary>
        public Timer MoveTimer { get { return cancelButtonTimer; } }
       
        private Timer doorCloseTimer; ///<summary>Maximum Countdown Time Interval in miliseconds for moving the Elevator.</summary>
        public Timer CloseDoorTimer { get { return doorCloseTimer; } }
       
        private ElevatorState elevatorState; ///<summary>Elevator State.</summary>
        public ElevatorState ElevatorState { set { elevatorState = value; } get { return elevatorState; } }
       
        private ElevatorDoorState doorState; ///<summary>Elevator Door State.</summary>
        public ElevatorDoorState DoorState { set { doorState = value; } get { return doorState; } }
       
        private OrderedDictionary<FloorLobby> floorQueue; ///<summary>Elevator Floor Queue.</summary>
        public OrderedDictionary<FloorLobby> FloorQueue { get { return floorQueue; } }
       
        ///<summary>Initializer.</summary>
        public void Initialize(ElevatorSystem elevatorSystem, int floorMax, long moveTimer, long doorCloseTimer, long cancelTimer, ElevatorState elevatorState, ElevatorDoorState doorState)
        {
            this.elevatorSystem = elevatorSystem;
           
            this.moveTimer = new Timer(moveTimer);
            this.doorCloseTimer = new Timer(doorCloseTimer);
           
            this.elevatorState = elevatorState;
            this.doorState = doorState;
           
            this.floorQueue = new OrderedDictionary<FloorLobby>();
            this.floorButtons = new Dictionary<ElevatorFloorButton>();
           
            this.floors = new FloorLobby[floorMax];
           
            for (int i = 0; i < floorMax; i++)
            {
                this.floors[i] = new FloorLobby(this, i);
                this.floorButtons.Add(new ElevatorFloorButton(this, cancelTimer));
            }
           
            MoveTimer.Tick += new EventHandler(MoveTimerTick);
            CloseDoorTimer.Tick += new EventHandler(CloseDoorTimerTick);
        }
    }
   
    ///<summary>Floor Lobby.</summary>
    public partial class FloorLobby
    {
        private IElevator iElevator; ///<summary>IElevator.</summary>
        public IElevator IElevator { get { return iElevator; } }
       
        private int index; ///<summary>Floor Index.</summary>
        public int Index { set { index = value; } get { return index; } }
       
        private LobbyButton lobbyButton; ///<summary>Lobby Button.</summary>
        public LobbyButton LobbyButton { get { return lobbyButton; } }
       
        ///<summary>Constuctor.</summary>
        public FloorLobby(Elevator elevator, int index)
        {
            this.iElevator = elevator;
            this.index = index;
           
            this.lobbyButton = new LobbyButton(elevator, this);
        }
    }
   
    ///<summary>Lobby Button.</summary>
    public partial class LobbyButton
    {
        private IElevator iElevator; ///<summary>IElevator.</summary>
        public IElevator IElevator { get { return iElevator; } }
       
        private FloorLobby floorLobby; ///<summary>Floor Lobby that the Lobby Button is linked to.</summary>
        public FloorLobby FloorLobby { get { return floorLobby; } }
       
        private bool upButtonState; ///<summary>Up Button State.</summary>
        public bool UpButtonState { set { upButtonState = value; } get { return upButtonState; } }
       
        private bool downButtonState; ///<summary>Down Button State.</summary>
        public bool DownButtonState { set { downButtonState = value; } get { return downButtonState; } }
       
        ///<summary>Constuctor.</summary>
        public LobbyButton(Elevator elevator, FloorLobby floorLobby)
        {
            this.iElevator = elevator;
            this.floorLobby = floorLobby;
        }
    }
   
    ///<summary>Elevator Floor Button.</summary>
    public partial class ElevatorFloorButton
    {
        private IElevator iElevator; ///<summary>IElevator.</summary>
        public IElevator IElevator { get { return iElevator; } }
       
        private FloorLobby floorLobby; ///<summary>Floor Lobby that the Elevator Floor Button is linked to.</summary>
        public FloorLobby FloorLobby { get { return floorLobby; } }
       
        private Timer cancelButtonTimer; ///<summary>Cancel Button Timer.</summary>
        public Timer CancelButtonTimer { get { return cancelButtonTimer; } }
       
        ///<summary>Constuctor.</summary>
        public ElevatorFloorButton(Elevator elevator, FloorLobby floorLobby, int cancelButtonTimerInterval)
        {
            this.iElevator = elevator;
            this.floorLobby = floorLobby;
           
            this.cancelButtonTimer = new Timer(cancelButtonTimerInterval);
            myTimer.Tick += new EventHandler(FloorsButtonDoublePressTimerTick);
        }
    }

Alright, good, good. Now the system can define all the logics required for everything to work based on the information.

Code
    ///<summary>Elevator.</summary?
    public partial class Elevator
    {
        ///<summary>Open Door Button Press.</summary>
        public override void OpenDoorButtonPress(object sender, EventArgs e)
        {
            if (ElevatorState == ElevatorState.Idle)
            {
                DoorState = ElevatorDoorState.Opening;
            }
        }
       
        ///<summary>Close Door Button Press.</summary>
        public override void CloseDoorButtonPress(object sender, EventArgs e)
        {
            if (ElevatorState == ElevatorState.Idle)
            {
                DoorState = ElevatorDoorState.Opening;
            }
        }
       
        ///<summary>Button Obstruction detection.</summary>
        public override void DoorObstruction(object sender, EventArgs e)
        {
            DoorState = ElevatorDoorState.Opening;
        }
       
        ///<summary>Button Close Door Press.</summary>
        public override bool DoorOpen(int speed)
        {
            //door open logic goes here
        }
       
        ///<summary>Button Close Door Press.</summary>
        public override bool DoorClose(int speed)
        {
            //door open logic goes here
        }
       
        ///<summary>Elevator Move.</summary>
        public override bool ElevatorMove(int speed)
        {
            //elevator move logic goes here
        }
       
       
        ///<summary>Elevator Floor Locate.</summary>
        public override bool ElevatorFloorLocate(object sender, EventArgs e)
        {
            CurrentIndex = e.CurrentIndex;
        }
       
        ///<summary>Close Door Timer Reset.</summary>
        private bool CloseDoorTimerReset(object sender, EventArgs e)
        {
            if (CloseDoorTimer.Enabled)
                CloseDoorTimer.Stop();
            CloseDoorTimer.Start();
        }
       
        ///<summary>Move ElevatorTimer Reset.</summary>
        private bool MoveTimerReset(object sender, EventArgs e)
        {
            if (MoveTimer.Enabled)
                MoveTimer.Stop();
            MoveTimer.Start();
        }
       
        ///<summary>Close Door Timer Tick.</summary>
        public void CloseDoorTimerTick(object sender, ElapsedEventArgs e)
        {
            if (CloseDoorTimer.Enabled)
            {
                CloseDoorTimer.Stop();
                DoorState = ElevatorDoorState.Closing;
            }
        }
       
        ///<summary>Move Timer Tick.</summary>
        public void MoveTimerTick(object sender, ElapsedEventArgs e)
        {
            if (MoveTimer.Enabled)
            {
                MoveTimer.Stop();
                ElevatorState = ElevatorState.Move;
            }
        }
    }
   
    ///<summary>Lobby Button.</summary>
    public partial class LobbyButton
    {
        ///<summary>Reset State.</summary>
        public void ResetButtonState()
        {
            UpButtonState = false;
            DownButtonState = false;
        }
    }
   
    ///<summary>Elevator Floor Button.</summary>
    public partial class ElevatorFloorButton
    {
        ///<summary>Cancel Button Timer Reset.</summary>
        private bool CancelButtonTimerReset(object sender, EventArgs e)
        {
            if (CancelButtonTimer.Enabled)
                CancelButtonTimer.Stop();
            CancelButtonTimer.Start();
        }
       
        ///<summary>Floors Button Press.</summary>
        public bool FloorsButtonPress(object sender, EventArgs e)
        {
            if (!CancelButtonTimer.Enabled && !FloorQueue.Contains(this))
                FloorQueue.Add(this);
            CancelButtonTimerReset();
        }
       
        ///<summary>Floors Button Double Press.</summary>
        public bool FloorsButtonDoublePress(object sender, EventArgs e)
        {
            if (CancelButtonTimer.Enabled && IElevator.FloorDestination != this)
                FloorQueue.Remove(this);
        }
       
        ///<summary>Floors Button Double Press Timer Tick.</summary>
        public void FloorsButtonDoublePressTimerTick(object sender, ElapsedEventArgs e)
        {
            if (CancelButtonTimer.Enabled)
                CancelButtonTimer.Stop();
        }
    }
Greetings, signature.

*

kei10

  • It's a honor to meet everyone!
  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 430
  • Just kidding.
Re: dual layered A.I puzzles
« Reply #3 on: October 09, 2016, 05:57:17 am »
Continuation...

Good, good, now we can jumble up all the logic together into the Elevator...

Code
    ///<summary>Elevator.</summary?
    public partial class Elevator
    {
        ///<summary>Execute.</summary>
        public override void Execute()
        {
            switch (ElevatorState)
            {
                case ElevatorState.Idle:
                    switch (DoorState)
                    {
                        case ElevatorDoorState.Opening:
                            if (!DoorOpen())
                            {
                                CloseDoorTimerReset();
                                DoorState = ElevatorDoorState.OpenedIdle;
                            }
                            break;
                        case ElevatorDoorState.Closing:
                            if (!DoorClose())
                            {
                                MoveTimerReset();
                                DoorState = ElevatorDoorState.ClosedIdle;
                            }
                            break;
                    }
                    break;
                case ElevatorState.Move:
                    if (FloorDestination != null)
                    {
                        if (FloorDestination2 != null)
                        {
                            int floorAbove = Math.Ceil(CurrentIndex + 1)
                                , floorBelow = Math.Floor(CurrentIndex - 1);
                            if (ElevatorDirection == ElevatorDirection.Ascend && floorAbove < Floors.Length - 1 && Floor[floorAbove].UpButtonState)
                                Floor[floorAbove] = FloorDestination2;
                            else if (ElevatorDirection == ElevatorDirection.Descend && floorBelow > 0 && Floor[floorBelow].DownButtonState)
                                Floor[floorBelow] = FloorDestination2;
                           
                            if (!ElevatorMove(FloorDestination.Index - CurrentIndex))
                            {
                                FloorDestination = null;
                                ElevatorState = ElevatorState.Idle;
                                DoorState = ElevatorDoorState.Opening;
                            }
                        }
                        else
                        {
                            if (!ElevatorMove(FloorDestination2.Index - CurrentIndex))
                            {
                                FloorDestination2 = null;
                                ElevatorState = ElevatorState.Idle;
                                DoorState = ElevatorDoorState.Opening;
                            }
                        }
                    }
                    else
                    {
                        if (FloorQueue.Count)
                        {
                            FloorDestination = FloorQueue[0];
                            FloorQueue.RemoveAt(0);
                            if (FloorDestination.Index - CurrentIndex < 0)
                                ElevatorDirection = ElevatorDirection.Descend;
                            else if (FloorDestination.Index - CurrentIndex > 0)
                                ElevatorDirection = ElevatorDirection.Ascend;
                            else
                                ElevatorDirection = ElevatorDirection.Null;
                           
                        }
                    }
                    break;
            }
        }
    }

What a great workout. :D

The elevator algorithm is done inefficiently and without being tested, yes, it isn't efficient... We can make it efficient by modifying and inserting a few lines of codes. I also left out elevator weight, well, whatever.

You get the drill.

*stretches body*

I'm now lazy. *Dies*

It took hours upon hours to deal with all that as a human.

Now you want auto programming? Give it up. XD
« Last Edit: October 09, 2016, 06:20:19 am by kei10 »
Greetings, signature.

*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #4 on: October 09, 2016, 04:35:37 pm »
its not in my nature to give up

*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #5 on: October 11, 2016, 03:11:33 pm »
I am hereby introducing a new word :
pukhamize = copy paste mutate

*

kei10

  • It's a honor to meet everyone!
  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 430
  • Just kidding.
Re: dual layered A.I puzzles
« Reply #6 on: October 11, 2016, 03:44:30 pm »
Yotamarker...
Greetings, signature.

*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #7 on: October 12, 2016, 07:23:43 pm »
mada tebayo

movegorithm

tic :
for I to lastElevator
_for J to lastfloor
__if elv[j] <> 0
___if elvState = idel
____get direction
____move(direction,i,j)
___exit loop

move procedure :

if pause = x
_pause -=n
elseif pause <=0
_'state = moving
_if j <> currentFloor
__justmove(I,direction)
_else
__p = x
__state = idle
__ elv[j] = 0

*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #8 on: October 19, 2016, 06:29:33 pm »
@hashirama am I to understand your AGI won't be able to use auto programming cmon man
if nature made it then it should be simple no?

documenting programming
vs 2013 opened
new project
elevator

I hate MS so much had to enter winlive pass 20 times think ill study python or some phone compiler just in spite


*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #9 on: October 19, 2016, 06:44:04 pm »
building GUI

1 timer
1 progbar as elevator
Code
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim x = 5000
        Dim pause = x
        Dim n = 1000
        Dim currentfloor = 0
        Dim j = 30
        If pause > 0 Then 'waiting
            pause -= n
        ElseIf pause <= 0 Then 'state = moving

            If j <> currentfloor Then
                'justmove(I, direction)
            Else
                pause = x
                'state = idle
                'elv[j] = 0
            End If
        End If
    End Sub
End Class

*

yotamarker

  • Trusty Member
  • **********
  • Millennium Man
  • *
  • 1003
  • battle programmer
    • battle programming
Re: dual layered A.I puzzles
« Reply #10 on: October 19, 2016, 06:57:49 pm »
after err turned vars global put them in btn event
Code
Public Class Form1
    Dim x = 5000
    Dim pause = x
    Dim n = 1000
    Dim currentfloor = 0
    Dim j = 30
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       
        If pause > 0 Then 'waiting
            pause -= n
        ElseIf pause <= 0 Then 'state = moving

            If j <> currentfloor Then
                'justmove(I, direction)
                If j > currentfloor Then
                    currentfloor += 1
                    ProgressBar1.Value += 1
                ElseIf j < currentfloor Then
                    currentfloor -= 1
                    ProgressBar1.Value -= 1
                End If
            Else
                pause = x
                'state = idle
                'elv[j] = 0
            End If
        End If
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim x = 5000
        Dim pause = x
        Dim n = 1000
        Dim currentfloor = 0
        Dim j = 30
        If pause > 0 Then 'waiting
            pause -= n
        ElseIf pause <= 0 Then 'state = moving

            If j <> currentfloor Then
                'justmove(I, direction)
                If j > currentfloor Then
                    currentfloor += 1
                    ProgressBar1.Value += 1
                ElseIf j < currentfloor Then
                    currentfloor -= 1
                    ProgressBar1.Value -= 1
                End If
            Else
                pause = x
                'state = idle
                'elv[j] = 0
            End If
        End If
    End Sub
End Class


now in tick event
Code
Public Class Form1
    Dim x = 5000
    Dim pause = x
    Dim n = 1000
    Dim currentfloor = 0
    Dim j = 30
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       
       
        Timer1.Enabled = Not Timer1.Enabled
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
       
        If pause > 0 Then 'waiting
            pause -= n
        ElseIf pause <= 0 Then 'state = moving

            If j <> currentfloor Then
                'justmove(I, direction)
                If j > currentfloor Then
                    currentfloor += 1
                    ProgressBar1.Value += 1
                ElseIf j < currentfloor Then
                    currentfloor -= 1
                    ProgressBar1.Value -= 1
                End If
            Else
                pause = x
                'state = idle
                'elv[j] = 0
            End If
        End If
    End Sub
End Class

 


OpenAI Speech-to-Speech Reasoning Demo
by MikeB (AI News )
March 31, 2024, 01:00:53 pm
Say good-bye to GPUs...
by MikeB (AI News )
March 23, 2024, 09:23:52 am
Google Bard report
by ivan.moony (AI News )
February 14, 2024, 04:42:23 pm
Elon Musk's xAI Grok Chatbot
by MikeB (AI News )
December 11, 2023, 06:26:33 am
Nvidia Hype
by 8pla.net (AI News )
December 06, 2023, 10:04:52 pm
How will the OpenAI CEO being Fired affect ChatGPT?
by 8pla.net (AI News )
December 06, 2023, 09:54:25 pm
Independent AI sovereignties
by WriterOfMinds (AI News )
November 08, 2023, 04:51:21 am
LLaMA2 Meta's chatbot released
by 8pla.net (AI News )
October 18, 2023, 11:41:21 pm

Users Online

241 Guests, 1 User
Users active in past 15 minutes:
ivan.moony
[Trusty Member]

Most Online Today: 258. Most Online Ever: 2369 (November 21, 2020, 04:08:13 pm)

Articles