The pirate world's rules of distribution

Jelly, 11 10 bytes

R%2ḊµSȷ2_;

Try it online! or verify all test cases at once.

How it works

For input n, the task boils down to creating the list x, 0, 1, 0, … of length n whose sum is 100.

R%2ḊµSȷ2_;  Main link. Input: n

R           Yield [1, 2, ..., n].
 %2         Replace each integer by its parity. Yields [1, 0, 1, 0, ...].
   Ḋ        Dequeue; remove the first 1. This yields the list a = [0, 1, ...].
    µ       Begin a new, monadic link. Argument: a
     S      Compute the sum of a.
      ȷ2_   Subtract the sum from 100. (ȷ2 is 1e2 in Python syntax)
         ;  Prepend the difference to a.

Python, 33 bytes

lambda n:([-n/2+101]+[0,1]*n)[:n]

Computes the first value, appends some 0, 1, 0, 1..., truncates to length n.

Note that -n/2+101 can't be shortened to 101-n/2 because unary and binary - have different precedence: the former is parsed as (-n)/2 and the latter as 101-(n/2).

Recursion was much longer (45):

f=lambda n,i=100:1/n*[i]or f(n-1,i-n%2)+[n%2]

MATL, 12 bytes

:2\ts_101+l(

This uses current version (9.2.2) of the language/compiler, which is earlier than this challenge.

Example

>> matl :2\ts_101+l(
> 5
98  0  1  0  1

Explanation

:         % implicitly input number "n". Generate vector [1, 2, ..., n]
2\        % modulo 2. Gives [1, 0, 1, ...]
ts        % duplicate and compute sum
_101+     % negate and add 101
l(        % assign that to first entry of [1, 0, 1, ...] vector. Implicitly display

Tags:

Code Golf