From 2335aa3548d07b768097192a32e724b945f3eb30 Mon Sep 17 00:00:00 2001 From: Slavunderkind Date: Wed, 11 Jan 2017 17:20:19 +0200 Subject: [PATCH 1/3] Update chuck norris task solution --- Training/Easy/chuck_norris.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Training/Easy/chuck_norris.rb b/Training/Easy/chuck_norris.rb index cb1eeea..b7b7bae 100644 --- a/Training/Easy/chuck_norris.rb +++ b/Training/Easy/chuck_norris.rb @@ -27,14 +27,14 @@ def split_series(array) result end - def norris_parse(array) + def norris_parse(series_array) result = '' - array.each do |a| - if a[0].zero? - result += '00 ' - else - result += '0 ' - end + series_array.each do |a| + result += if a[0].zero? + '00 ' + else + '0 ' + end result += '0' * a[1] + ' ' end result.strip @@ -44,8 +44,8 @@ def start binary = @message.each_char.each_with_object('') do |char, b| b << convert_in_binary(convert_in_ascii(char)) end - array = split_series binary.each_char.map(&:to_i) - output = norris_parse array + array = split_series(binary.each_char.map(&:to_i)) + output = norris_parse(array) puts output end end From 58f201772fb7a63db2be2558a5fde2133d7fba7f Mon Sep 17 00:00:00 2001 From: Slavunderkind Date: Fri, 13 Jan 2017 12:25:20 +0200 Subject: [PATCH 2/3] Replace each with each_with_object at norris parse method --- Training/Easy/chuck_norris.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Training/Easy/chuck_norris.rb b/Training/Easy/chuck_norris.rb index b7b7bae..7913d93 100644 --- a/Training/Easy/chuck_norris.rb +++ b/Training/Easy/chuck_norris.rb @@ -28,16 +28,15 @@ def split_series(array) end def norris_parse(series_array) - result = '' - series_array.each do |a| - result += if a[0].zero? + parsed = series_array.each_with_object('') do |a, result| + result << if a[0].zero? '00 ' else '0 ' end - result += '0' * a[1] + ' ' + result << '0' * a[1] + ' ' end - result.strip + parsed.strip end def start From 576cab414fa7d599e4709506cd03800db63c06bc Mon Sep 17 00:00:00 2001 From: Slavunderkind Date: Mon, 23 Jan 2017 14:44:26 +0200 Subject: [PATCH 3/3] Refactor the code --- Training/Easy/chuck_norris.rb | 38 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/Training/Easy/chuck_norris.rb b/Training/Easy/chuck_norris.rb index 7913d93..062a18b 100644 --- a/Training/Easy/chuck_norris.rb +++ b/Training/Easy/chuck_norris.rb @@ -1,6 +1,6 @@ # Solution for https://www.codingame.com/ide/puzzle/chuck-norris class ChuckNorris - attr_accessor :message + attr_reader :message def initialize @message = gets.chomp @@ -15,39 +15,37 @@ def convert_in_binary(char) end def split_series(array) - result = [] - c = 0 - array.each_with_index do |item, index| - c += 1 + count = 0 + array.each_with_object([]).each_with_index do |(item, result), index| + count += 1 next if item == array[index + 1] - a = [item, c] - result << a - c = 0 + result << [item, count] + count = 0 end - result end def norris_parse(series_array) - parsed = series_array.each_with_object('') do |a, result| + parsed = series_array.each_with_object([]) do |serie, result| + # serie[0].zero? ? result << '00' : result << '0' result << if a[0].zero? - '00 ' + '00' else - '0 ' + '0' end - result << '0' * a[1] + ' ' + result << '0' * serie[1] end - parsed.strip + parsed.join(' ') end def start - binary = @message.each_char.each_with_object('') do |char, b| - b << convert_in_binary(convert_in_ascii(char)) + binary = '' + message.chars do |char| + binary << convert_in_binary(convert_in_ascii(char)) end - array = split_series(binary.each_char.map(&:to_i)) - output = norris_parse(array) - puts output + array = split_series(binary.chars.map(&:to_i)) + norris_parse(array) end end obj = ChuckNorris.new -obj.start +puts obj.start