Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Kangaroo problem, np complete :)
#15
This was my solution (slightly modified):
Code:
DEFINT A-Z

DECLARE SUB DsplMove (Grp%, j%, Pstn%(), LnUp$, Mv$, Move%)
DIM LineUp AS STRING

SCREEN 0
WIDTH 80, 25

DO
  VIEW PRINT
  CLS
  Title$ = "Kangaroo Problem"
  LOCATE 1, 32
  PRINT Title$; TAB(2); STRING$(78, "=")

  DO   '==============================  User Input   ==========================
    LOCATE 10, 18
    INPUT "Enter the number of kangaroos per side: ", n
    Okay = 0
    IF n < 10 THEN
      Okay = -1
    ELSE
      LOCATE 13, 1
      IF n > 31 THEN
        PRINT TAB(22); "Can't display more than 31 kangaroos.";
        Txt$ = "(You really didn't want to watch"
        Txt$ = Txt$ + STR$(n * (n + 2)) + " moves anyway)"
        PRINT TAB(40 - LEN(Txt$) \ 2); Txt$
        DO: k$ = INKEY$: LOOP WHILE k$ = ""
      ELSE
        Txt$ = "This will require" + STR$(n * (n + 2))
        Txt$ = Txt$ + " moves.  Use n =" + STR$(n) + "? (y/n)"
        PRINT TAB(40 - LEN(Txt$) \ 2); Txt$
        DO: k$ = LCASE$(INKEY$): LOOP UNTIL k$ = "y" OR k$ = "n"
        Okay = (k$ = "y")
      END IF
      LOCATE 10, 1: PRINT STRING$(80, " ")
      LOCATE 13, 1: PRINT STRING$(80, " ")
      LOCATE 14, 1: PRINT STRING$(80, " ")
    END IF
  LOOP UNTIL Okay      '============   End User Input ==========================

  CLS        '-----------------------  set up solution screen -----------------
  T$ = Title$ + "  (n =" + STR$(n) + ")"
  LOCATE 1, 41 - LEN(T$) \ 2
  PRINT T$; TAB(2); STRING$(78, "=")
  VIEW PRINT 3 TO 24   '-----------  End set up solution screen  --------------

  REDIM Pstn(1, 1 TO n)                         ' position of each kangaroo
  FOR i = 1 TO n                                ' starting from 1 on left
    Pstn(0, i) = n + 1 - i
    Pstn(1, i) = n + 1 + i
  NEXT
  LineUp = STRING$(n, ">") + "_" + STRING$(n, "<")
  Move = 0
  DsplMove Group, j, Pstn(), LineUp, "", Move

  FOR i = 0 TO n - 1
    Group = i MOD 2
    FOR j = 1 TO i
      DsplMove Group, j, Pstn(), LineUp, "jump", Move
    NEXT
    DsplMove Group, i + 1, Pstn(), LineUp, "hop ", Move
  NEXT

  Group = n MOD 2
  FOR j = 1 TO n
      DsplMove Group, j, Pstn(), LineUp, "jump", Move
  NEXT
  
  FOR i = n - 1 TO 0 STEP -1
    Group = i MOD 2
    DsplMove Group, n - i, Pstn(), LineUp, "hop ", Move
    FOR j = 1 TO i
      DsplMove Group, n - i + j, Pstn(), LineUp, "jump", Move
    NEXT
  NEXT
  PRINT TAB(28); "Try a different value? (y/n)";
  DO: k$ = LCASE$(INKEY$): LOOP UNTIL k$ = "y" OR k$ = "n"
  
LOOP WHILE k$ = "y"

SUB DsplMove (Grp, j, Pstn(), LnUp$, Mv$, Move)
  IF Grp = 0 THEN
    Char$ = ">"
    Grp$ = "R"
    Drctn = 1
  ELSE
    Char$ = "<"
    Grp$ = "L"
    Drctn = -1
  END IF

  Dspl$ = RIGHT$("  " + STR$(Move), 4) + ")  "
  IF Move = 0 THEN
    Dspl$ = Dspl$ + STRING$(10, " ") + LnUp$
  ELSE
    MvLngth = 1 - (Mv$ = "jump")
    MID$(LnUp$, Pstn(Grp, j), 1) = "_"
    MID$(LnUp$, Pstn(Grp, j) + MvLngth * Drctn, 1) = Char$

    Pstn(Grp, j) = Pstn(Grp, j) + MvLngth * Drctn
              
    Dspl$ = Dspl$ + Grp$ + LEFT$(RIGHT$(STR$(j) + " ", 2 - (j > 9)), 2)
    Dspl$ = Dspl$ + " " + Mv$ + "  " + LnUp$
  END IF
  PRINT TAB(40 - LEN(Dspl$) \ 2); Dspl$;

  IF Move > 0 AND Move MOD 20 = 0 THEN
    PRINT TAB(23); "PAUSED - Press any key to continue";
    DO: k$ = INKEY$: LOOP WHILE k$ = ""
    IF k$ = "q" OR k$ = CHR$(27) THEN END
    LOCATE 24, 23: PRINT ; "                                  ";
    LOCATE 24, 1
  END IF
  Move = Move + 1
END SUB
I also have Aga's solution, but I'll allow him to post it.
hrist Jesus came into the world to save sinners, of whom I am first.(I Timothy 1:15)

For God so loved the world, that He gave His only begotten Son,
that whoever believes in Him should not perish, but have eternal life.(John 3:16)
Reply


Messages In This Thread
Kangaroo problem, np complete :) - by Agamemnus - 08-02-2003, 10:58 PM
Kangaroo problem, np complete :) - by xhantt - 08-03-2003, 12:32 AM
kangaroo problem - by SCM - 08-04-2003, 06:15 AM
Kangaroo problem, np complete :) - by na_th_an - 08-04-2003, 07:18 AM
kangaroo challenge - by SCM - 08-05-2003, 03:09 AM
Re: kangaroo challenge - by Phydaux - 08-05-2003, 06:04 AM
Kangaroo problem, np complete :) - by Agamemnus - 08-05-2003, 07:20 PM
Kangaroo problem, np complete :) - by Lanzaa - 08-06-2003, 02:46 AM
Kangaroo problem - by SCM - 08-06-2003, 11:20 AM
Kangaroo problem, np complete :) - by Agamemnus - 08-09-2003, 04:51 AM
Kangaroo problem, np complete :) - by Lanzaa - 10-03-2003, 06:01 AM
Kangaroo problem, np complete :) - by Agamemnus - 10-03-2003, 06:17 AM
Kangaroo problem, np complete :) - by Lanzaa - 10-03-2003, 06:41 AM
Kangaroo problem, np complete :) - by Agamemnus - 10-03-2003, 06:47 AM
Kangaroo problem - by SCM - 10-03-2003, 07:31 AM
Kangaroo problem, np complete :) - by Lanzaa - 10-03-2003, 07:57 AM
Kangaroo problem, np complete :) - by SCM - 10-03-2003, 08:10 AM
Kangaroo problem, np complete :) - by Lanzaa - 10-03-2003, 08:19 AM
Kangaroo problem, np complete :) - by SCM - 10-03-2003, 11:26 PM
Kangaroo problem, np complete :) - by Agamemnus - 10-04-2003, 03:55 AM
Re: Kangaroo problem, np complete :) - by Clippy - 07-12-2009, 01:05 AM
Re: Kangaroo problem, np complete :) - by LPG - 10-30-2009, 08:21 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)