Skip to content

Latest commit

 

History

History
131 lines (100 loc) · 2.4 KB

day1.md

File metadata and controls

131 lines (100 loc) · 2.4 KB

Challenge 1 (10/4/2020)

Implement a function that given a list of natural numbers, returns the lowest number not present in the list.

Premises

0 <= list size <= 2^16
len(unique(list)) = len(list)

Examples

minFree of 1, 2, 3, 4, 5 returns 6
minFree of an empty list returns 1
minFree of 10, 5, 9, 2, 24, 3, 1 returns 4

Solutions

(17) APL by Hugo (tacit)

minfree0()

(21) APL by Hugo

minfree{(())0}

(22) Haskell by Hugo

minFree=head.([1..]\\)

(23) Haskell by Hugo (fixed by Restivo)

minFree x=([1..]\\x)!!0

(24) Haskell by Mafalda

minFree x=head([1..]\\x)

(31) Julia untyped by Henrique Ferrolho

For 0 <= list size <= 2^16

minFree(x)=setdiff(1:2^16,x)[1]

(41) Julia by Henrique Ferrolho

For 0 <= list size <= 2^16

minFree(x::Set{Int})=setdiff(1:2^16,x)[1]

(41) Julia untyped by Henrique Ferrolho

For 0 <= list size <= 2e16

minFree(x)=for i=1:2e16 ix&&return i end

(42) Javascript by Restivo (recursive)

minFree=(S,i=1)=>S.has(i)?minFree(S,++i):i

(45) JavaScript by Restivo (iterative)

minFree=(S,i=0)=>{while(S.has(++i));return i}

(47) Scala by André Silva

def minFree(x:Seq[Int])=(1 to 2<<15).diff(x)(0)

(48) Python by Mafalda

minFree=lambda x:min(set(range(1,2**15))-set(x))

(51) JavaScript by André Silva

minFree=x=>{for(i=1;;i++)if(!x.indexOf(i))return i}

(53) Javascript by Restivo (lodash,sort,reduce)

minFree=(S)=>_.sortBy(S).reduce((r,v)=>r==v?r+1:r,1)

(55) Javascript by Restivo (lodash,difference)

minFree=(S)=>_.difference(_.range(1,S.length+2), S)[0]

(56) Julia by Henrique Ferrolho

For 0 <= list size <= 2e16

minFree(x::Set{Int})=for i=1:Int(2e16) ix&&return i end

(63) Rust by André Silva

let minFree=|x:Vec<u64>|(1..).filter(|i|!x.contains(i)).next();

(64) Javascript by Restivo (lodash,sort,find)

minFree=(S)=>_.sortBy(S).findIndex((v,i)=>v!=i+1)+1||S.length+1

(64) Swift by Tiago Almeida

let minFree={(l:[Int])in l.sorted().reduce(1){$0==$1 ?$1+1:$0}}

(64) Python by António Ramadas

minFree=lambda l:[i for i in range(1,len(l)+2) if i not in l][0]