## Weekly Challenge 193

Two relatively straight forward tasks this week, so not as much commentary as usual.

## Task 1: Binary String

### Task

You are given an integer, `$n`

> 0.

Write a script to find all possible binary numbers of size `$n`

.

### My solution

Thankfully both Python and Perl provide easy methods to convert a (base 10) integer into a binary number with leading zeros. For the integer `x`

with `y`

leading zeros, we can use `format(x, '0yb')`

in Python, and `sprintf('%0yb', x)`

in Perl.

With that out of the way, we know that all binary numbers can be converted from the integers between 0 and 2^{n}-1 (inclusive).

### Examples

```
$ ./ch-1.py 2
00, 01, 10, 11
$ ./ch-1.py 3
000, 001, 010, 011, 100, 101, 110, 111
```

## Task 2: Odd String

### Task

You are given a list of strings of same length, `@s`

.

Write a script to find the odd string in the given list. Use positional value of alphabet starting with `0`

, i.e. `a = 0, b = 1, ... z = 25`

.

Find the difference array for each string as shown in the example. Then pick the odd one out.

### My solution

This task can be broken into three sub tasks:

- Create a dict (hash in Perl) called
`letter_map`

that maps the letters of the alphabet to integers, where`letter_map['a']`

is 0, and`letter_map['z']`

is 25. - Convert each word into a space separated values of differences. So
`adc`

is converted to`3 -1`

. With this information I have an`occurrences`

dict where the key is the converted string and the value is a list of words that match that pattern. - Calculate an array
`unique_words`

of values in`occurrences`

that only have one value. If there is only one unique word, I display that. If not, I display an error.

### Examples

```
$ ./ch-2.py adc wzy abc
abc
$ ./ch-2.py aaa bob ccc ddd
bob
```

## Top comments (0)