How to resolve the algorithm Stair-climbing puzzle step by step in the Fortran programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Stair-climbing puzzle step by step in the Fortran programming language

Table of Contents

Problem Statement

From Chung-Chieh Shan (LtU): Your stair-climbing robot has a very simple low-level API: the "step" function takes no argument and attempts to climb one step as a side effect. Unfortunately, sometimes the attempt fails and the robot clumsily falls one step instead. The "step" function detects what happens and returns a boolean flag: true on success, false on failure. Write a function "step_up" that climbs one step up [from the initial position] (by repeating "step" attempts if necessary). Assume that the robot is not already at the top of the stairs, and neither does it ever reach the bottom of the stairs. How small can you make "step_up"? Can you avoid using variables (even immutable ones) and numbers? Here's a pseudo-code of a simple recursive solution without using variables: Inductive proof that step_up() steps up one step, if it terminates:

The second (tail) recursion above can be turned into an iteration, as follows:

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Stair-climbing puzzle step by step in the Fortran programming language

Source code in the fortran programming language

module StairRobot
  implicit none

contains

  logical function step()
    ! try to climb up and return true or false
    step = .true.     ! to avoid compiler warning
  end function step

  recursive subroutine step_up_rec
    do while ( .not. step() )
       call step_up_rec
    end do
  end subroutine step_up_rec

  subroutine step_up_iter
    integer :: i = 0
    do while ( i < 1 )
       if ( step() ) then
          i = i + 1
       else
          i = i - 1
       end if
    end do
  end subroutine step_up_iter

end module StairRobot


  

You may also check:How to resolve the algorithm Fibonacci sequence step by step in the PascalABC.NET programming language
You may also check:How to resolve the algorithm Almost prime step by step in the Cowgol programming language
You may also check:How to resolve the algorithm Text processing/Max licenses in use step by step in the R programming language
You may also check:How to resolve the algorithm Loops/For with a specified step step by step in the Perl programming language
You may also check:How to resolve the algorithm Comments step by step in the EMal programming language