你的任务是检查水池中的水量。您必须创建一个程序,该程序接受由整数组成的10 by 10网格表示的输入,其高度从A=1到拉丁字母的Z=26不等。找出每个池子能容纳的水量。
你必须输出水池能容纳的水量。池外的高度为0,因此池边缘的细胞上没有水。水不会斜向漏水。
ZZZZZZZZZZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZAAAAAAAAZ
ZZZZZZZZZZ
OR
[[26, 26, 26, 26, 26, 26, 26, 26, 26, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 1, 1, 1, 1, 1, 1, 1, 1, 26], [26, 26, 26, 26, 26, 26, 26, 26, 26, 26]]
->
1600
ZZZZZZZZZZ
ZRRRRRRRRZ
ZRRRRRRRRZ
ZRRRRRRRRZ
ZFFFFFFFFZ
ZDDDDDDDDZ
ZDDDDDDDDZ
ZDDDDDDDDZ
ZDDDDDDDDZ
ZZZZZZZZZZ
OR
[[26, 26, 26, 26, 26, 26, 26, 26, 26, 26], [26, 18, 18, 18, 18, 18, 18, 18, 18, 26], [26, 18, 18, 18, 18, 18, 18, 18, 18, 26], [26, 18, 18, 18, 18, 18, 18, 18, 18, 26], [26, 6, 6, 6, 6, 6, 6, 6, 6, 26], [26, 4, 4, 4, 4, 4, 4, 4, 4, 26], [26, 4, 4, 4, 4, 4, 4, 4, 4, 26], [26, 4, 4, 4, 4, 4, 4, 4, 4, 26], [26, 4, 4, 4, 4, 4, 4, 4, 4, 26], [26, 26, 26, 26, 26, 26, 26, 26, 26, 26]]
->
1056
XXXXXXXXXX
XSSSSRAAAX
XSSSSRAAAX
XSSSSRAAAX
XXXXXCXXXX
XSSSSCBBBX
XSSSSCBBBX
RSSSSCBBBX
XSSSSCBBBX
XXXXXXXXXX
OR
[[24, 24, 24, 24, 24, 24, 24, 24, 24, 24], [24, 19, 19, 19, 19, 18, 1, 1, 1, 24], [24, 19, 19, 19, 19, 18, 1, 1, 1, 24], [24, 19, 19, 19, 19, 18, 1, 1, 1, 24], [24, 24, 24, 24, 24, 3, 24, 24, 24, 24], [24, 19, 19, 19, 19, 3, 2, 2, 2, 24], [24, 19, 19, 19, 19, 3, 2, 2, 2, 24], [18, 19, 19, 19, 19, 3, 2, 2, 2, 24], [24, 19, 19, 19, 19, 3, 2, 2, 2, 24], [24, 24, 24, 24, 24, 24, 24, 24, 24, 24]]
->
449
ZZZZZZZZZZ
RAAAAZEEEZ
RAAAAZEEEZ
RAAAAZEEEZ
RAAAAZEEEZ
RAAAAAEEEZ
RAAAAZEEEZ
RAAAAZEEEZ
QAAAAZEEEZ
ZZZZZZZZZZ
OR
[[26, 26, 26, 26, 26, 26, 26, 26, 26, 26], [18, 1, 1, 1, 1, 26, 5, 5, 5, 26], [18, 1, 1, 1, 1, 26, 5, 5, 5, 26], [18, 1, 1, 1, 1, 26, 5, 5, 5, 26], [18, 1, 1, 1, 1, 26, 5, 5, 5, 26], [18, 1, 1, 1, 1, 1, 5, 5, 5, 26], [18, 1, 1, 1, 1, 26, 5, 5, 5, 26], [18, 1, 1, 1, 1, 26, 5, 5, 5, 26], [17, 1, 1, 1, 1, 26, 5, 5, 5, 26], [26, 26, 26, 26, 26, 26, 26, 26, 26, 26]]
->
816输入以二维整数列表的形式出现。有字母的那个只是一个参考(如果你想要的话,你可以把它作为字母输入)
对于第一个测试用例:只有一个框,即26或A's的10行,因为这个池是池的底部,而Z是池的顶部,所以26-1=25是整个池的深度。以25*8*8=1600为例,因为Z是墙,所以只占用8*8区域。
测试用例3在R的外层行有一个X,所以一定要注意水位不能超过这个值。
测试用例4:
最低的墙是Q,所以我们把17-1=16作为A=1最大高度的最高水位。我们取16*4*8=512,下一个是Z墙,但是有一个A突破了这个墙,它把所有的E和高度16的墙壁连接起来,所以E的最高水位是17-5=12,然后取12*3*8=288。最后,我们采用512+12+288=816(12来自于Z墙内的额外A )。
把这个挑战想象成一个大盒子里的许多不同的盒子里的水。
这是密码-高尔夫,所以最短的代码获胜!
这个谜题的代码名社区的学分!拼图链接
发布于 2022-02-13 19:13:53
⊞υE⁺Aθ⁰WS⊞υE⁺Aι⌕ακ≔EυEιφθ≔⟦E³¦⁰⟧ηFη«≔⊟ιδ≔⊟ιε≔⌈⟦⊟ι§§υδε⟧ζ¿‹ζ§§θδε«§≔§θδεζF²F²⊞ηE⟦ζεδ⟧⁺μ∧⁼κ⊖ν⊖⊗λ»»I⁻ΣEθΣιΣEυΣι在网上试试!链接是详细的代码版本。解释:
⊞υE⁺Aθ⁰WS⊞υE⁺Aι⌕ακ在池中阅读,但添加零深度的边框。
≔EυEιφθ尝试将池填充到1000的高度。
≔⟦E³¦⁰⟧ηFη«首先从左上角开始搜索游泳池的宽度。
≔⊟ιδ≔⊟ιε让下一个协调员检查一下。
≔⌈⟦⊟ι§§υδε⟧ζ获取触发此搜索的邻近水位的高度,但将其限制在单元格的高度。
¿‹ζ§§θδε«如果这低于水的当前高度,那么:
§≔§θδεζ更新水深。
F²F²在邻近的细胞上循环。
⊞ηE⟦ζεδ⟧⁺μ∧⁼κ⊖ν⊖⊗λ将它们添加到要检查的单元格搜索列表中。
»»I⁻ΣEθΣιΣEυΣι从水的高度减去细胞的高度,然后输出总数。
发布于 2022-02-07 12:24:46
发布于 2022-02-07 07:17:49
import numpy as np
r=range
l=np.array([[ord(j)-65for j in input()]for i in r(10)])
p=l.copy()
p[1:-1,1:-1]=25
for _ in r(11):
for i in r(1,9):
for j in r(1,9):p[i][j]=max(min([p[i+a][j+b]for a,b in[(-1,0),(0,1),(0,-1),(1,0)]]),l[i][j])
print(sum(sum(p-l)))https://codegolf.stackexchange.com/questions/242453
复制相似问题