-
Notifications
You must be signed in to change notification settings - Fork 0
120821/ruby_test_question
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
=begin 这是一些关于ruby基本算法的文件 1.入门算法: 输出一个 宽度为m , 高度为n 的图形。 需要实现这个函数: pretty_print(width, height, char), 该函数具备的功能是: pretty_print(5, 2, 'a') 会打印下面的形状: (每行5个a, 合计2行) aaaaa aaaaa pretty_print(3, 4, 'b') # 每行3个b, 合计4行 bbb bbb bbb bbb 对应文件:q1_print_m_x_n.rb q1_print.rb q1_print2.rb 2.入门计算,计算n以内的质数的交替计算绝对值的和与差 such as special_sum(10) => 1,2,3,5,7 的和 首先,数字是1,2,3,5,7 然后我们做变换,1,2,-3,5,-7 (正,负,正,负,正 ...) 然后加和,1-2+3-5+7=4 4 ,就是我们需要的答案 对应文件:q2_special_sum.rb q2_sum_special_loop.rb q2_special_sum_3.rb q2_special_sum_2.rb 3.入门算法: 计算n 之内的质数的和 such as sum_prime(10) # => 1,2,3,5,7 的和 sum_prime(20) # => 1,2,3,5,7,11,13,17,19 的和 对应文件:q3_sum_prime.rb q3_test_prime_sum.rb 4算法: 输出小于n 的所有的质数 质数: 只能被1 或者 自身整除。 需要实现这样的函数: print_prime(n) n 为最大值。 打印 0 ~ n 之间的所有质数。 例如: print_prime(10) # => 1,2,3,5,7 (多行输出就行,不用非得同行输出用逗号连接) print_prime(20) # => 1,2,3,5,7,11,13,17,19 对应文件:q4_prime.rb 5.入门算法: 获得小于N的所有奇数 需要实现这样的函数: print_odd_number(n) # n为最大值 例如: print_odd_number(10) # => 1,3,5,7,9 对应文件:q5_odd_number.rb 6.入门算法:打印一个hash, key 为数字,value为可以被整除的被除数 例如: prime_numbers(5) , 结果 { 1: [1], 2: [1,2], 3: [1,3], 4: [1,2,4], 5: [1,5] } 对应文件:q6_prime_with_comment.rb 7.入门算法: 对数组去重, 并且计算出现的次数 需要实现这样的函数: 对指定的数组进行分析,打印出某个元素出现的次数。 (提示:使用hash) print_occur_times(my_array) 例如: my_array = [1,2,3,3,3,4,4,5,5,5,5,5,5,8,9,9] print_occur_times(my_array) 结果: 1: 1 # 1出现1次 2: 1 # 2出现1次 3: 3 # 3出现3次 4: 2 $ 4出现2次。 5: 6 8: 1 9: 2 对应文件:q7_find_element_occur_times.rb 8.程序: 计算 1 , 2, 3, ... 100 的和 提示: 会用到 : 数组, 循环 第一个方法: 循环相加。 (不用递归函数) 第二个方法 使用递归函数 使用loop .. do 实现 使用 for 循环实现 使用 while 实现 要求 sum(1, 3000) # => 4501500 对应文件:/q8_sum_while_for_loop/test_sum.rb while_sum.rb for_sum.rb loop_sum.rb 9.入门算法:动态创建一个二维hash 实现这样的方法: 可以动态创建一个二维Hash, 内容如下 generate_hash(3) 获得: { "parent1": { "child1": "value1" }, "parent2": { "child2": "value2" }, "parent3": { "child3": "value3" } } 对应文件:q9_hash.rb 10.入门算法:动态创建一个二维Array 实现这样的方法: 可以动态创建一个二维Array, 内容如下 generate_array(4) 获得: [ [1], [2,2], [3,3,3], [4,4,4,4] ] 再如: generate_array(5) 获得: [ [1], [2,2], [3,3,3], [4,4,4,4], [5,5,5,5,5] ] 对应文件:q10_two_dimensional_hash.rb 11.入门算法:动态创建一个一维Hash 实现这样的方法: 可以动态创建一个hash, 内容如下 generate_hash(3) 获得: { "key1" => "string 1", "key2" => "string 2", "key3" => "string 3", } 对应文件:q11_generate_hash.rb 12.入门算法:动态创建一个数组 实现这样的方法: 用户输入 n, 可以动态的实现一个长度为n 的数组,每个元素的内容为 (当前元素的index + 1) x 3, 例如: generate_array(3) # => [3,6,9] ,这个数组的3 = (0 + 1 ) x 3, 6 = (1 + 1 )x 3 ... generate_array(5) # => [3,6,9,12,15] 对应文件:q12_generate_array.rb 13. 学习ruby中的hash show_my_hash() # 显示一个 hash,包含的内容为: { "key1" => "one", "luleluelue" => ">_<" } show_my_hash("lueluelue") # 加上参数,并且该参数为 对应的key的时候, 那么会返回 对应的value 实现多维的hash my_multiple_hash() 返回: { "key1" => "one", "key2" => { { "child_key1" => "child value1", "child_key2" => "child value2" } } } 对应文件:q13_my_hash_child_key.rb 14.题目1 使用ruby的数组实现下面的方法调用: show_my_array() # => 参数是空的话,返回整个数组: [1,2,3, "aa", "bb", 877] show_my_array(3) # => 参数不是空的话,返回该数组的第N个元素 "aa" show_my_array(5) # => 877 题目2 (提示: 使用ruby的数组方法: sort() ,然后取得第一个或者最后一个的值) my_array = [3,5,6,6,6,7,9,8,1,8,9,9] get_min(my_array) # => 获得最小的元素 1 my_array = [31,8,9,2, 9] get_min(my_array) # => 获得最小的元素 2 get_max(my_array) # => 获得最大的元素 31 对应文件:/hash/q14_my_array_not_nil_n.rb q14_my_array_max_min.rb 15.排序 只使用 比较符号 ( > , < ) 和条件判断 和 循环语句,对一个数组进行排序。 可以多次定义变量,但是不能定义多个方法(所有代码都写在一个 (大部分)或者2个方法中) 不能使用 [1,2,3,5,8].sort 这样的方法 例如: my_sort([4,8,9,1,2,5] ) # => [1,2,4,5,8,9] 对应文件:recursive.rb 16.使用递归方法,计算n的阶乘 例如 n = 3 结果为 3 x 2 x 1 = 6 n = 5 . 结果为 5 x 4 x 3 x 2 x 1 = ... 对应文件:recursive.rb 17.使用递归方法,计算n 的阶乘 对应文件:q15_q10_javascript.html 18.操作数组: 把第一个元素和第二个元素调换位置,返回修改后的数组内容 参数1: 数组 参数2: 第一个元素的位置¶ 参数3: 第二个元素的位置 要求:不创建新的数组,修改原有的数组, 获得结果。 switch_position([1,2,3], 0, 1) # => [2,1,3] 对应文件:q16_switch.html 19.根据已有的数组,创建一个新的数组, 内容为已有的数组的元素 + 2 根据已有的hash,创建一个新的hash, value为已有的hash的value + " new value" 对应文件: q17_recusion_js.html =end
About
Ruby basic algorithm
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published