画一个心形

...as ASCII艺术!
你的艺术不一定要看上去和我的一模一样,但它必须看起来像一颗心形。
心的内部必须包含至少20次的“爱”
获胜者将于2月14日情人节选出。
发布于 2014-01-22 18:26:45
不是胜利者,而是所有的爱。你能弄清楚它是怎么工作的吗?
#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;}输出:
-----------------
--LOVE-----OVEL--
-ELOVEL---LOVELO-
-ELOVELO-ELOVELO-
-ELOVELO-ELOVELO-
-ELOVELOVELOVELO-
--LOVELOVELOVEL--
--LOVELOVELOVEL--
---OVELOVELOVE---
----VELOVELOV----
----VELOVELOV----
------LOVEL------
-------OVE-------
--------V--------
-----------------发布于 2014-01-22 18:50:08
当然,这不会赢,因为它是一个代码高尔夫,但我想要有创意,我没有在我的源代码中使用Love这个词:
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'))这是输出:
Love Love
LoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLove
LoveLoveLoveLove
LoveLoveLove
Love发布于 2014-01-23 17:36:50
好吧,我当然不会因为简洁而赢,但我想看看我是否可以用Scala来做。一个更聪明的高尔夫球手可能会减少几个字节,但我得到的是:
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}或者,如果您愿意(仍然有效的代码!)
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,而我没有这些。
https://codegolf.stackexchange.com/questions/19123
复制相似问题