我已经能够提出一个完全为实心的星形三角形,但是我很难创建一个“空心的”和一个数字,两者都会以用户输入的数字递增。有帮助吗?
答案 0 :(得分:1)
1st。重复行
第二。仅在行[0,i]的边界内放置“ *”,并在其中填充“”:
3rd:第一种和最后一种(n)种情况例外
n = 8
puts '*'
(n-2).times do |i|
puts '*' + ' ' * (i) + '*'
end
puts '*' * n if n > 1
答案 1 :(得分:1)
这是我的解决方案:
private static final Map<String, Handler> nameToHandler = new HashMap<>();
static {
nameToHandler.put("Foo", new FooHandler());
nameToHandler.put("Bar", new BarHandler());
}
答案 2 :(得分:1)
def bt(n)
1.upto(n) do |i|
puts case i
when 1
'*'
when n
'*'*n
else
"*#{' '*(i-2)}*"
end
end
end
bt 8
*
**
* *
* *
* *
* *
* *
********
ROW = [*1..9, *'A'..'Z'].join
#=> "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def lt(n)
1.upto(n) { |i| puts ROW[0,i] }
end
lt 8
1
12
123
1234
12345
123456
1234567
12345678
lt 22
1
12
123
1234
12345
123456
1234567
12345678
123456789
123456789A
123456789AB
123456789ABC
123456789ABCD
123456789ABCDE
123456789ABCDEF
123456789ABCDEFG
123456789ABCDEFGH
123456789ABCDEFGHI
123456789ABCDEFGHIJ
123456789ABCDEFGHIJK
123456789ABCDEFGHIJKL
123456789ABCDEFGHIJKLM
ROW = ''*10
lt 6
答案 3 :(得分:0)
您可以为第二个三角形创建一个具有两个循环的简单方法:
def print_numbers_right_triangle(height)
1.upto(height) do |row|
1.upto(row) do |i|
print i
end
puts
end
end
print "Plese enter the height of the triangle:"
print_numbers_right_triangle(gets.strip.to_i)
用法示例:
Plese enter the height of the triangle: 8
1
12
123
1234
12345
123456
1234567
12345678
答案 4 :(得分:0)
其他选项,只是为了好玩。
跟随
n, cat, hyp = 4, "", ""
n.times do |n|
a = Array.new(n+1){' '}
a[0], a[-1] = cat, hyp
puts a.join
end
它返回:
#
#
#
#
n = 10
r = [*0..9, *'a'..'z']
n.times do |n|
puts r[0..n].join
end
返回
# 0
# 01
# 012
# 0123
如果对数组r.shuffle[0..n].join
进行混洗,则会得到随机输出:
# t
# 26
# ce0
# zqiw
some_emotics = (0..9).each_with_object([]) { |n, o| o << "1F96#{n}".to_i(16) }.pack 'U*'
n.times do |n|
puts some_emotics.split("").shuffle[0..n].join
end
获得:
#
#
#
#