วาดรูปหัวใจ


34

ท้าทาย

วาดรูปหัวใจ

ป้อนคำอธิบายรูปภาพที่นี่

... ในฐานะศิลปะ ASCII!

งานศิลปะของคุณไม่จำเป็นต้องเหมือนของฉัน แต่มันต้องมีรูปร่างเหมือนหัวใจ

ภายในใจต้องมีคำว่า "รัก" อย่างน้อย 20 ครั้ง

กฎระเบียบ

  • โปรแกรมต้องเขียนภาพตัดปะไปยังคอนโซล
  • รหัสที่สั้นที่สุด (เป็นไบต์ภาษาใดก็ได้) จะชนะ

ผู้ชนะจะถูกเลือกในวันที่ 14 กุมภาพันธ์ในวันวาเลนไทน์


2
ฉันชอบเทรนด์ascii-artเฉพาะบริบทนี้ :)
Adam Maras

3
เพื่อที่จะได้รหัสที่ยุติธรรมกอล์ฟฉันคิดว่าคุณควรให้คำจำกัดความที่เข้มงวดมากขึ้นของผลลัพธ์
โฮเวิร์ด

3
ฉันรอใครสักคนที่จะส่งหัวใจมองที่ถูกต้องทางชีวภาพ ใครก็ตามที่ทำเช่นนั้นจะได้รับ +1 จากฉันทันที
Joe

2
@JoeStead ความคิดของคุณเกี่ยวกับคุณลักษณะที่โรแมนติกของวันวาเลนไทน์ดูน่าสงสัย:D
VisioN

3
สิ่งนี้จะดีกว่ามากในฐานะpopularity-contest
SztupY

คำตอบ:


53

JavaScript [160 ไบต์]

รหัสต่อไปนี้ดูเหมือนว่าจะไม่ได้ฟอร์แมต160 ไบต์

   ('l2v2l6v2'+  'e1l1v3l2'+
 'v3e1v7e1v7e1v7e1l2v6e1l4v5'+
'e1l6v4e1l8v3e1l7l3v2e1l9l3v1')
 .replace(/[lve]\d/g,function
   (c){return Array(-~c[1]).
      join({l:' ',v:'Love'
         ,e:'\n'}[c[0
             ]])})

เพียงเรียกใช้สิ่งนี้ในคอนโซลของเบราว์เซอร์ (เช่นใน Firebug หรือ Chrome Dev Tools)


2
เปลี่ยน/[lve]\d/ไป/../และการใช้อาร์เรย์['','Love','\n']แทนของวัตถุจะประหยัดอีก 10 ไบต์นำไปสู่150 ไบต์รวม แต่หัวใจของแหล่งที่มาจะไม่เป็นที่ทรงได้ดีอีกต่อไป:)
วิสัยทัศน์

3
!!! Awesome job !!!
SpYk3HH

1
การใช้ฟังก์ชั่นลูกศรไขมันจะช่วยประหยัดไบต์ได้มาก แทนที่function(c){returnโดยและลบc=> }คุณควรโพสต์เวอร์ชั่นที่สั้นกว่านี้!
Florent

2
ลำดับ EcmaScript 6.
Florent

1
@Florent Ah! เท่าที่ฉันรู้ ECMAScript 6 ยังอยู่ในช่วงทดลองและน่าเสียดายที่มันยังยากมากที่จะทดสอบว่ามันทำงานอย่างไร สมมติว่ารหัสของฉันรองรับ ECMAScript 5 :)แต่ขอขอบคุณสำหรับการชี้ให้เห็น! ฉันหวังว่าเร็ว ๆ นี้ JavaScript จะแข่งขันกับ Perl และ Python ในเรื่องการตีกอล์ฟและทุกคนจะสามารถลองได้
VisioN

27

GolfScript: 62 57 54 ตัวอักษร

4 1.5\.5,+{.5\-\2*\0.}/]4/{[32'LOVE']2*]zip{(*}%''+}%~

เอาท์พุท:

    LOVE    LOVE
  LOVELOVELOVELOVE
LOVELOVELOVELOVELOVE
  LOVELOVELOVELOVE
    LOVELOVELOVE
      LOVELOVE
        LOVE

หรือเพื่อความรักที่เพิ่มเข้ามาและการละเมิดความไม่เหมาะสมของช่องว่าง (สำหรับ 84 ตัวอักษร):

    5 1       .8\
  .)...5   ,{.5\-\3
 *\0.}/]4 /{[32[9829
  :x.'LOVE'\]''+]2
    *[@;]zip{(*}%
     ''+}%~' '15
        *x[]+
          +

เอาท์พุท:

     ♥LOVE♥        ♥LOVE♥
  ♥LOVE♥♥LOVE♥  ♥LOVE♥♥LOVE♥
♥LOVE♥♥LOVE♥♥LOVE♥♥LOVE♥♥LOVE♥
   ♥LOVE♥♥LOVE♥♥LOVE♥♥LOVE♥
      ♥LOVE♥♥LOVE♥♥LOVE♥
         ♥LOVE♥♥LOVE♥
            ♥LOVE♥
               ♥

16

C - 183 ไบต์

ไม่ใช่ผู้ชนะ แต่เป็นความรักที่เต็มเปี่ยม คุณสามารถคิดออกว่ามันทำงานอย่างไร

#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--------
-----------------

6
เป็นงานที่ดีที่วางไว้Vที่ด้านล่าง
luser droog

1
ใช้เส้นโค้งหัวใจได้ดี! คุณยังสามารถบันทึกอักขระสองสามตัวและลดลงเหลือ 153 (ฉันเปลี่ยนเอาต์พุตเล็กน้อยด้วยราคาที่เพิ่มหนึ่งไบต์): ideone.com/ELnkEE
reima

เด็ดมาก ฉันไม่เคยยอดเยี่ยมมาก่อนเลยที่จะบีบไบต์ คุณควรโพสต์เป็นของคุณเองC! เส้นโค้งของหัวใจเป็นสาธารณสมบัติ :)

15

Python, 210 ตัวอักษร

แน่นอนว่านี่จะไม่ชนะเพราะมันเป็นรหัสกอล์ฟ แต่ฉันต้องการสร้างสรรค์และฉันไม่ได้ใช้คำ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

ฉันชอบแนวทางของคุณ ^ _ ^
Navin

1
การใช้ gzip ไม่ใช่ความคิดสร้างสรรค์จริงๆ ...
nyuszika7h

15

Scala - 273 ตัวละคร

แน่นอนฉันไม่คาดหวังว่าจะชนะเพราะความกะทัดรัด แต่ฉันต้องการดูว่าฉันสามารถทำได้ใน 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}

พิมพ์สองครึ่งวงกลมและรูปสามเหลี่ยมไปยังหน้าจอทำให้โทรสารที่ดีงามของหัวใจรูปภาพของรูปหัวใจ

จำเป็นต้องทำงานกับล่ามสกาล่า (การรวบรวมจะต้องมีการเพิ่ม cruft พิเศษบางอย่างสำหรับobject Main { def main(args: Array[String]) = { ... } }และฉันก็ไม่ได้มีอะไร


2
@epidemian ฉันอาจจะทำให้มันดูเหมือนหัวใจปกติมากขึ้น แต่ฉันตัดสินผิดขนาดของรหัสและขี้เกียจเกินไป ดังนั้นฉันจึงสร้างหางแทน ฉันชอบแกล้งทำเป็นบอลลูน: p
KChaloux

12

Python 2, 117

พิมพ์ในloveแนวนอน20 วินาที

x="love";print"   x    x\nx xx x\nx   x   x".replace("x",x)
for i in range(5):print" "*i+x+" "*(9-i*2),x
print" "*6,x

เอาท์พุท:

   love    love
love lovelove love
love   love   love
love          love
 love        love
  love      love
   love    love
    love  love
       love

สำรองอักขระบางตัวโดย: ใช้ตัวยึดตำแหน่งตัวอักษรตัวเดียวในสตริงของบรรทัดที่ 2 จากนั้นใช้อักขระreplace()เหล่านั้น ในการprintเปลี่ยนบรรทัดที่สามหนึ่ง+ถึง,10 กับ 9; ในบรรทัดสุดท้ายใช้ค่าตัวแปร x pastebin.com/i1TSEZfE
จัดการ

@ การจัดการขอบคุณ แก้ไขร่างกายตอนนี้ลงไปที่ 121 chars :-)
Wasi

คุณนับสามแนวตั้งloveทางด้านขวาที่คุณได้โดยการส่ายแนวนอนloveหรือไม่?
Joshua Taylor

@JoshuaTaylor ขอบคุณฉันไม่ได้สังเกตเห็นแนวตั้งผู้loves รวมถึงloveจำนวนที่จะเป็น 23: D
Wasi

11

Perl - 36 ไบต์

  open    0;s
/\S.?/Lo.ve
  /ge,print
    , , for
        <0>

เอาท์พุท:

  LoveLove    LoveLove
LoveLoveLoveLoveLoveLove
  LoveLoveLoveLoveLove
    LoveLoveLoveLove
        LoveLove

นี่คือการโกงเล็กน้อย มันจะพิมพ์Loveหนึ่งครั้งสำหรับอักขระเว้นวรรคที่ไม่ใช่สีขาวทุกตัวในซอร์สโค้ด ด้วยช่องว่างที่จำเป็นในการสร้างรูปหัวใจรหัสคือ61ไบต์ความยาว: แบนเพียง36ไบต์:

open 0;s/\S.?/Lo.ve/ge,print,,for<0>

Perl - 60 ไบต์

print$"x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g

เอาต์พุตต่อไปนี้:

   Love        Love
 Love Love  Love Love
Love     Love     Love
Love              Love
 Love            Love
  Love          Love
    Love      Love
      Love  Love
         Love

ตรง 20 Love.


คำอธิบายสั้น ๆ
โดยการร้องขอ

  • for'3h112a05e0n1l2j4f6b9'=~/./g
    คำสั่ง นี้จะแก้ไขคำสั่งการพิมพ์และวนซ้ำอักขระแต่ละตัว /./เห็นได้ชัดว่าregex ตรงกับอักขระตัวเดียวและในบริบทรายการ/./gจะส่งคืนรายการของอักขระทั้งหมดในสตริง วิธีที่ใช้กันทั่วไป แต่มีความยาวขึ้นเล็กน้อยในการเขียนนี่for split//,'3h112a05e0n1l2j4f6b9'คือ
  • print$"x(15&ord),Love,$/x/\D/
    ตัวแปรพิเศษมี$"ค่าเริ่มต้นเป็นช่องว่าง อ๊อดค่า Inal ของตัวละครแต่ละ mod 16 ร้านค้าพื้นที่จำนวนที่จำเป็นระหว่างกันLoveผ่านสตริงซ้ำ ( x) ในที่สุดหากตัวละครไม่ได้เป็นตัวเลข ( /\D/) ค่าของ$/ซึ่งเป็นค่าเริ่มต้นจะ"\n"ถูกตรึงไปจนจบ

โปรแกรมที่สองของคุณเกิดข้อผิดพลาด: "ข้อผิดพลาดทางไวยากรณ์ที่บรรทัด -e 1 ใกล้กับ" / \ D / for3h112a05e0n1l2j4f6b9 " (พยายามเรียกใช้จากบรรทัดคำสั่งโดยใช้-e)
Tomas

จากบรรทัดคำสั่งคุณจะต้องแทนที่$"ด้วย' ':perl -e "print' 'x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g"
primo

ตกลงเคล็ดลับดี!
Tomas

รุ่น 36 ไบต์ไม่ได้พิมพ์ผลลัพธ์ที่ต้องการจริง ๆ
Tobia

1
@imbabque เรียบร้อยแล้ว
primo


5

Javascript - 147 141 137 133 ตัวอักษร

with(Math){s="";for(k=800;k--;)
x=abs(1.25-k%40/16),y=k/320-1.25,
s+=.75>x+abs(y)|.5>sqrt(x*x-x+y*y-y+.5)
?"Love"[k%4]:39==k%40?"\n":" "}s

หมายเหตุ: ฉันโพสต์คำตอบอื่น แต่อันนี้ใช้วิธีการที่แตกต่างกันและหัวใจมีรูปร่างที่แตกต่างกัน

มันทำงานอย่างไร :

ป้อนคำอธิบายรูปภาพที่นี่

ก่อนอื่นฉันแสดงเพชร (สมการ|x|+|y|) จากนั้นฉันรวมสองวงกลมไว้ด้านบน ค่า x ถูกมิร์เรอร์ (ดังนั้นต้องการวงกลมเดียวเท่านั้น)


1
คุณสามารถย่อรหัสของคุณให้สั้นลงได้โดยลบ0หมายเลขลอยตัวก่อนหน้าและกำหนดให้Math.absกับตัวแปร
Florent

นอกจากนี้คุณอาจต้องการลบเครื่องหมายอัฒภาคที่ไม่มีประโยชน์สองอันออกจากปลายเพื่อบันทึกอีกสองไบต์
VisioN

4

การสลิป - 28 ตัวอักษร / 56 ไบต์

겤뙡늆굚넰밌各긂밀❷거雙復냄뭖끐❸갰右거雙復겠⓸걠右復終

เอาท์พุท:

    LOVE    LOVE
  LOVELOVELOVELOVE
LOVELOVELOVELOVELOVE
  LOVELOVELOVELOVE
    LOVELOVELOVE
      LOVELOVE
        LOVE

(หรือใน 24 ตัวอักษร: 긢꼙겱딧꽔밂各감啃갰啃긂밀⓶復냄뭖끐⓷復겠⓸復終- แต่นี่ใช้คำสั่งที่ฉันเพิ่มหลังจากการโพสต์ความท้าทายนี้ดังนั้นจึงไม่นับ)
Timwi

นี่คือ 84 ไบต์
tobyink

ไม่มันเป็น 56 ไบต์เท่ากับ UTF-16
Timwi

@ Timwi สำหรับฉันมันมีขนาด 58 ไบต์ แปลก
Primo

@primo: มันคือ 56 ไบต์ หากคุณบันทึกเป็น“ Unicode” ใน Windows Notepad คุณจะได้รับไฟล์ 58 ไบต์ซึ่งประกอบด้วย UTF-16 BOM (2 ไบต์) พร้อมโปรแกรม 56- ไบต์
Timwi

4

JavaScript - 136 121 115 113 ตัวอักษร

s="";for(k=800;k--;)
x=1.25-k%40/16,y=k/320-1.25,
s+=Math.pow(x*x+y*y-1,3)<x*x*y*y*y
?"Love"[k%4]:39==k%40?"\n":" ";s

วิธีเรียกใช้: คัดลอกวางในคอนโซลของเบราว์เซอร์ (เช่น: Chrome หรือ Firefox)


["L","o","v","e"] => "Love"จะประหยัด 11 ไบต์
VisioN

แก้ไขแล้ว :) ขอบคุณสำหรับคำแนะนำ
tigrou

3

C, 116 ตัวอักษร

(ฉันไม่รู้ว่านี่เป็นรูปหัวใจเพียงพอหรือไม่ ... เติมด้านในของวงกลมสามวงเพื่อสร้างเอาท์พุต)

i = 192, x, y;
main(t) {
  for (; i--; putchar(i % 16? y : 10))
    y = i / 16 - 8,
    x = i % 16 - 8,
    t = x*x + y*y,
    y = " Levo"[ (t < 64 & y < 0 | t < 8*abs(x)) * (i % 4 + 1) ];
}

เอาท์พุท:

 veLov   veLov 
oveLove oveLove
oveLove oveLove
oveLove oveLove
oveLoveLoveLove
oveLoveLoveLove
oveLoveLoveLove
 veLoveLoveLov 
 veLoveLoveLov 
  eLoveLoveLo  
    oveLove    

ก่อนหน้านี้ในกระบวนการเล่นกอล์ฟก่อนเปลี่ยนนิพจน์คงที่ (เปลี่ยนMเพื่อปรับขนาด):

#define M 4

i = 3*M * 4*M, x, y;
main(t) {
  for (; i--; putchar(i % (4*M)? x : '\n')) {
    y = i / (4*M) - 2*M, x = i % (4*M) - 2*M,
    t = x*x + y*y, x = " Levo"[ (t < 4*M*M & y < 0 | t < abs(2*M*x)) * (1 + i % 4) ];
  }
}

ฉันรู้สึกว่าถูกบังคับให้ทำเช่นนี้ : P

#define F for
#define M main

 /*##     ####
####*/i  =192,x
,y;M(t) {F(;i--
;putchar(i %16?
y:10))y=i/16-8,
x=i%16-8,t=x*x+
y*y,y=" Levo"[(
 t<64&y<0|t<8*
  abs(x))*(i%
    4+1)];}

คุณควรใช้ตัวเลือก / คอมไพเลอร์ชนิดใดในการรวบรวม All variables in C are typed en.wikibooks.org/wiki/C_Programming/Variables
Micka

1
@Micka ตัวแปรส่วนกลางถูกประกาศโดยปริยายว่าเป็นintคุณสมบัติดั้งเดิมที่ยืมมาจาก pre-ANSI-C มันรวบรวมได้ดีสำหรับฉันด้วยclang foo.cหรือgcc -std=c99 foo.c(แม้ว่ามีคำเตือนมากมาย) คุณได้รับข้อผิดพลาดหรือไม่? ฉันไม่รู้ว่า C ดีพอที่จะรับประกันได้ว่าฉันไม่ได้ขึ้นอยู่กับพฤติกรรมที่ไม่ได้กำหนด แต่ฉันเชื่อว่าฉันไม่ได้ทำ
FireFly

1
อืมเห็นได้ชัดว่ามันไม่ได้ถูกลงโทษตามมาตรฐานใด ๆ - ฉันคิดว่ามันถูกกฎหมายใน C90 อย่างน้อย แต่ก็ไม่เป็นไร ดังนั้นมันจึงเป็นเพียงมรดกตกทอดจาก pre-ANSI-C ที่คอมไพเลอร์ส่วนใหญ่สนับสนุนอยู่ดี (ดู [เชิงอรรถนี้] ( en.wikipedia.org/wiki/ …บนวิกิพีเดียเป็นต้น)
FireFly

3

Ruby, 47, หรือ Golfscript, 41

คำตอบที่น่าเบื่อ

puts" Love  Love
"+"LoveLoveLove
"*6+"    Love"

รุ่น Golfscript:

" Love  Love
""LoveLoveLove
"6*"    Love"

เอาท์พุท:

 Love  Love
LoveLoveLove
LoveLoveLove
LoveLoveLove
LoveLoveLove
LoveLoveLove
LoveLoveLove
    Love

32
ฮ่า ๆ ช่างเป็นหัวใจที่น่าเกลียด! : D
Abbas

3

Ruby - 113 ตัวละคร

l=->a,b=28,c=1{puts (("Love"*a).center(b))*c};l.call(2,14,2);l.call(3,14,2);[7,7,7,6,5,4,3,2,1].map{|x|l.call(x)}

เอาท์พุท:

1.9.3p448 :811 > l=->a,b=28,c=1{puts (("Love"*a).center(b))*c};l.call(2,14,2);l.call(3,14,2);[7,7,7,6,5,4,3,2,1].map{|x|l.call(x)}
   LoveLove      LoveLove   
 LoveLoveLove  LoveLoveLove 
LoveLoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLoveLove
  LoveLoveLoveLoveLoveLove  
    LoveLoveLoveLoveLove    
      LoveLoveLoveLove      
        LoveLoveLove        
          LoveLove          
            Love            

เพื่อความชัดเจนมากขึ้น

ป้อนคำอธิบายรูปภาพที่นี่


3

Perl - 159 ตัวอักษร

ไม่เล่นกอล์ฟอย่างหนาแน่น ...

printf"%-14s%14s\n",$_,~~reverse for map{($.,$i,$c)=split',';($"x$i).($.x$c)}qw(L,5,3 o,3,8 v,1,11 e,0,13 L,1,13 o,3,11 v,5,9 e,7,7 L,8,6 o,10,4 v,12,2 e,13,1)

ต่อไปนี้เป็นช่องว่างที่เพิ่มเข้ามาเพื่อให้อ่านง่ายขึ้นเล็กน้อย ...

printf "%-14s%14s\n", $_, ~~reverse
   for map {
      ($.,$i,$c) = split',';
      ($"x$i).($.x$c)
   } qw(
      L,5,3
      o,3,8
      v,1,11
      e,0,13
      L,1,13
      o,3,11
      v,5,9
      e,7,7
      L,8,6
      o,10,4
      v,12,2
      e,13,1
   )

ผลผลิตคือ ...

     LLL            LLL     
   oooooooo      oooooooo   
 vvvvvvvvvvv    vvvvvvvvvvv 
eeeeeeeeeeeee  eeeeeeeeeeeee
 LLLLLLLLLLLLLLLLLLLLLLLLLL 
   oooooooooooooooooooooo   
     vvvvvvvvvvvvvvvvvv     
       eeeeeeeeeeeeee       
        LLLLLLLLLLLL        
          oooooooo          
            vvvv            
             ee             

คำว่า "ความรัก" ที่สมบูรณ์นั้นบรรจุอยู่ภายใน (แนวตั้ง) 22 ครั้งรวมถึงอีกหลายส่วน


+1 สำหรับความคิดสร้างสรรค์ ฉันไม่คิดว่าจะทำให้มันเป็นแนวตั้ง
Andrew Gies

3

APL, 36 ตัวอักษร / ไบต์ *

7 16⍴∊'  ' 'Love'[20400948744⊤⍨36/2]

จะต้องประเมินด้วย⎕IO←0(ค่าเริ่มต้นจะแตกต่างกันไปตามการใช้งาน)

* APL สามารถเขียนเป็นชุดอักขระแบบไบต์เดียวได้ถ้าต้องการ (ตราบใดที่คุณไม่ได้ใช้อักขระ Unicode ตัวอื่น) ดังนั้น N chars = N bytes เพื่อการนับ

เอาท์พุท:

มี 20 "ความรัก"

  Love    Love
LoveLoveLoveLove
LoveLoveLoveLove
LoveLoveLoveLove
  LoveLoveLove
    LoveLove
      Love

2

Extended BrainFuck : 193 (นับโดยไม่มีช่องว่างที่ไม่จำเป็น)

    {h]<[<]<        [<}>>-->
-3>->-3>+9>+9>+>-7>+>->-5>+>->->
-3>+>+>>4->->6+>5+>>4+[-<4+>]<[-
<4+<5+<5+<5+4>&h++]>[-[-[<10+.[-]
    >-[[-]3<[-]]>[<4+3<[[->>
    +<<]<]]]>[[>]>[.>&h]<<++
        >]]>[<<4+[->8+<]
        >....[-]<<+>>]>]

กลายเป็น:

Brainfuck: 264 (นับโดยไม่มีช่องว่างที่ไม่จำเป็น)

    >>-->->>        >->->>>+
    >>>>>>>>        >+>>>>>>
>>>+>->>>>>>>+>->->>>>>+>->->->>>
+>+>>---->->++++++>+++++>>++++[-<
++++>]<[-<++++<+++++<+++++<+++++>
>>>]<[<]<[<++]>[-[-[<++++++++++.[
    -]>-[[-]<<<[-]]>[<++++<<<
    [[->>+<<]<]]]>[[>]>[.>]<[
        <]<[<]<<++>]]>[<<
        ++++[->++++++++<]
            >....[-]<
             <+>>]>]

คุณใช้มันกับล่าม bf ใด ๆ Ubuntu มีbfและbeefและทั้งสองอย่างทำงาน

bf heart.bf

ผลลัพธ์ (344 ไบต์):

    LOVELOVE        LOVELOVE
    LOVELOVE        LOVELOVE
LOVELOVELOVELOVELOVELOVELOVELOVE
LOVELOVELOVELOVELOVELOVELOVELOVE
LOVELOVELOVELOVELOVELOVELOVELOVE
LOVELOVELOVELOVELOVELOVELOVELOVE
    LOVELOVELOVELOVELOVELOVE
    LOVELOVELOVELOVELOVELOVE
        LOVELOVELOVELOVE
        LOVELOVELOVELOVE
            LOVELOVE
            LOVELOVE

รหัส EBF ที่ไม่ถูกตรึง:

>>--> ; mark

;; ##  ##@   
;;########@
;;########@
;; ######@
;;  ####@
;;   ##@
;; the block below is the art above 
;; where space is replaced with ->
;; # with > and @ with +>
->>>->->>>+>
>>>>>>>>+>
>>>>>>>>+>
->>>>>>>+>
->->>>>>+>
->->->>>+>+>

;; we store the string LOVE after a blank
>
~"LOVE"<[<]<
[<++] ;; add 2 to every cell until mark

;; Variables
:new
:zero
:in
:next

@zero
$in(
  -[ ; 1
     -[ ; 2
        $zero 10+.[-]
        $in-[#[-]$new<[-] @in] ; its second round lf
        $next[#$in++++$new<[[->>+<<]<]]@new     ; 2   
      ]
      >[[>]>[.>]<[<]<[<]<<++>   ]@new
  ]>[@next $zero 4+(-$in 8+) $in.... (-) $new+ $in]@zero
)

2

C # 224

class P{static void Main(){for(int i=0,m=1;i<30;i++)for(int l=0;l<new[]{5,6,7,6,8,10,3,10,4,13,1,13,1,87,1,27,4,23,7,20,11,16,16,11,20,7,24,3,27,1}[i];l++,m++)System.Console.Write((i%2>0?"love"[m%4]:' ')+(m%29>0?"":"\n"));}}

จัดรูปแบบ:

class P
{
    static void Main()
    {
        for (int i = 0, m = 1; i < 30; i++)
            for (int l = 0; l < new[] { 5, 6, 7, 6, 8, 10, 3, 10, 4, 13, 1, 13, 1, 87, 1, 27, 4, 23, 7, 20, 11, 16, 16, 11, 20, 7, 24, 3, 27, 1 }[i]; l++, m++)
                System.Console.Write((i % 2 > 0 ? "love"[m % 4] : ' ') + (m % 29 > 0 ? "" : "\n"));
    }
}

เอาท์พุท:

     velove       elovel
   ovelovelov   velovelove
 lovelovelovel velovelovelov
lovelovelovelovelovelovelovel
ovelovelovelovelovelovelovelo
velovelovelovelovelovelovelov
 lovelovelovelovelovelovelov
   elovelovelovelovelovelo
    ovelovelovelovelovel
      lovelovelovelove
         lovelovelov
           elovelo
             vel
              l

2

Python ขนาด 334 ไบต์

x = "love"
print("\t  love\t      love")
print("\t"+str(x*2)+"    "+str(x*2))
print("      "+str(x*6))
print(str(" "*5)+str(x*6)+"lo")
print(str(" "*5)+str(x*6)+"lo")
print("      "+str(x*6))
print("\t"+str(x*5))
print("\t"+str(" "*2)+str(x*4)+"l")
print("\t"+str(" "*4)+str(x*3)+"l")
print("\t"+str(" "*7)+str(x*2))
print("\t"+str(" "*10)+"v")

เอาท์พุท:

ป้อนคำอธิบายรูปภาพที่นี่


1
ยินดีต้อนรับสู่ PPCG นี่คือรหัสกอล์ฟดังนั้นโปรดระบุจำนวนไบต์ของรหัสของคุณในคำตอบ โปรดระบุด้วยว่าภาษานี้คืออะไร
Martin Ender

@ MartinBüttnerคุณหมายถึงภาษาอะไร และนี่คือ 334 ไบต์
Yanti

1
ภาษาการเขียนโปรแกรมที่คุณเขียนโค้ดนี้
Martin Ender

ฉันรู้ว่า ! นี่คืองูหลาม! โอ้และคุณสามารถเอาstrโทรกับ repetions สตริงเพราะมีความสำคัญสูงกว่า* +
TuxCrafting

จริงๆแล้วรหัสนี้มีความยาว 682 ไบต์
TuxCrafting

1

Perl - 97 ตัวอักษร

คำตอบนี้ขึ้นอยู่กับโซลูชัน Python ของตัวละคร @ Wasi

$.=love;say"   $.    $.$/$. $.$. $.$/$.   $.   $.";say$"x$_,$.,$"x(9-$_*2),$.for 0..4;say$"x 6,$.

คุณต้องเรียกใช้ Perl พร้อม-M5.010ตัวเลือกเพื่อเปิดใช้งานคุณสมบัติเฉพาะ 5.10 นี้ได้รับอนุญาตเห็นได้ชัด

คุณสมบัติที่น่าสนใจ:

  • ฉันใช้ตัวแปร$.เพื่อเก็บคำว่า "ความรัก" นี่เป็นเพราะมันสามารถตามด้วยคำอื่นได้ทันทีหากจำเป็น $.forเป็น tokenized อย่างไม่น่าสงสัย$.ตามมาด้วยfor; $_forจะไม่ได้รับโทเค็น$_ตามมาforเพราะ$_forเป็นชื่อตัวแปรทางกฎหมาย
  • $"ตัวแปรบิวด์อินที่ใช้แทนอักขระนั้นที่อาร์เรย์จะถูกรวมเข้าด้วยกันเมื่อถูกสอดแทรกเข้าไปในสตริง (และค่าเริ่มต้นของอักขระช่องว่างเดียว) ถูกใช้แทน" "การประหยัดอักขระหนึ่งตัวที่นี่และที่นั่น
  • การแก้ไขสตริงของ Perl เต้น.replaceวิธีไพ ธ อนอย่างมีนัยสำคัญในการตีกอล์ฟ
  • Perl ในfor 0..4ทำนองเดียวกันชนะมากกว่าfor i in range(5)

1

CJam - 33 ไบต์

19285703234336595Zb["Love"SS+N]f=

ลองออนไลน์

เอาท์พุท:

  Love    Love
LoveLoveLoveLove
LoveLoveLoveLove
LoveLoveLoveLove
  LoveLoveLove
    LoveLove
      Love

คำอธิบาย:

19285703234336595    number that contains the pattern as base-3 digits
Zb                   converts to base 3 (Z=3)
["Love"SS+N]         creates an array containing "Love", "  " and a newline
f=                   replaces the base-3 digits with the corresponding strings
                     (0 -> "Love", 1 -> "  ", 2 -> newline)

0

Bash, 170 ไบต์

สำเนาของ programFOX :)

echo '\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'|gunzip
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.