首页
学习
活动
专区
圈层
工具
发布

ASCII景观
EN

Code Golf用户
提问于 2014-01-20 22:30:13
回答 6查看 1.2K关注 0票数 34

目标:编写一个生成漂亮(?)艺术景观和天际线!

您的程序只有一个输入:由字符0123456789abc的任意组合/重复组成的字符串。

对于每个输入字符,输出一条垂直行,如下所示:

代码语言:javascript
复制
         .
        ..
       ...
      oooo
     ooooo
    OOOOOO
   OOOOOOO
  XXXXXXXX
 XXXXXXXXX
XXXXXXXXXX

0123456789

字母abc后面跟着一个数字n,然后画垂直线n,底部分别有1,2或3个孔(空格)。

示例

克莱斯勒大厦

输入:2479742

代码语言:javascript
复制
   .
   .
  ...
  ooo
  ooo
 OOOOO
 OOOOO
XXXXXXX
XXXXXXX
XXXXXXX

The Taj Mahal

输入:0804023324554233204080

代码语言:javascript
复制
 .                  .
 .                  .
 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

代码语言:javascript
复制
      ..
      ..
      ..
      oo
     oooo
     OOOO
    OOOOOO
   XXX  XXX
 XXX      XXX
XXX        XXX

您可以假设输入不是空的,并且是格式良好的。

A+Z++,任何语言都是可以接受的。

这是代码-高尔夫:最短的源代码获胜。

如果规则中有什么不清楚的地方,请在下面的评论中提问。

有乐趣,并捕获数百米高的结构在几个字节!

(别忘了在你的解决方案中包括你最喜欢的建筑)

P.S.:不,你不能从互联网下载/访问数据,用你的文件名作为数据等等。要公平,并且只使用你的密码-高尔夫技巧。

EN

回答 6

Code Golf用户

发布于 2014-01-22 03:31:36

Python2.7- 186

可能会更短..。

代码语言:javascript
复制
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)

样本运行:

代码语言:javascript
复制
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        XXX

悉尼海港大桥

代码语言:javascript
复制
a1a13443a1a2a3a4a5a6a6a7a7a8a8a8a8a9a9a9a9a9a9a8a8a8a8a7a7a6a6a5a4a4a3a2a13443a1a1
                   ......
               ..............
             ..................
           oooooooooooooooooooooo
          oooooooooooooooooooooooo
   00    000000000000000000000000000    00
  0000  00000000000000000000000000000  0000
  XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXX                                 XXXX

金门桥/思科标志

代码语言:javascript
复制
a2a0a0a4a0a06a0a0a4a0a0a2a0a0a4a0a06a0a0a4a0a0a2



      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

顺便问个好问题!

票数 6
EN

Code Golf用户

发布于 2021-06-25 22:39:24

果冻,33字节

代码语言:javascript
复制
~kµṪV‘RרaiⱮ0xƲ)Ṗz0Ṛị“XXXOOoo... 

在网上试试!

返回行列表的完整程序。如果这是不可接受的,+2个字节

注意后面的空格。包括我最喜欢的:

代码语言:javascript
复制
.                 .
..               ..
...             ...
oooo           oooo
ooooo         ooooo
OOOOOO       OOOOOO
OOOOOOO     OOOOOOO
XXXXXXXX   XXXXXXXX
XXXXXXXXX XXXXXXXXX
XXXXXXXXXXXXXXXXXXX

是如何工作的

代码语言:javascript
复制
~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... "
票数 2
EN

Code Golf用户

发布于 2019-04-23 15:45:50

杰夫特 -R,36字节

代码语言:javascript
复制
óȦnãÒXÌ î"XXXOOoo..."hSpXÎnD)s9Ãz3

试试看

代码语言:javascript
复制
óȦ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 newlines
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/18967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档