evantianx / CodeWars-Haskell

0 stars 0 forks source link

Data Reverse #14

Open evantianx opened 5 years ago

evantianx commented 5 years ago

Description:

A stream of data is received and needs to be reversed. Each segment is 8 bits long, meaning the order of these segments need to be reversed, for example:

11111111  00000000  00001111  10101010
  byte1     byte2     byte3     byte4

should become:

10101010  00001111  00000000  11111111
  byte4     byte3     byte2     byte1

The total number of bits will always be a multiple of 8. The data is given in an array as such:

[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,0,1,0]
evantianx commented 5 years ago

Solutions

import Data.List.Split (chunkOf)

dataReverse :: [Int] -> [Int]
dataReverse = concat . reverse . chunkOf 8