Skip to editor
File
New File Ctrl+N
New Folder

Save Ctrl+S
Upload File…
Download as ZIP

Delete File

Reset Files…
View
Toggle Sidebar Ctrl+B
Toggle Terminal Ctrl+`

Word Wrap Alt+Z

Exercise Info

Theme: Dark
Font Size: 14px
Reading Mode: Default
Run
Run Code Ctrl+Enter
Save & Run F5

Clear Output
Help
Keyboard Shortcuts ?
Javascript Example Module: Array Min Index (2 pts)
Explorer
GitHub

Connect to GitHub to push and pull your project files to a repository.

On the page that opens, create a token with repo scope, copy it, then paste it below.

Paste the personal access token you created on GitHub with repo scope.

Click Refresh to load commit history
Exercise Info

Goals

  1. To do proper array indexing
  2. To use loops in concert with arrays
  3. To keep track of multiple auxiliary variables in a loop
  4. To properly define methods

Instructions

Fill in the function getMinIndex, which takes in an array numerical values and which should return the index of the minimum element in the array. You must handle the following two special cases:
  1. If there are ties, it should return the lowest index among the ties
  2. If the array is empty, your program should return 0 without crashing


  3. The Ursinus-WebIDE by Chris Tralie (opens in new tab) and Bill Mongan (opens in new tab)

Your browser does not support WebGL. A graphical rendering canvas would appear here.


          
No suggestions. Code quality feedback will appear here.
Run your code to inspect variables.
Click Step Run above to record execution steps. Available for Python.

Run your code to see the function-call tape.

For Python, calls are recorded automatically (use Step Run on the Inspector toolbar).

For JavaScript or Java (Processing), you have to record the markers yourself. These helpers are labels — they don't call any function, they only annotate this tape.

Option 1 — sibling log (simple). Call webideTrace.tap('name', arg1, arg2) once per event. Each tap shows up as a flat sibling. Use this when you just want to know "did this code run?" or "in what order did these run?".

Option 2 — scope tracking (for nested / recursive calls). Put webideTrace.call('name', args…) as the first line inside the function body, and webideTrace.return(value) immediately before every return statement (or once at the end if the function is void). Then call the function normally from outside.

// JavaScript example
function fact(n) {
    webideTrace.call('fact', n);          // at the top
    if (n <= 1) {
        return webideTrace.return(1);     // wrap every return
    }
    let r = n * fact(n - 1);
    return webideTrace.return(r);
}
fact(4);   // now the tape shows fact(4) → fact(3) → fact(2) → fact(1)

Every call must be matched by a return. If you put three calls in a row without returns, each one ends up nested inside the previous (which is what the IDE will warn about with "no .return"). For that case use tap instead.

Not logged in javascript
Ln 1, Col 1
Keyboard Shortcuts

Editing & Files

Save current fileCtrlS
Run codeCtrlEnter
Save and RunF5
Toggle word wrapAltZ

View

Toggle sidebarCtrlB
Toggle terminal panelCtrl`
Focus ExplorerCtrlShiftE
Focus Terminal tabCtrlShiftT
Focus Output tabCtrlShiftO
Focus Suggestions tabCtrlShiftP

Editor Font

Increase font sizeCtrl=
Decrease font sizeCtrl-

Help

Show this dialog?
Close any dialogEsc

Tip: Within an input field, "?" types a literal question mark. Press Esc first to leave the field, then press ? to open this dialog.