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

画心形
EN

Code Golf用户
提问于 2014-01-22 16:39:16
回答 15查看 39.4K关注 0票数 33

挑战

画一个心形

...as ASCII艺术!

你的艺术不一定要看上去和我的一模一样,但它必须看起来像一颗心形。

心的内部必须包含至少20次的“爱”

规则

  • 程序必须将艺术写到控制台。
  • 最短的代码(以字节为单位,任何语言)获胜。

获胜者将于2月14日情人节选出。

EN

回答 15

Code Golf用户

发布于 2014-01-22 18:26:45

C-183字节

不是胜利者,而是所有的爱。你能弄清楚它是怎么工作的吗?

代码语言:javascript
复制
#include <stdio.h>
#define C(a) ((a)*(a)*(a))
int main(){int x,y;for(y=9;y>-6;y--){for(x=-8;x<9;x++)putchar(C(x*x+y*y-25)<25*x*x*y*y*y?"LOVE"[(x+10)%4]:'-');putchar('\n');}return 0;}

输出:

代码语言:javascript
复制
-----------------
--LOVE-----OVEL--
-ELOVEL---LOVELO-
-ELOVELO-ELOVELO-
-ELOVELO-ELOVELO-
-ELOVELOVELOVELO-
--LOVELOVELOVEL--
--LOVELOVELOVEL--
---OVELOVELOVE---
----VELOVELOV----
----VELOVELOV----
------LOVEL------
-------OVE-------
--------V--------
-----------------
票数 16
EN

Code Golf用户

发布于 2014-01-22 18:50:08

Python,210个字符

当然,这不会赢,因为它是一个代码高尔夫,但我想要有创意,我没有在我的源代码中使用Love这个词:

代码语言:javascript
复制
import gzip
print(gzip.decompress(b'\x1f\x8b\x08\x00\x95\x10\xe0R\x02\xffSPP\xf0\xc9/KU\x80\x03\x10\x8f\x0bB\xa1c.l\x82dJ\xe0\xb0\x01\xe6\x02\x0cATa.T\xf7\x02\x00\xd9\x91g\x05\xc5\x00\x00\x00').decode('ascii'))

这是输出:

代码语言:javascript
复制
   Love          Love
  LoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
  LoveLoveLoveLoveLove
    LoveLoveLoveLove
      LoveLoveLove
          Love
票数 15
EN

Code Golf用户

发布于 2014-01-23 17:36:50

Scala -273个字符

好吧,我当然不会因为简洁而赢,但我想看看我是否可以用Scala来做。一个更聪明的高尔夫球手可能会减少几个字节,但我得到的是:

代码语言:javascript
复制
type D=Double;def w(x:D,y:D,a:D)={val(i,j)=(x-a,y-8);Math.sqrt(i*i+j*j)< 8};val l:Stream[Char]="love".toStream#:::l;val c=l.toIterator;def p(b:Boolean)=print(if(b)c.next else' ');for(y<-0 to 24){for(x<-0 to 32){if(y>7)p((16-x).abs< 24-y)else p(w(x,y,8)|w(x,y,24))};println}

或者,如果您愿意(仍然有效的代码!)

代码语言:javascript
复制
  type D=      Double 
def w(x:D,    y:D,a:D)=
{val(i,j)=   (x-a,y -8);
Math.sqrt(i* i+j*j)< 8};
val l : Stream [Char] =
"love".toStream#:::l;val
 c= l .toIterator;def p
  (b:Boolean) =print(if
   (b)c.next else' ');
    for (y <-0 to 24) 
     { for (x<- 0 to
      32){if(y >7)
        p((16-x).
          abs < 
          24-y)
         else
        p(w
       (x,
       y,
      8
      )
      |
      w(
       x,
         y,
           24)
              )}
                 println}

在屏幕上打印出两个半圆形和一个三角形,对一颗心进行了相当不错的传真。

需要与scala解释器一起运行(编译将需要为object Main { def main(args: Array[String]) = { ... } }添加额外的cruft,而我没有这些。

票数 15
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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