堆叠式数字楼梯


17

给定正整数和,如下所述输出列和行文本。^ h w ^ ^ hwHwH

第一行以11 0秒开始,第二行以10 1秒开始,第三行以9 2秒开始,依此类推,在第十行以2 9秒开始。在前十行中的每行上,在连续运行连续数字之后,第二个最低位出现两次,第二个最低位出现两次之后,此模式将永远重复。如果0出现s,则其后的数字始终为9s。

第十行下方的行与紧接在其上方的行相同,但向右移一行。如果新数字不位于其自身的另一个实例旁边,则它与最左上的数字相同。否则,它是下一个最高的数字(从9循环回0)。

前元素如下:11×10

00000000000
11111111110
22222222211
33333333221
44444443322
55555544332
66666554433
77776655443
88877665544
99887766554

这是带有彩色文本的图像,以使图案更清晰。

固定文字

如果您需要减少列数/行数,则只需裁剪以上文本即可。

如果您需要产生更多的列/行,则应扩展现有的楼梯。如果更多的列/行增加了连续数字的新阶梯,则应从整数中循环选择数字。因此对于输入,输出应为1513

000000000009988
111111111100998
222222222110099
333333332211009
444444433221100
555555443322110
666665544332211
777766554433221
888776655443322
998877665544332
099887766554433
009988776655443
100998877665544

这是带有颜色的文本图像:

扩展文字

规则

  • 输出可以通过任何方便的方法给出。
  • 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
  • 如果愿意,可以返回行列表。
  • 您可以根据需要返回2D数字数组或数字列表。
  • 不允许出现标准漏洞

最短的代码胜出。

测试用例

输入为测试用例的。wH

1,1
0

3,2 000 111

20,1 00000000000998877665

11,10 00000000000 11111111110 22222222211 33333333221 44444443322 55555544332 66666554433 77776655443 88877665544 99887766554

15,13 000000000009988 111111111100998 222222222110099 333333332211009 444444433221100 555555443322110 666665544332211 777766554433221 888776655443322 998877665544332 099887766554433 009988776655443 100998877665544


8
我不太了解这种模式。您能否具体解释该模式,而不是期望从示例中推断出该模式。有些人认为示例很有帮助,但是我并没有真正从示例中确切看到模式是如何遵循的。
发布Rock Garf Hunter,

@WW谢谢,我在顶部添加了更详尽的解释
dylnan

1
1234

@qwr哦,太好了,不知道我们能做到这一点。您用什么命令执行的?
dylnan '18

\ color {red} {text}我相信
qwr

Answers:


7

Python 3,94 93 78 77 74字节

lambda x,y:[[[(j-i+10)//2%10,j][j+i<9]for i in range(x)]for j in range(y)]

来自dylnan的 -1个字节

通过返回列表列表而不是从xnor打印来获得-15个字节

-1通过切换的顺序字节的(j-i+10)//2%10j部分的if-else

通过将- 更改为列表,从Jo King中获得-3个字节。ifelse

在线尝试!


使用lambda函数可保存一个字节: TIO
dylnan

@dylnan谢谢!
pizzapant184 '18

1
这个挑战允许输出数字列表,因此看起来您不需要执行任何打印或连接。
xnor18年


2

画布,14个字节

[⁷{¹∔⁶+»¹m◂@]]

在这里尝试!

在进行此设置时,我注意到在多个位置中Canvas的模数均为负(在这里,这意味着»-地板div 2-向0舍入)。以前的18字节答案(无修复)不再起作用(因为我仅main.js在版本之间保存),但TIO仍然具有旧版本

说明:

[            ]  for 1..input
 ⁷{         ]     for 1..2nd input
   ¹∔               subtract from this loop counter the outer loops one
     ⁶+             add 12
       »            divide by 2, rounded to -∞
        ¹m          minimum of that & the outer loops counter
          ◂@        in the string "0123456789", get the xth char, 1-indexed

2

木炭20 17字节

Eη⭆θ﹪⌊⟦ι÷⁺⁻ιλχ²⟧χ

在线尝试!链接是详细版本的代码。说明:

 η                  Height
E                   Map over implicit range
   θ                Width
  ⭆                 Map over implicit range and join
          ⁻ιλ       Subtract column from row
         ⁺   χ      Add 10
        ÷     ²     Integer divide by 2
       ι            Current row
     ⌊⟦        ⟧    Take the minimum
    ﹪           χ   Modulo by 10
                    Implicitly print each row on its own line

编辑:切换到@dzaima的算法,节省了3个字节。


2

果冻,14 字节

_@þ:2+6«"J$’%⁵

wH

在线尝试!或查看(后格式化的)测试套件

怎么样?

_@þ:2+6«"J$’%⁵ - Link: integer w, integer h
  þ            - outer product using (i.e. [[f(i,j) for i in 1..w] for j in 1..h]):
_@             -   subtraction with swapped arguments (i.e. f(i,j): j-i)
               -   e.g. the 4th row is [3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,...]
   :2          - integer divide by two (vectorises)
               -                       [1, 1, 0, 0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,-6,...]
     +6        - add six (vectorises)
               -                       [7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0,...]
          $    - last two links as a monad:
         J     -   range of length -> [1,2,3,...,h]
        "      -   zip with:
       «       -     minimum (vectorises)
               -                       [4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0,...]
           ’   - decrement (vectorises)
               -                       [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0,-1,...]
             ⁵ - literal ten
            %  - modulo (vectorises)
               -                       [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, 9,...]


2

果冻,19字节

pizzapantNeil使用非常相似的方法。感谢乔纳森·艾伦节省了1个字节。

p’Ḣ_/HḞ+ʋS<9Ɗ?€5s%⁵

在线尝试!


助手链接

_/HḞ+5

这是一个monadic链接(等效于单个参数函数的Jelly),可以使用quick从下一个链接中调用Ç。它接受两个整数的列表,并对其执行以下操作:

_/

减减。

HḞ+5%⁵

将一半减半为整数并加5,然后取模10。

主要链接

p’ḢÇS<9Ɗ?€s

çXÿ

p’

1个[0Xž×[0ÿž

S<9Ɗ?€

对于笛卡尔乘积中的每个对,如果它们的总和小于9,则:

检索该对的头(第一个元素)。除此以外,

Ç

调用该对上的帮助程序链接(如上所述)。

s%⁵

ÿ


您可以将mod 10移至末尾,然后内联帮助程序以保存一个字节–用 p’Ḣ_/HḞ+ʋS<9Ɗ?€5s%⁵p’Ḣ_/:2+ʋS<9Ɗ?€5s%⁵或,用单子保存p’Ḣ_/:2+5ƲS<9Ɗ?€s%⁵
Jonathan Allan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.