From 05768acb5c2fa283ec9d7044f68f6203a6fcb73f Mon Sep 17 00:00:00 2001 From: fengkaiwater <328458211@qq.com> Date: Wed, 16 Aug 2017 10:42:45 +0800 Subject: [PATCH 01/30] hello and variable --- 01-hello.rb | 2 +- 02-variable.rb | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/01-hello.rb b/01-hello.rb index e0e7bbf..f4d4ab2 100644 --- a/01-hello.rb +++ b/01-hello.rb @@ -5,4 +5,4 @@ # ... -puts "(请替换成最后的答案)" \ No newline at end of file +puts "smartful" diff --git a/02-variable.rb b/02-variable.rb index a5a4753..cff8f5d 100644 --- a/02-variable.rb +++ b/02-variable.rb @@ -1,7 +1,7 @@ # 题目: 交换 a, b 变数的值 -a = 1 -b = 2 +a = 3 +b = 5 puts "a 是 #{a}" puts "b 是 #{b}" @@ -10,4 +10,3 @@ puts "a 应该是 2,现在是 #{a}" puts "b 应该是 1,现在是 #{b}" - From fde82c616e8a63b568ca73617bd308ad265fafbe Mon Sep 17 00:00:00 2001 From: fengkaiwater <328458211@qq.com> Date: Wed, 16 Aug 2017 10:53:38 +0800 Subject: [PATCH 02/30] to float --- 03-triangle.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/03-triangle.rb b/03-triangle.rb index fafec03..c0d1bbe 100644 --- a/03-triangle.rb +++ b/03-triangle.rb @@ -1,5 +1,7 @@ # 题目: 使用者输入直角三角形的宽和高,输出三角形的面积 + + print "请输入直角三角形的高,然后按 Enter: " a = gets @@ -8,4 +10,4 @@ # ..... -puts "直角三角形的面积是: _________" \ No newline at end of file +puts "直角三角形的面积是: #{ a.to_f * b.to_f / 2 }" From af9e57d9742a7c5a4c32504a8b3adb12fef3ab23 Mon Sep 17 00:00:00 2001 From: fengkaiwater <328458211@qq.com> Date: Wed, 16 Aug 2017 10:59:31 +0800 Subject: [PATCH 03/30] pizzas --- 04-pizzas.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/04-pizzas.rb b/04-pizzas.rb index 4c2521f..4403def 100644 --- a/04-pizzas.rb +++ b/04-pizzas.rb @@ -8,5 +8,5 @@ # ..... -puts "每人可分得几片: _________ 片" -puts "还剩下几片: _________ 片" \ No newline at end of file +puts "每人可分得几片:#{ pizzas.to_i / people.to_i } 片" +puts "还剩下几片: #{ pizzas.to_i % people.to_i } " From 4ddef7e52cc8e44701c4f02d4cec115e3c3af899 Mon Sep 17 00:00:00 2001 From: fengkaiwater <328458211@qq.com> Date: Wed, 16 Aug 2017 11:24:13 +0800 Subject: [PATCH 04/30] BMI --- 05-bmi.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/05-bmi.rb b/05-bmi.rb index 67efdff..b4fa114 100644 --- a/05-bmi.rb +++ b/05-bmi.rb @@ -4,14 +4,21 @@ # 如果 BMI >= 24,显示过重 # 如果 BMI 介于 18.5 ~ 24,显示正常 + print "请输入您的体重(公斤),然后按 Enter: " weight = gets print "请输入您的身高(厘米),然后按 Enter: " height = gets -# ..... +BMI = (weight.to_f / (height.to_f/100) ** 2).round(2) -puts "您的 BMI 是: _________" +puts "您的 BMI 是: #{ BMI }" -puts "您的 BMI 结果是: _________(过轻或正常或过重)" \ No newline at end of file +if BMI < 18.5 + puts "您的 BMI 结果是: 过轻" +elsif BMI >24 + puts "您的 BMI 结果是: 过重" +else + puts "您的 BMI 结果是: 正常" +end From bf180d2d079b3768935a9319dba8022bdda97d44 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 14:35:33 +0800 Subject: [PATCH 05/30] integer and positive & abcde & find max --- 01-hello.rb | 2 +- 02-variable.rb | 4 ++-- 03-triangle.rb | 2 ++ 04-pizzas.rb | 2 +- 05-bmi.rb | 4 +++- 06-interger-positive.rb | 17 +++++++++++++++-- 07-abcde.rb | 26 ++++++++++++++++++++++++-- 08-find-max.rb | 16 ++++++++++++++-- 8 files changed, 62 insertions(+), 11 deletions(-) diff --git a/01-hello.rb b/01-hello.rb index f4d4ab2..11399c5 100644 --- a/01-hello.rb +++ b/01-hello.rb @@ -4,5 +4,5 @@ your_name = gets # ... - +print your_name + "is " puts "smartful" diff --git a/02-variable.rb b/02-variable.rb index cff8f5d..9555713 100644 --- a/02-variable.rb +++ b/02-variable.rb @@ -1,7 +1,7 @@ # 题目: 交换 a, b 变数的值 -a = 3 -b = 5 +a = 7 +b = 8 puts "a 是 #{a}" puts "b 是 #{b}" diff --git a/03-triangle.rb b/03-triangle.rb index c0d1bbe..f5ba257 100644 --- a/03-triangle.rb +++ b/03-triangle.rb @@ -11,3 +11,5 @@ # ..... puts "直角三角形的面积是: #{ a.to_f * b.to_f / 2 }" + +#second time diff --git a/04-pizzas.rb b/04-pizzas.rb index 4403def..6aa3b45 100644 --- a/04-pizzas.rb +++ b/04-pizzas.rb @@ -8,5 +8,5 @@ # ..... -puts "每人可分得几片:#{ pizzas.to_i / people.to_i } 片" +puts "每人可分得几片:#{ (pizzas.to_i / people.to_i).floor } 片" puts "还剩下几片: #{ pizzas.to_i % people.to_i } " diff --git a/05-bmi.rb b/05-bmi.rb index b4fa114..eec7755 100644 --- a/05-bmi.rb +++ b/05-bmi.rb @@ -17,8 +17,10 @@ if BMI < 18.5 puts "您的 BMI 结果是: 过轻" -elsif BMI >24 +elsif BMI > 24 puts "您的 BMI 结果是: 过重" else puts "您的 BMI 结果是: 正常" end + +#bug :输入任意非数字串 diff --git a/06-interger-positive.rb b/06-interger-positive.rb index a240f5f..be3cd77 100644 --- a/06-interger-positive.rb +++ b/06-interger-positive.rb @@ -6,5 +6,18 @@ # .... -puts "这个数是_____ (正数或零或负数)" -puts "这个数是_____ (偶数或奇数)" \ No newline at end of file +if x.to_f > 0 + puts "正数" +elsif x.to_f < 0 + puts "负数" +else + puts "0" +end + +if x.to_f % 2 == 0 + puts "偶数" +else + puts "奇数" +end + +#bug :输入任意非数字串为0和偶数 diff --git a/07-abcde.rb b/07-abcde.rb index 5d0c8c3..19e8b4d 100644 --- a/07-abcde.rb +++ b/07-abcde.rb @@ -17,6 +17,28 @@ print "请输入一个整数z,然后按 Enter: " z = gets -# .... +q = x.to_f +w = y.to_f +e = z.to_f -puts "结果是________(A或B或C或D或E)" \ No newline at end of file +if q < 0 + puts "A" +elsif q > 0 && w > 0 + if e > 0 + puts "B" + elsif e < 0 + puts "C" + else + puts "none1" + end +elsif q > 0 && w < 0 + if e > 0 + puts "D" + elsif e < 0 + puts "E" + else + puts "none2" + end +else + puts "none3" +end diff --git a/08-find-max.rb b/08-find-max.rb index 9e6e643..3b52244 100644 --- a/08-find-max.rb +++ b/08-find-max.rb @@ -9,6 +9,18 @@ print "请输入一个数字z,然后按 Enter: " z = gets -# .... +q = x.to_f +w = y.to_f +e = z.to_f + +if q >= w && q >= e + puts "最大的数是 #{x}" +elsif w >= q && w >= e + puts "最大的数是 #{y}" +elsif e >= w && e >= q + puts "最大的数是 #{z}" +else + puts "none" +end -puts "最大的数是 ________(x或y或z)" \ No newline at end of file +# .... From 80c3cd3aedecf6e5db2055b6ccd2793f68d3bbb2 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 14:36:12 +0800 Subject: [PATCH 06/30] correct name --- 06-interger-positive.rb => 06-integer-positive.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 06-interger-positive.rb => 06-integer-positive.rb (100%) diff --git a/06-interger-positive.rb b/06-integer-positive.rb similarity index 100% rename from 06-interger-positive.rb rename to 06-integer-positive.rb From db37eddeb7f4455739f72494f6f3658bb4ef02fd Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 21:01:00 +0800 Subject: [PATCH 07/30] 09-function --- 09-function.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/09-function.rb b/09-function.rb index b1f922d..acc468e 100644 --- a/09-function.rb +++ b/09-function.rb @@ -1,7 +1,7 @@ # 题目: 输入直角三角形的宽和高,输出三角形的面积 def calculate_area(a, b) - # .... + a.to_f * b.to_f / 2 end print "请输入直角三角形的高,然后按 Enter: " @@ -12,4 +12,4 @@ def calculate_area(a, b) answer = calculate_area(a,b) -puts "直角三角形的面积是: #{answer}" \ No newline at end of file +puts "直角三角形的面积是: #{answer}" From 74ddd64fcfebd19516ee6b58270af06a072e1e42 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 21:12:26 +0800 Subject: [PATCH 08/30] 10-function --- 10-function.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/10-function.rb b/10-function.rb index bb450fb..1701b16 100644 --- a/10-function.rb +++ b/10-function.rb @@ -1,6 +1,20 @@ # 题目: 使用者输入 x,y,z,请输出三个数中最大的数 def find_max(x, y, z) + q = x.to_f + w = y.to_f + e = z.to_f + + if q >= w && q >= e + return x + elsif w >= q && w >= e + return y + elsif e >= w && e >= q + return z + else + return "none" + end + end print "请输入一个数字x,然后按 Enter: " @@ -16,4 +30,4 @@ def find_max(x, y, z) answer = find_max(x,y,z) -puts "最大的数是 #{answer}" \ No newline at end of file +puts "最大的数是 #{answer}" From 47f749eabf875a2b1a0704526e74ff7e3683e61c Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 21:22:25 +0800 Subject: [PATCH 09/30] seven --- 11-seven.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/11-seven.rb b/11-seven.rb index 26c221d..67c1cc9 100644 --- a/11-seven.rb +++ b/11-seven.rb @@ -2,8 +2,9 @@ i = 1 while ( i <= 100 ) - - # .... + if (7*i) < 100 + puts 7*i + end i+=1 -end \ No newline at end of file +end From 3c45f34e0dc680bd11bb52f8ac8561c362e1dfb7 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 21:40:48 +0800 Subject: [PATCH 10/30] sum-even --- 12-sum-even.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/12-sum-even.rb b/12-sum-even.rb index 73879bb..dc29380 100644 --- a/12-sum-even.rb +++ b/12-sum-even.rb @@ -1,13 +1,11 @@ # 题目: 求 1~100 所有偶数的和 -i = 1 +i = 0 total = 0 while ( i <= 100 ) - - # .... - - i+=1 + total += i + i+=2 end -puts total \ No newline at end of file +puts total From af5bcc909c32d4858eeade0560ed9ecf76136169 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 22:29:54 +0800 Subject: [PATCH 11/30] 13-nn.rb --- 13-nn.rb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/13-nn.rb b/13-nn.rb index ac0a43b..bff10d2 100644 --- a/13-nn.rb +++ b/13-nn.rb @@ -2,10 +2,19 @@ print "请输入数字 N,然后按 Enter: " n = gets +n = n.to_i -# while ( ... ) -# while ( ...) -# -# end -# end +i = 0 +while ( i <= n ) + j = 0 + + while ( j <= n) + + puts "#{i} * #{j} = #{i*j}" + j += 1 + + end + + i += 1 +end From 799b63b5b3cc9f5f528ab6ae5fc87a808eaee178 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 23:07:45 +0800 Subject: [PATCH 12/30] 14-prime.rb --- 14-prime.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/14-prime.rb b/14-prime.rb index 8cf1692..7a3a77c 100644 --- a/14-prime.rb +++ b/14-prime.rb @@ -1,11 +1,26 @@ # 输入一个数字 N,请检查是不是质数 def is_prime(n) -# .... + if n < 2 + return false + elsif n == 2 || n == 3 + return true + else + i = 2 + while ( i <= (n/2) ) + if (n % i) != 0 + return true + else + return false + end + i += 1 + end + end end print "请输入数字 N,然后按 Enter: " n = gets +n = n.to_f if is_prime(n.to_i) puts "这是质数" From db3a32008fbb189b351afbee2cf5ebe502d210f4 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 23:17:54 +0800 Subject: [PATCH 13/30] 15-guess-number --- 15-guess-number.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/15-guess-number.rb b/15-guess-number.rb index 48f9dca..f577082 100644 --- a/15-guess-number.rb +++ b/15-guess-number.rb @@ -6,12 +6,13 @@ print "请猜一个 0~99 的数字 N,然后按 Enter: " n = gets - #puts "太低了,再猜一次" - #puts "太高了,再猜一次" - if n.to_i == target puts "恭喜猜中啦! " break + elsif n.to_i < target + puts "太低了,再猜一次" + else + puts "太高了,再猜一次" end -end \ No newline at end of file +end From 30715001b4896340968462363c9b09fff01495c2 Mon Sep 17 00:00:00 2001 From: fengkai Date: Tue, 3 Oct 2017 23:54:00 +0800 Subject: [PATCH 14/30] 16-array-sum --- 16-array-sum.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/16-array-sum.rb b/16-array-sum.rb index 9b4910b..5312ced 100644 --- a/16-array-sum.rb +++ b/16-array-sum.rb @@ -1,11 +1,17 @@ # 给定一阵列内含数字,输出最大值 def find_max(array) - #.... + max = array[0] + for i in 1..((array.length)-1) + if array[i] > max + max = array[i] + end + end + + return max end -arr = [8, 12, 36, 53, 9, 75, 3, 71, 59, 88] +arr = [888, 12, 36, 53, 9, 75, 3, 71, 59, 88] max = find_max(arr) -puts "Max is #{max}" # 应该是 88 - +puts "Max is #{max}" # 应该是 888 From f63aa0863c5b81feb3f9c7bb53e21f2abafc12f2 Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 19:42:27 +0800 Subject: [PATCH 15/30] 17-array-stats --- 17-array-stats.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/17-array-stats.rb b/17-array-stats.rb index 0af81bb..40e3723 100644 --- a/17-array-stats.rb +++ b/17-array-stats.rb @@ -12,9 +12,18 @@ end end +total = 0 +for i in arr + total += i +end + +average = total.to_f / arr.length +max = arr.max +min = arr.min + puts arr.to_s -puts "总和是 _____" -puts "平均是 _____" -puts "最大值是 _____" -puts "最小值是 _____" \ No newline at end of file +puts "总和是 #{total}" +puts "平均是 #{average}" +puts "最大值是 #{max}" +puts "最小值是 #{min}" From 87eca0fc1490ccb24607968bf60effd55290678c Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 19:55:43 +0800 Subject: [PATCH 16/30] 18-square --- 18-square.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/18-square.rb b/18-square.rb index 226e1c1..8bfe5d6 100644 --- a/18-square.rb +++ b/18-square.rb @@ -4,7 +4,10 @@ print "请输入数字 N,然后按 Enter: " n = gets +n = n.to_i -# ... +for i in 0..n-1 + arr << i**2 +end -puts arr.to_s \ No newline at end of file +puts arr.to_s From 58f65d59d2ae3976a457c6e6a6f32a08ea5ef367 Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 20:13:14 +0800 Subject: [PATCH 17/30] 19-filter --- 19-filter.rb | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/19-filter.rb b/19-filter.rb index ef7e515..7bbcbde 100644 --- a/19-filter.rb +++ b/19-filter.rb @@ -1,9 +1,20 @@ # 给定一阵列内含数字,输出另一个数组只包含偶数 + + + def filter_even(arr) - #... + result = [] + + arr.each do |i| + if i % 2 == 0 + result << i + end + end + + return result end -arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1] +arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1, 0] -puts filter_even(arr).to_s # 应该是 [68, 42, 46, 46, 86] \ No newline at end of file +puts filter_even(arr).to_s # 应该是 [68, 42, 46, 46, 86] From 7ce4fe4d71de5cf48ab7cc6d72fc0ecdb104e089 Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 20:19:41 +0800 Subject: [PATCH 18/30] 20-sorting.rb --- 20-sorting.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/20-sorting.rb b/20-sorting.rb index 5f82c08..82dbeb0 100644 --- a/20-sorting.rb +++ b/20-sorting.rb @@ -2,10 +2,13 @@ # Hint: 可用 arr.sort 排序,和 arr.uniq 去除重复 def filter_even(arr) - #... + arr.sort! + arr.uniq! + arr end arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1] +a = filter_even(arr).to_s -puts "________" # 应该是 [42, 46, 68, 86] \ No newline at end of file +puts "#{a}" # 应该是 [42, 46, 68, 86] From 9e9fccee26b585b7783fef0408d0e35bba155e36 Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 21:51:31 +0800 Subject: [PATCH 19/30] 21-selection-sort --- 21-selection-sort.rb | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/21-selection-sort.rb b/21-selection-sort.rb index e5e7eae..faa819e 100644 --- a/21-selection-sort.rb +++ b/21-selection-sort.rb @@ -1,12 +1,30 @@ # 给定一数组内含数字,请实作选择排序法进行排序。 # https://zh.wikipedia.org/wiki/选择排序 -def selection_sort(arr) - #... -end +# def selection_sort(arr) +# result = [] +# arr.each do |i| +# +# end +# end +# +# arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1] +# +# answer = selection_sort(arr) +# +# puts answer.to_s # 应该是 [1, 7, 9, 42, 46, 46, 68, 77, 86, 91] + -arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1] +arr = [4,1,2,5,7,10,3] -answer = selection_sort(arr) +for i in (0..arr.size-1) + for j in (i+1)..(arr.size-1) + if arr[j] < arr[i] + tmp = arr[i] + arr[i] = arr[j] + arr[j] = tmp + end + end +end -puts answer.to_s # 应该是 [1, 7, 9, 42, 46, 46, 68, 77, 86, 91] \ No newline at end of file +puts(arr.inspect) # inspect also aliased as: to_s From 92bc0f282bbaeae87a8c95c5d952d8bd49e8a3c8 Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 21:58:33 +0800 Subject: [PATCH 20/30] 21-selection-sort02 --- 21-selection-sort.rb | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/21-selection-sort.rb b/21-selection-sort.rb index faa819e..890ec4c 100644 --- a/21-selection-sort.rb +++ b/21-selection-sort.rb @@ -1,30 +1,26 @@ # 给定一数组内含数字,请实作选择排序法进行排序。 # https://zh.wikipedia.org/wiki/选择排序 -# def selection_sort(arr) -# result = [] -# arr.each do |i| -# -# end -# end -# -# arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1] -# -# answer = selection_sort(arr) -# -# puts answer.to_s # 应该是 [1, 7, 9, 42, 46, 46, 68, 77, 86, 91] +def selection_sort(arr) - -arr = [4,1,2,5,7,10,3] - -for i in (0..arr.size-1) - for j in (i+1)..(arr.size-1) - if arr[j] < arr[i] - tmp = arr[i] - arr[i] = arr[j] - arr[j] = tmp + for i in (0..arr.size-1) + for j in (i+1)..(arr.size-1) + if arr[j] < arr[i] + tmp = arr[i] + arr[i] = arr[j] + arr[j] = tmp + end end end + + return arr + end -puts(arr.inspect) # inspect also aliased as: to_s +arr = [7, 68, 42, 46, 9, 91, 77, 46, 86, 1] + +answer = selection_sort(arr) + +puts answer.inspect +# 应该是 [1, 7, 9, 42, 46, 46, 68, 77, 86, 91] +# inspect also aliased as: to_s From 2eca76a7cd3afe6764d9398f76dce56ef1dccffc Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 22:20:11 +0800 Subject: [PATCH 21/30] 22-missing --- 22-missing.rb | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/22-missing.rb b/22-missing.rb index 6898714..af70410 100644 --- a/22-missing.rb +++ b/22-missing.rb @@ -1,9 +1,24 @@ # 给定一阵列内含数字,请输出 0~9 中不见的数字 def find_missing(arr) - # ... + result = [] + flag = [0,0,0,0,0,0,0,0,0,0] + + for a in arr + flag[a] = 1 #index 位置为1 + end + + for i in 0..(flag.size-1) + if ( flag[i] == 0 ) + result << i + end + end + + result end -answer = find_missing( [2,2,1,5,8,4] ) +arr = [2,2,1,5,8,4] + +answer = find_missing( arr ).inspect -puts answer.to_s # 应该是 [0,3,6,7,9] +puts answer # 应该是 [0,3,6,7,9] From 0f94e0a9aedf0700db8915a2ea941daa12c38a3c Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 22:54:56 +0800 Subject: [PATCH 22/30] 23-hash-max.rb --- 23-hash-max.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/23-hash-max.rb b/23-hash-max.rb index 6fb227e..443117d 100644 --- a/23-hash-max.rb +++ b/23-hash-max.rb @@ -1,7 +1,8 @@ -# 给定一 Hash,输出有最大 value 的 key +#给定一 Hash,输出有最大 value 的 key def find_max(hash) - # ... + result = hash.values.max + hash::key(result) end h = { @@ -11,9 +12,7 @@ def find_max(hash) "d" => 80, "e" => 10 } - +# answer = find_max(h) puts "有最大 value 的是 #{answer}" # 应该是 d - - From 42e1910ea2a7e27e27b15c3f640a0649e7bf1bfd Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 23:06:35 +0800 Subject: [PATCH 23/30] 24-hash-even.rb --- 24-hash-even.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/24-hash-even.rb b/24-hash-even.rb index 9da9605..c2c880b 100644 --- a/24-hash-even.rb +++ b/24-hash-even.rb @@ -2,7 +2,17 @@ def find_even_keys(hash) - # ... (请回传一个数组) + result1 = [] + h = hash.values + for i in h + result1 << i if i % 2 == 0 + end + + result2 = [] + for j in result1 + result2 << hash::key(j) + end + result2 end @@ -17,5 +27,3 @@ def find_even_keys(hash) answer = find_even_keys(h) puts "有偶数 value 的 keys 有 #{answer}" # 应该是数组 [b,d,e] - - From 52462a697a6db27458b8e6764c47185722943bb3 Mon Sep 17 00:00:00 2001 From: fengkai Date: Wed, 4 Oct 2017 23:21:55 +0800 Subject: [PATCH 24/30] 25-hash-count --- 25-hash-count.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/25-hash-count.rb b/25-hash-count.rb index 2167335..777c767 100644 --- a/25-hash-count.rb +++ b/25-hash-count.rb @@ -3,8 +3,9 @@ def count(arr) h = {} - arr.each do |i| - # ... + arr.uniq.each do |i| + a = arr.count(i) + h[i] = a end return h # 回传一个 hash @@ -15,4 +16,3 @@ def count(arr) answer = count(arr) puts answer # 答案应该是 {"a"=>3, "d"=>6, "c"=>5, "b"=>1, "e"=>5} - From 7d0e90efbb8ae9e40683469ba3ad838bdcaa1902 Mon Sep 17 00:00:00 2001 From: fengkai Date: Thu, 5 Oct 2017 00:13:03 +0800 Subject: [PATCH 25/30] 26-hash-filter --- 26-hash-filter.rb | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/26-hash-filter.rb b/26-hash-filter.rb index 51ade64..20b62c1 100644 --- a/26-hash-filter.rb +++ b/26-hash-filter.rb @@ -7,10 +7,30 @@ { "name" => "Steven", "age" => 22 }, { "name" => "Vincent", "age" => 6 }, ] +def filter_and_sort(arr) -# .... + h = [] + arr.each do |a| + if a["age"] > 18 + h << a + end + h + end -puts "所有成年人,并由小到大: _________" + (0..h.length-1).each do |i| + minname, index = h[i], i + (i+1..h.length-1).each do |j| + minname, index = h[j], j if h[j]["age"] < minname["age"] + h[i], h[index] = h[index], h[i] #这句和 21-selection-sort 一样 ,但此句未理解 + end + end + return h + +end + +h = filter_and_sort(arr) + +puts "所有成年人,并由小到大: #{h}" # 答案应该是 #[ From 23cd6404f8dcd5ad444940875bc7e0994474be51 Mon Sep 17 00:00:00 2001 From: fengkai Date: Thu, 5 Oct 2017 21:16:12 +0800 Subject: [PATCH 26/30] line24 can not understand --- 26-hash-filter.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/26-hash-filter.rb b/26-hash-filter.rb index 20b62c1..4c86a8e 100644 --- a/26-hash-filter.rb +++ b/26-hash-filter.rb @@ -38,3 +38,21 @@ def filter_and_sort(arr) # { "name" => "Peter", "age" => 30 }, # { "name" => "David", "age" => 45 } #] + +# 另一种思路 +# ages = [] +# arr.each do |h| +# ages.push(h["age"]) +# end +# ages = ages.sort +# newArr = [] +# for age in ages +# arr.each do |h| +# if age == h["age"] +# newArr.push(h) +# break +# end +# end +# end +# +# puts "所有成年人,并由小到大: #{newArr}" From bc86df2159656c32382a8cd21e4aebf5f3bd56e2 Mon Sep 17 00:00:00 2001 From: fengkai Date: Thu, 5 Oct 2017 21:44:14 +0800 Subject: [PATCH 27/30] 27-class --- 27-class.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/27-class.rb b/27-class.rb index 8cec2c9..138c333 100644 --- a/27-class.rb +++ b/27-class.rb @@ -1,5 +1,10 @@ class Person - # ... + attr_accessor :first_name + attr_accessor :last_name + + def greet + puts "Hi, #{first_name}, #{last_name} " + end end p1 = Person.new @@ -11,6 +16,3 @@ class Person p2.first_name = "William" p2.last_name = "Zhang" p2.greet # 输出 "Hello, William Zhang" - - - From d2a6af14c576132adce66803bf462052a01d5873 Mon Sep 17 00:00:00 2001 From: fengkai Date: Thu, 5 Oct 2017 22:43:34 +0800 Subject: [PATCH 28/30] 28-word-count --- 123.rb | 1 + 28-word-count.rb | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 123.rb diff --git a/123.rb b/123.rb new file mode 100644 index 0000000..9388568 --- /dev/null +++ b/123.rb @@ -0,0 +1 @@ +yangjiajing \ No newline at end of file diff --git a/28-word-count.rb b/28-word-count.rb index 2643123..cdcc464 100644 --- a/28-word-count.rb +++ b/28-word-count.rb @@ -2,4 +2,13 @@ doc = File.read("wordcount.txt") -# ... +words = doc.split # words = doc.split(" ") + +words_count = {} + +for w in words + words_count[w] ||= 0 + words_count[w] += 1 +end + +puts(words_count) From b5847efd91f48b29f1584311889b983f9d7bd880 Mon Sep 17 00:00:00 2001 From: fengkai Date: Thu, 5 Oct 2017 23:38:00 +0800 Subject: [PATCH 29/30] 29-todos --- 123.rb | 1 - 29-todos.rb | 27 ++++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) delete mode 100644 123.rb diff --git a/123.rb b/123.rb deleted file mode 100644 index 9388568..0000000 --- a/123.rb +++ /dev/null @@ -1 +0,0 @@ -yangjiajing \ No newline at end of file diff --git a/29-todos.rb b/29-todos.rb index 0bddde2..5c907f8 100644 --- a/29-todos.rb +++ b/29-todos.rb @@ -1,5 +1,4 @@ # 简易 Todo 代办事项应用 - text = File.read("todos.txt") todos = [] @@ -17,17 +16,35 @@ if command == "add" print "请输入代办事项: " - # ... + + task = gets.chomp + todos << task + todos.each_with_index do |todo, index| + puts "#{index}: #{todo}" + end + + elsif command == "remove" print "请输入要删除的编号: " - # ... + + task = gets.chomp + todos.delete_at(task.to_i) + todos.each_with_index do |todo, index| + puts "#{index}: #{todo}" + end + elsif command == "save" puts "存盘离开" - # ... + File.open("todos.txt", "w+") do |f| + todos.each do |todo| + f << todo + f << "\n" + end + end + break; else puts "看不懂,请再输入一次" end end - From fcda3ebe649f6bb995049310a9606d4f4532383e Mon Sep 17 00:00:00 2001 From: fengkai <328458211@qq.com> Date: Thu, 5 Oct 2017 23:49:32 +0800 Subject: [PATCH 30/30] for changing name --- README.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.txt diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..0f0b1c8 --- /dev/null +++ b/README.txt @@ -0,0 +1 @@ +for changing name