目标:编写一个生成漂亮(?)艺术景观和天际线!
您的程序只有一个输入:由字符0123456789abc的任意组合/重复组成的字符串。
对于每个输入字符,输出一条垂直行,如下所示:
.
..
...
oooo
ooooo
OOOOOO
OOOOOOO
XXXXXXXX
XXXXXXXXX
XXXXXXXXXX
0123456789字母abc后面跟着一个数字n,然后画垂直线n,底部分别有1,2或3个孔(空格)。
克莱斯勒大厦
输入:2479742
.
.
...
ooo
ooo
OOOOO
OOOOO
XXXXXXX
XXXXXXX
XXXXXXX输入:0804023324554233204080
. .
. .
o o
o oo o
O O OOOO O O
O O OO OOOO OO O O
X X XXXXXXXXXXXX X X
X X XXXXXXXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXX埃菲尔铁塔
输入:011a2b3b5c9c9b5b3a2110
..
..
..
oo
oooo
OOOO
OOOOOO
XXX XXX
XXX XXX
XXX XXX您可以假设输入不是空的,并且是格式良好的。
从A+到Z++,任何语言都是可以接受的。
这是代码-高尔夫:最短的源代码获胜。
如果规则中有什么不清楚的地方,请在下面的评论中提问。
有乐趣,并捕获数百米高的结构在几个字节!
(别忘了在你的解决方案中包括你最喜欢的建筑)
P.S.:不,你不能从互联网下载/访问数据,用你的文件名作为数据等等。要公平,并且只使用你的密码-高尔夫技巧。
发布于 2014-01-22 03:31:36
可能会更短..。
x=[]
l=iter(raw_input())
a="XXX00oo..."
for i in l:
try:i=int(i);o=0
except:o=" abc".index(i);i=int(next(l))
x.append(" "*o+a[o:i+1]+" "*(9-i))
for i in zip(*x)[::-1]:print''.join(i)样本运行:
08040233245542332040800000247974200000011a2b3b5c9c9b5b3a2110
. ..
. . . ..
. . ... ..
o o ooo oo
o oo o ooo oooo
0 0 0000 0 0 00000 0000
0 0 00 0000 00 0 0 00000 000000
X X XXXXXXXXXXXX X X XXXXXXX XXX XXX
X X XXXXXXXXXXXX X X XXXXXXX XXX XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXa1a13443a1a2a3a4a5a6a6a7a7a8a8a8a8a9a9a9a9a9a9a8a8a8a8a7a7a6a6a5a4a4a3a2a13443a1a1
......
..............
..................
oooooooooooooooooooooo
oooooooooooooooooooooooo
00 000000000000000000000000000 00
0000 00000000000000000000000000000 0000
XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX XXXXa2a0a0a4a0a06a0a0a4a0a0a2a0a0a4a0a06a0a0a4a0a0a2
o o
o o
0 0 0 0 0 0
0 0 0 0 0 0
X X X X X X X X X
X X X X X X X X X
X X顺便问个好问题!
发布于 2021-06-25 22:39:24
~kµṪV‘RרaiⱮ0xƲ)Ṗz0Ṛị“XXXOOoo... 返回行列表的完整程序。如果这是不可接受的,+2个字节。
注意后面的空格。包括我最喜欢的:
. .
.. ..
... ...
oooo oooo
ooooo ooooo
OOOOOO OOOOOO
OOOOOOO OOOOOOO
XXXXXXXX XXXXXXXX
XXXXXXXXX XXXXXXXXX
XXXXXXXXXXXXXXXXXXX~kµṪV‘RרaiⱮ0xƲ)Ṗz0Ṛị“XXXOOoo... - Main link. Takes a string on the left
~ - Bitwise NOT. This maps digits d to ~d and non-digits to 0
k - Partition the string after falsey values
This groups the string as we want, with a trailing []
µ ) - Over each element, either [L, x] or [x]:
Ṫ - Extract x, modifying the element
V - Evaluate as a digit
‘ - Increment
R - Create a range
Ʋ - Last 4 links as a monad f([L]) or f([]):
ØaiⱮ - Index in the alphabet
0x - Get that many zeros
If the element was [x], this yields []
If the element was [L, x], this returns 1, 2 or 3 zeros, depending on L
× - Multiple elementwise, zeroing the first 1,2 or 3 elements in the range if L is in the element
Ṗ - Remove the trailing [] element
z0 - Transpose, padding with zeros
Ṛ - Reverse
ị“XXXOOoo... - Index into "XXXOOoo... "发布于 2019-04-23 15:45:50
-R,36字节óȦnãÒXÌ î"XXXOOoo..."hSpXÎnD)s9Ãz3óȦnãÒXÌ î"..."hSpXÎnD)s9Ãz3 :Implicit input of string
ó :Partition at
È :Characters that return true when passed through the following function
¦ : Test for inequality with
n : Convert to number
à :End function
£ :Map each X
Ò : Bitwise increment
XÌ : Last character of X
î : Slice the following to that length
"..." : Literal string
h : Replace as many characters as necessary at the start of that string with
S : Space
p : Repeat
XÎ : First character of X
n : Convert from base
D : 14
) : End repeat
s9 : Slice off the first 9 characters
à :End map
z3 :Rotate clockwise by 90 degrees 3 times
:Implicit output, joined by newlineshttps://codegolf.stackexchange.com/questions/18967
复制相似问题