总结黑客银行问题
(1(绘制三角形1
p(5(:
* * * * *
* * * *
* * *
* *
*
这是一个例子,我必须制作这个p(20(
WITH RECURSIVE stars (n,star) AS(
SELECT 39,LEFT('* * * * * * * * * * * * * * * * * * * *',39)
UNION ALL
SELECT n-2,LEFT('* * * * * * * * * * * * * * * * * * * *',n-2)
FROM stars
WHERE n>1
)
SELECT star
FROM stars
我用这种方法解决了绘制三角形1的问题。
(2(绘制三角形2
p(5(:
*
* *
* * *
* * * *
* * * * *
这是一个例子,我必须制作这个p(20(
然而,这在Draw THE Triangle 2 中不起作用
WITH RECURSIVE stars (n,star) AS(
SELECT 1, LEFT('* * * * * * * * * * * * * * * * * * * *',1)
UNION ALL
SELECT n+2, LEFT('* * * * * * * * * * * * * * * * * * * *',n+2)
FROM stars
WHERE n<38
)
SELECT star
FROM stars
WITH RECURSIVE stars (n,star) AS(
SELECT 1,'*'
UNION ALL
SELECT n+1, CONCAT(star,' *')
FROM stars
WHERE n<20
)
SELECT star
FROM stars
我试着像Triange 1一样更改数字来使用LEFT((,但HackerBank网站在第1行显示了一条类似"ERROR 1406(22001(:第1行"star"列的数据太长"的消息。在我的个人mysql中,我只得到了OK,但我看不到结果表。
如果数据太长,这是一个错误,我不应该在第一个问题中遇到同样的错误吗?
有什么我不知道的吗?
仔细查看"三角形1";以及";三角形2";。
有什么区别?没错;三角形2";查询的顺序相反。
查询中的";三角形1";定义行的顺序?没错,它是n
。
我如何修改"的查询;三角形1";以便它以相反的顺序输出行?没错,因为第一行的n
的值是39,最后一行的值是1(行按n
降序排列(,所以只需通过添加ORDER BY n
来反转行的顺序。
因此查询";三角形2";应该看起来像
WITH RECURSIVE stars(n, star) AS(
SELECT 39, LEFT('* * * * * * * * * * * * * * * * * * * *', 39)
UNION ALL
SELECT n-2, LEFT('* * * * * * * * * * * * * * * * * * * *', n-2)
FROM stars
WHERE n > 1
)
SELECT star
FROM stars
ORDER BY n
只需检查