6 deleted 13 characters in body

MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains an empty array
%   STACK: []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed


MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains an empty array
%   STACK: []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed


MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains an empty array
%   STACK: []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed

5 deleted 6 characters in body

MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains twoan empty arraysarray
%   STACK: [], []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed


MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains two empty arrays
%   STACK: [], []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed


MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains an empty array
%   STACK: []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed

4 added 156 characters in body

MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains two empty arrays
%   STACK: [], []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed


MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. The stack contains two empty arrays
i    %   Take input
% End, implicit
% Display stack, implicit. Empty arrays are not displayed


MATL, 16 bytes

Zv3L)t?yn:)2$S}i  Explanation (outdated) Consider inputs 5, 'programmingpuzzles'. Zv % Input, implicit: number n. Symmetric range % STACK: [1 2 3 4 5 4 3 2 1] 3L % Push [1 -1+1j]. When used as an index, this means 1:end-1 % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j] ) % Index. Removes last element % STACK: [1 2 3 4 5 4 3 2] t % Duplicate % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2] ? % If non-empty and non-zero % STACK: [1 2 3 4 5 4 3 2] y % Implict input: string s. Duplicate from below % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles' n % Number of elements % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18 : % Range % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18] ) % Index modularly % STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2] 2$S  %   Two-input sort: stably sorts first input as given by the second
%   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains two empty arrays
%   STACK: [], []
i    %   Take input
%   STACK: [], [], 'programmingpuzzles'
% End, implicit
% Display stack, implicit. Empty arrays are not displayed

3 added 50 characters in body
2 added 710 characters in body
1