मुझे प्यार करता है, मुझे प्यार नहीं करता


45

मुझे प्यार करता है, मुझे प्यार करता है

यह साधारण बच्चों का खेल पुराना है, लेकिन अभी भी लोकप्रिय है। चूँकि हम अभी 21 वीं सदी में जी रहे हैं, आइए इसे डिजिटाइज़ करें!

विशिष्टता

प्रोग्राम को कोई इनपुट नहीं लेना चाहिए, जब तक आप एक ऐसी भाषा का उपयोग नहीं कर रहे हैं जो यादृच्छिक बीज उत्पन्न नहीं कर सकती है - उस स्थिति में आपको बीज को इनपुट के रूप में लेने की अनुमति है। आपका कार्य एक ऐसा कार्यक्रम लिखना है, जो कुल 3 से 20 लाइनों को सम्मिलित रूप से सम्मिलित करेगा: "मुझे प्यार करता है ..." और "प्यार करता है मुझे नहीं ..." बदले में, जैसा कि खेल (और एक अतिरिक्त पंक्ति में; पढ़ने)।

हालांकि, कुछ प्रतिबंध हैं। प्रत्येक पंक्ति को न्यूलाइन द्वारा अनुसरण किया जाना चाहिए। पहली पंक्ति "मुझे प्यार करती है ..." होनी चाहिए। अंतिम पंक्ति (या तो "मुझे प्यार करती है" या "मुझे प्यार नहीं करती") क्रमशः विस्मयादिबोधक चिह्न या एक बिंदु के साथ समाप्त होनी चाहिए। अंतिम पंक्ति के बाद, आपको नई पंक्ति में <3या तो एक दिल ( ) या एक टूटे हुए दिल ( </3) का उत्पादन करने की आवश्यकता है , यह निर्भर करता है कि "मुझे प्यार करो!" या "मुझे प्यार नहीं करता।" अंतिम वाक्य था।

ट्रेलिंग व्हाट्सएप की अनुमति है।

उदाहरण आउटपुट

आउटपुट:

मुझे प्यार करता है ... मुझे प्यार करता है ... मुझे प्यार करता है ... मुझे
प्यार नहीं
करता ...
मुझे
प्यार करता है!
<3

एक और आउटपुट:

मुझे प्यार करता है ... मुझे प्यार करता है ... मुझे प्यार करता है ... मुझे
प्यार नहीं
करता

</ 3

यह , इसलिए सबसे छोटी प्रविष्टि जीत जाती है!

इसके अलावा, मेरी पहली चुनौती :) शुभकामनाएँ!


क्या लाइनों की संख्या के वितरण पर कोई प्रतिबंध है, अर्थात, क्या यह समान रूप से यादृच्छिक होना चाहिए, या क्या यह पर्याप्त है कि 3 से 20 के बीच की सभी लंबाई एक सकारात्मक संभावना है?
जर्बग

मैंने इस बारे में नहीं सोचा था, लेकिन मैं कहूंगा कि कोई भी वितरण ठीक है - इसलिए उन्हें समान रूप से यादृच्छिक नहीं होना चाहिए।
मैथोकॉक

क्या यह 3 से 20 ( [3, 20)) है या 3 से 20 तक शामिल है ( [3, 20])?
orlp

1
@MatthewRock यदि हम जिस भाषा का उपयोग करना चाहते हैं, वह अपने दम पर एक यादृच्छिक संख्या में बीज नहीं कर सकती है? क्या उपयोगकर्ता एक यादृच्छिक बीज की आपूर्ति कर सकता है?
mınxomaτ

3
@minxomat जो भी हो, यह सिर्फ एक खेल है। जाओ, नियम बदलो।
मैथ्यूॉक

जवाबों:


23

पायथ, 54 53 51 50 48 बाइट्स

pj+*3\.bm+W~!Z"Loves me"" not"+3O18@".!"Z%hZ"</3

%2tWZ"<</33दिल की छपाई के लिए बचत होती है। 1. यकीन नहीं होता कि यह सबसे अच्छा तरीका है।
FryAmTheEggman

@FryAmTheEggman ने इसे दो सहेजे।
orlp

पिछले दो तारों को एक साथ मिलाने से एक और बचत होती है, लेकिन मुझे वापस अपने पास जाना पड़ा %
FryAmTheEggman

@".!"Z%hZ"</3दो बाइट्स बचाता है
Jakube

चूंकि कुछ दिनों से कोई प्रविष्टि नहीं है, इसलिए मैं इस उत्तर को स्वीकार कर रहा हूं। बधाई हो!
मैथ्यूॉक

23

CJam, 53 50 49 बाइट्स

1 बाइट बचाने के लिए डेनिस को धन्यवाद।

Imr3+{"Loves me"X!:X" not"*'.3*N}*&"!."X=N'<'/X*3

इसका परीक्षण यहां करें।

व्याख्या

कोड बस स्टैक पर बिट्स और टुकड़ों में स्ट्रिंग को डंप करता है, जो प्रोग्राम के अंत में स्वचालित रूप से मुद्रित होता है:

Imr3+         e# Generate a random number in [3,20]
{             e# Execute this block that many times.
  "Loves me"  e#   Push "Loves me", we always need that.
  X!:X        e#   Toggle X (initially 1) between 0 and 1 and leave it on the stack.
  " not"*     e#   Repeat " not" that many times, removing it on every other line.
  '.3*N       e#   Push "..." and a newline.
}*
&             e# Set intersection of "..." and newline, turning them into an empty array.
"!."X=        e# Select "!" or "." based on the last value of X.
N'<           e# Push a newline and "<".
'/X*          e# Include "/" or not depending on the last value of X.
3             e# Push a 3.

कोई कल्पना कर सकता है कि सीजेएम कोड-गोल्फ के लिए विशेष रूप से विकसित किया गया होगा ^ ^
लार्की

11
@larkey लेकिन यह है ...
मैथ्यू रॉक

@larkey CJam को गोल्फस्क्रिप्ट से लिया गया है, और गोल्फस्क्रिप्ट (जैसा कि इसके नाम से पता चलता है) को गोल्फिंग के लिए डिज़ाइन किया गया है।
क्रिस जेस्टर-यंग

@ क्रिसजैस्टर-यंग यह मानसिक रूप से थोड़ा-सा गाल था ;-)
larkey

17

ब्रेनफक, 2766 बाइट्स (वर्तमान में अमान्य)

सिर्फ इसलिए कि। मैं बाद में एक ungolfed संस्करण जोड़ूंगा।

कोड

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

स्यूडोकोड

loop
    get a random byte
until random byte is >2 and <21

point to byte
[
    output "Loves me..."
    decrease byte by 1
    if byte is 0
        output "<3"
        exit
    eif
    output "Loves me not..."
    decrease byte by 1
]
output "</3"

नमूना

जब चलाया जाता है, तो कार्यक्रम इनपुट के इंतजार में एक इंटरैक्टिव सत्र में प्रवेश करता है। इनपुट एक नंबर होना चाहिए। इस संख्या का उपयोग बीज के रूप में किया जाता है।

बीज: 1 (यादृच्छिक संख्या 5 है, 218,168,042 ऑपरेशन लेता है)

1              
Loves me...    
Loves me not...
Loves me...    
Loves me not...
Loves me...    
<3             

बीज: 3 (यादृच्छिक संख्या 20 है, 463,253,048 ऑपरेशन करता है)

3
Loves me...
Loves me not...
(...)
Loves me...
Loves me not...
</3

मेरा सुझाव है कि आप के साथ बीज नहीं है 6, क्योंकि यह 2,105,900,375परिणाम की गणना करने के लिए पुनरावृत्तियों लेता है :)।

संकलन / चलाना

इसके लिए आपको एक तेज दुभाषिया की आवश्यकता है। कोई भी ऑनलाइन दुभाषिया जो मैंने परीक्षण किया है, निष्पादन की गति को संभाल सकता है। Ips (प्रति सेकंड पुनरावृत्तियों) से अधिक होना चाहिए 100,000,000। तो मैं एक और समाधान के साथ आया।

यह ब्रेनफक में लिखा गया ब्रेनफेक टू सी कंपाइलर है। आप उपयोग करने का सुझाव शुद्ध सी मैं अपने कोड transpile के लिए किसी भी ऑनलाइन दुभाषिया का उपयोग कर सकते brainfuck.tk । मेरे कोड को स्टड इनपुट में पेस्ट करें, इस कोड को कोड इनपुट में पेस्ट करें:

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

स्रोत डाउनलोड करें और इसे संकलित करें:

gcc.exe -c main.c -o main.o
gcc.exe main.o -o loveme.exe

आप सी कोड की एक प्रति यहां ऑनलाइन भी चला सकते हैं: के माध्यम से। कोडिंगगॉन्ड

अनुकूलन

अभी भी कुछ काम करना बाकी है, लेकिन सेल का फिर से उपयोग लगभग इष्टतम है।

टिप्पणियों

आप एक बीज के रूप में शब्दों या वाक्यांशों का उपयोग कर सकते हैं:

Programming Puzzles & Code Golf
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
Loves me not...
Loves me...
<3

3
+1 ब्रेनफुक में PRNG लिखने की धृष्टता के लिए ...
AdmBorkBork

@TimmyD BF में PRNGs लिखने के बेहतर तरीके हैं, लेकिन उनमें से अधिकांश समय आधारित हैं (प्रोग्राम को चलाएं, और किसी बिंदु पर निष्पादन को रोक दें, फिर मेमोरी पढ़ें), लेकिन इसके लिए यूजर इंटरेक्शन और दो अलग-अलग प्रोग्राम की आवश्यकता होगी, जो इसके खिलाफ है नियम।
mınxomaτ

3
अच्छा स्यूडोकोड। अधिक लोगों को ऐसा करना चाहिए, खासकर जब से आप उन्हें नहीं जानते हैं, तो आधा गोल्फ भाषाएँ मूल रूप से अपठनीय हैं।
The_Basset_Hound

3
दुर्भाग्य से आपका आउटपुट गलत है। अंतिम "मुझे प्यार करता है" एक विस्मयादिबोधक बिंदु के साथ समाप्त होना चाहिए (इसलिए, "मुझे प्यार करता है!"), और "मुझे प्यार नहीं करता है" एकल डॉट के साथ समाप्त होना चाहिए ("मुझे प्यार नहीं करता है")।
मैथ्यूॉक

1
क्या हमारे पास RNG के कुछ छद्म कोड हो सकते हैं?
बीटा डेके

7

जावास्क्रिप्ट (ईएस 6), 119 104 99 98 बाइट्स

for(i=new Date%18+3,s=i&1?`!
<3`:`.
</3`;i--;)s=`...
Loves me`+(i&1?' not':'')+s
alert(s.slice(4))

अच्छा था! यह दिल बनाने के लिए स्ट्रिंग संघनन का उपयोग करने के लिए छोटा हो सकता है, और संभवतः प्रत्येक पंक्ति के निर्माण में। यदि मैं new Dateअपने उत्तर में चाल का उपयोग करूं तो मन ?
ETHproductions

@ETHproductions इसके लिए जाएं, इसलिए जब तक आप मेरे साथ उन दिलों का उपयोग करके ठीक हैं (और मैंने अलर्ट का उपयोग क्यों नहीं किया ... किसी कारण से मैंने अपने आप को माना कि तीर के कार्य कम होंगे, लेकिन रिटर्न नेगेट की आवश्यकता होती है .. ।)। मैं वास्तव में अभी इसे नीचे 104 के लिए कुछ अन्य चाल के साथ ही =)
Mwr247

डांग ... अच्छी नौकरी :) मैं अपना
पालन

मेरे लिए सफलता लंबाई / पुनरावृत्ति चर को पीछे की ओर समेट कर, और आरंभीकरण में दिलों को परिभाषित कर रही थी। मैंने थोड़ी बचत के साथ इसे कुछ समय पहले आजमाया था, लेकिन आपके दिल के सरलीकरण ने इसे और अधिक कुशल बना दिया।
1924 में Mwr247

एक मिनट रुकिए ... यह कोशिश करते हुए, मैं Loves me not... Loves me... Loves me not! <3और Loves me not... Loves me... Loves me not... Loves me. </3। मुझे लगता है कि आपको इसे ठीक करने के लिए किसी एक शर्त को बदलना होगा। संपादित करें: ओह, बस चौथी पंक्ति में ''और स्विच करें ' not'
ETHproductions 19

6

अजगर, 147

from random import*;t=randint(3,20)
print"\n".join("LLoovveess  mmee  n o t"[i%2::2].strip()+"..."*(i<t-1)for i in range(t))+"!.\n\n<<3/ 3"[t%2::2]

के from random import*बजाय का उपयोग करता है import randomऔर randintबजाय randrangeकुछ बाइट्स को बचाने के लिए। वहाँ शायद कुछ बाइट्स बाहर गोल्फ के लिए छोड़ दिया है।


3
प्रत्यावर्तन "LLoovveess mmee n o t"[i%2::2].strip()अनावश्यक रूप से जटिल लगता है। क्या आप ऐसा नहीं कर सकते "Loves me"+~i%2*" not"?
xnor

यहां तक ["Loves me","Loves me not"][i%2]कि अधिक इष्टतम है, क्योंकि अब आप .strip()कुछ स्थानों पर चार्ट को बर्बाद कर रहे हैं । लेकिन हाँ, xnor के कोड का उपयोग करें
नाइट्रो 2k01

6

जावास्क्रिप्ट (ईएस 6), 110 102 बाइट्स

a='';for(i=j=new Date%18+3;i--;)a+='Loves me'+(j-i&1?'':' not')+(i?`...
`:j&1?`!
<3`:`.
</3`);alert(a)

यह एक छोटी लेकिन मजेदार छोटी चुनौती थी। अधिक छोटा करना संभव हो सकता है। कुछ बाइट-सेविंग ट्रिक्स के लिए Mwr247 का धन्यवाद!

वैकल्पिक संस्करण का उपयोग करके repeat(), 105 बाइट्स:

a='';for(i=j=new Date%18+3;i;)a+='Loves me'+' not'.repeat(j-i--&1)+(i?`...
`:j&1?`!
<3`:`.
</3`);alert(a)

डारन जेएस 5 + -चार निर्मित नाम। ओह अच्छा। सुझावों का स्वागत है!


प्रभावशाली संघनक। मैं हालांकि उत्सुक हूँ, क्यों 18+3|0?
1824 में Mwr247

@ Mwr247 ओह, डुह, कि जब से मैं इस्तेमाल किया गया था Math.random()। लगता है कि यह अब आवश्यक नहीं है।
18


5

रूबी, 91 बाइट्स

(n=3+rand(18)).times{|i|puts"Loves me"+[""," not"][i%2]+(i<n-1?"...":i%2>0?".
</3":"!
<3")}

5

आम लिस्प 106 104 बाइट्स

(format t"~{Loves me~[ not~]~#[~:*~[.~%</~;!~%<~]3~:;...~]~%~}"(subseq'#1=(1 0 . #1#)0(+ 3(random 18))))

यह केवल उन lisps पर काम करता है जो एक उचित अनुक्रम (जैसे cmucl, sbcl, clisp) ccl के लिए जाँच नहीं करते हैं और डिफ़ॉल्ट सुरक्षा स्तर पर त्रुटि और त्रुटि की जाँच करेंगे। ecl हमेशा के लिए लूप करेगा।

स्पष्टीकरण:

#1=(1 0 . #1#)एक परिपत्र सूची युक्त 1और उत्पन्न करता है0 और subseq(यह, केवल गैर-पोर्टेबल हिस्सा है के रूप में लंबाई [3,20] की एक सूची बनाने के लिए प्रयोग किया जाता है subseqकेवल उचित (यानी गैर परिपत्र) सूची पर काम करने के लिए मानक के लिए आवश्यक है)।

हमारा प्रारूप अब 1 0 1 0...लंबाई की सूची में चल रहा है [3,20]

का स्पष्टीकरण formatनिर्देशों की :

~{ इस सूची पर पुनरावृति

~[प्रारूप तर्क के मूल्य के आधार पर किसी भी संख्या के ~;साथ और समाप्त होने के ~]बाद Nth आइटम का चयन किया जाएगा। इसका उपयोग यहां इसलिए किया जाता है कि एक ~[वसीयत में पहला आइटम "लव मी नॉट" केस होगा और दूसरा "लव मी" केस। ध्यान दें कि ~[एक विभाजक के साथ~:; एक डिफ़ॉल्ट मामले चयन करता है।

~#[~[तर्क को छोड़कर काम करता है, शेष तर्कों की संख्या है। 0 शेष तर्कों का अर्थ है कि हम अंत में हैं, डिफ़ॉल्ट केस प्रिंट करना है...

~:* तर्क सूची को एक स्थिति में बैक अप करता है, जो हमें सही ट्रेलर प्रिंट करने की अनुमति देता है।


1
यह #lisp IRC चैनल द्वारा एक समूह प्रयास था। चतुर पुनरावृत्त प्रारूप-स्ट्रिंग और सबसेक हैक के लिए phf के लिए बहुत धन्यवाद।
जेसन

4

जूलिया, 98 बाइट्स

r=rand(3:20)
for i=1:r println("Loves me"*(i%2>0?" not":"")*(i<r?"...":i%2>0?".\n</3":"!\n<3"))end

Ungolfed:

# Define a random number 3 ≤ r ≤ 20
r = rand(3:20)

for i = 1:r
    # The loveless lines occur when i is even
    println("Loves me" *
            (i % 2 > 0 ? " not" : "") *
            (i < r ? "..." : i % 2 > 0 ? ".\n</3" : "!\n<3"))
end

4

UNIX शेल, 193 बाइट्स

t=$(seq 2 19|shuf|head -1)
l=t
p=...
while [ $t -ge 0 ];do
case $l:$t in t:0)p=!;h=\<3;;f:0)p=.;h=\</3;;esac
case $l in t)l=f;n=;; f)l=t;n=\ not;;esac
t=$((t-1))
echo Loves me$n$p
done
echo $h

4

जावा, 210 209 203 200 177 बाइट्स

  • को फ़्लिप i%2==0कियाi%2<1
  • -लूप के { ... }लिए छंटनी की गई for, स्थानांतरित हो गईe घोषणा को लूप में
  • फिर से आदेश दिया
  • हटाए गए संशोधक और अनावश्यक कोष्ठक, पुनः Randomप्रयोग और वृद्धि के लिएi

नोट: इस साइट पर प्रारूपण के लिए नीचे नई लाइन जोड़ी गई है, ऊपर की गणना एक पंक्ति के लिए है।

class F{public static void main(String[]a){for(int e=3+(int)(Math.random()*18),i=0;++i<=e;)
System.out.println("Loves me"+(i%2>0?i<e?"...":"!\n<3":" not."+(i<e?"..":"\n</3")));}}

Ungolfed:

class F {
    public static void main(String[] a) {
        for (int e = 3 + (int) (Math.random() * 18), i = 0; ++i <= e; )
            System.out.println("Loves me" + (i % 2 > 0 ? i < e ? "..." : "!\n<3"
                    : " not." + (i < e ? ".." : "\n</3")));
    }
}

1
पब्लिक को हटाकर आप 13 बाइट्स बचा सकते हैं।
चमकदार

@Luminous मैं अब भी के लिए एक रखने के लिए की आवश्यकता होगी main(), हालांकि ...
hjk

@TimmyD I वह दूसरा है।
आर.के.

4

सी, 123, 121, 109 106 अक्षर (108 बाइट्स)

(थोड़ा ♥♥♥ धोखा दे ♥ ♥♥ के साथ)

O;main(o){for(o=time(O)%18+3;o-O++;printf("Loves me%s%s\n",O&1?"":" not",o-O?"...":O%2?"!\n♥":".\n</3"));}

1f494 पर एक टूटे हुए दिल यूनिकोड बिंदु भी है , लेकिन मुझे एक फ़ॉन्ट खोजने में कठिनाई हुई जो इसे लागू करता है।


यह 120 अक्षर और 122 बाइट्स दिखाता है ...
AdmBorkBork

1
मुझे नहीं लगता कि आपको ज़रूरत है O=0, क्योंकि Cऑटो को इनिशियलाइज़ करना है 0?
FryAmTheEggman

@FryAmTheEggman अच्छा लगता है! पिछले संस्करण में मेरे पास ओ था main(o,O)जहां इसे आरंभीकृत किया जाना था।
जेन्स

अच्छा, मुझे ये पसंद है! मैं timeएक यादृच्छिक संख्या के रूप में उपयोग करने के बारे में नहीं सोचा था ... चतुर!
मैथ्यूॉक

@MatthewRock यदि आप इसके बारे में सोचते हैं, तो उपयोग करने वाले अन्य सभी प्रोग्राम srand(time(0))समान आवृत्ति के साथ अपना उत्तर बदल देंगे। सारंड पूरी तरह से बेकार है :-)
जेन्स

4

पायथन 2, 161 159 156 144 बाइट्स

from random import*;a=randrange(3,21)
for i in range(a):print'Loves me'+i%2*' not'+('...'if i!=a-1 else'.'if i%2 else'!')
print['<3','</3'][i%2]

यह केवल यादृच्छिक संख्या प्राप्त करने के लिए 39 बाइट्स है।

उनकी मदद के लिए मैडीफ़िश , फ्रायमेथेग्मैन , और ऑरलपी को एक बड़ा धन्यवाद ।

पीवाईजी , 109 बाइट्स

a=RR(3,21)
for i in R(a):P('Loves me'+i%2*' not'+('...'if i!=a-1 else'.'if i%2 else'!'))
P(['<3','</3'][i%2])

आप रेंज स्टेटमेंट को एक लाइन में कर सकते हैं। आप यह भी कर सकते हैंimport random as r
ब्लू

आप ऊपर की लाइन पर अंतिम प्रिंट स्टेटमेंट की सामग्री भी डाल सकते हैं।
ब्लू

मुझे लगता है कि आप बदल सकते हैं print'</3'if i%2 else'<3'करने के लिए print['<3','</3'][i%2]3 बाइट्स को बचाने के लिए।
काडे

हाँ वास्तव में मैं कर सकता हूँ; धन्यवाद!
सेलेओ

धन्यवाद! दिलचस्प है, import random as r;a=r.randrange(3,21)और import random;a=random.randrange(3,21)एक ही लंबाई के हैं।
सेलेओ

3

पॉवरशेल, 121 119 111 बाइट्स

$i=2..19|Random;1..$i|%{"Loves me$(if(!($_%2)){" not"})..."};"Loves me$(if(!($i%2)){"!`n<"}else{" not.`n</"})3"

संपादित करें - वास्तव में "Loves me"घोषित करने के बजाय स्पष्ट रूप से कम शामिल हैं$l

Edit2 - यह भूल गया कि मैं for()पाइप लाइनिंग द्वारा गोल्फ लूप कर सकता हूं ... durr ...

जर्जर भी नहीं। $(...)हम इन- for()लूपिंग के रूप में मुद्रित स्ट्रिंग को गतिशील रूप से समायोजित करने के लिए इनलाइन कोड निष्पादन ब्लॉकों का उपयोग करते हैं । ध्यान दें कि क्योंकि यह एक जोड़े बाइट को बचाने Get-के Randomलिए एक अंतर्निहित का उपयोग करता है , यह कुछ PowerShell संस्करणों पर बहुत धीरे-धीरे काम कर सकता है। संदर्भ

स्पष्टीकरण के लिए नीचे विस्तृत:

# Create a collection of (2,3,4,...18,19) and pipe it as input to Get-Random
$i = 2..19 | Get-Random

# Create a collection of (1,2,...$i-1,$i) and pipe it to seed a ForEach-Object loop
1..$i | ForEach-Object {
  if(!($_%2)) {
    # If the input number is even, we're on an even line
    Write-Output "Loves me not..."
  }
  Else {
    # The input number is odd
    Write-Output "Loves me..."
  }
}
If(!($i%2)) {
  # Our random number is odd
  Write-Output "Loves me!"
  Write-Output "<3"
}
Else {
  # Our random number is even
  Write-Output "Loves me not."
  Write-Output "</3"
}

3

सी ++, 210 193 184 168 बाइट्स

C ++ में .. क्योंकि .. क्यों नहीं? :)

#include <iostream>
main(){auto&c=std::cout;srand(time(0));int i,j=3+rand()%18;while(i++<j)c<<"Loves me"<<(i%2?"":" not")<<(i==j?"":"...\n");c<<(j%2?"!\n<3":".\n</3");}

जीना: 210 193 184 168

बस आशा करता हूं कि मेरा कोई भी परिवर्तन मंच पर निर्भर न हो।

मदद के लिए बेन Voigt को धन्यवाद । साथ ही, सभी टिप्पणियों के लिए धन्यवाद, वे बहुत मददगार थे।


हनीमून .. बस इसके 3 से 20 का एहसास करें। मैं इसे बाद में ठीक करूंगा। संभवतः 2 और बाइट्स j=3+(int)(rand()*17.0/RAND_MAX)
जोड़ेंगे

आप एक बहुत जगह बचा सकते हैं #define c coutऔर इसके using namespace std;द्वाराauto&c=std::cout;
बेन Voigt

इसके साथ ही कुछ को भी बचा लेंint i=0,j=rand()*20.0/RAND_MAX;while(i<j)
बेन Voigt

हैलो, एक बग मिला: अंतिम पंक्ति "मुझे प्यार करता है!" होना चाहिए, न कि "मुझे प्यार करता है।"
मैथ्यूॉक

1
मैं कहूंगा कि यह ठीक है - सी और सी ++ समान हैं। और अभी यह कोड जावा से अधिक लंबा है ...
मैथ्यू रॉक


2

पायथन 2, 117 बाइट्स

from random import*
n=randint(3,20)
print"...\n".join("Loves me"+i%2*" not"for i in range(n))+[".\n</3","!\n<3"][n%2]

पिछले एक को छोड़कर, प्रत्येक Loves me( not)?के बाद ...और एक नई पंक्ति का पालन करें । तो यह एक नौकरी के लिए लग रहा है join


थोड़ी देर लेकिन ".!\n\n<</33"[n%2::2]2 बाइट्स छोटी है।
FryAmTheEggman

@FryAmTheEggman हाँ, मैंने देखा है कि लेकिन यह Loovjo से चोरी नहीं करने का फैसला किया। इस बीच, किसी और ने उस समाधान को बिल्कुल पोस्ट किया है। [
श्रग

मैंने किसी और को इसे पोस्ट करते हुए नहीं देखा था, लेकिन मुझे पूरा यकीन है कि मेरी टिप्पणी पहली थी कि इसमें यह था, इसलिए आप चाहें तो इसका इस्तेमाल कर सकते हैं: P
FryAmTheEggman

2

आर, 141 132 128 114 114 111 बाइट्स

कोड

k=sample(3:23,1);for(i in 1:k)cat("Loves",c("me not...\n","me...\n","me not.\n</3","me!\n<3")[1+i%%2+2*!i<k])

Ungolfed

k <- sample(3:23, 1)        # Generates random "k" number from 3 to 23
for(i in 1:k) {             # Loop this block increasing i from 1 until k by 1
  cat                       # Concatenate and paste everything inside this block
  ("Loves",                 # Push "Loves" on every iterations of the loop
      c(                    # Create a vector of strings
        "me not...\n",      # Push string to the index "1" of vector
        "me...\n",          #   to the index "2"
        "me not.\n</3",     #   to the index "3"
        "me!\n<3"           #   to the index "4"
        )[1+i%%2            # Subset the vector by the index (1 or 2)
          +2*!i<k])}        #   if final iteration of loop then index += 2 (3 or 4)

मैंने एरिक ब्रूक्स कोड से कुछ प्रेरणा ली है ।

संपादित करें 1: अब कोड सही ढंग से अंतिम विराम चिह्न को आउटपुट करता है जैसा कि मार्टिन ने
संपादित किया है 2: एक लूप के लिए लूप को बदल दिया और अंतिम पंक्ति स्ट्रिंग के अंदर दिलों को शामिल किया।
संपादित करें 3: निकाला गया {}और बदल +(x==k)*2करने के लिए +2*!x<k
संपादित करें 4: पाश के लिए वापस और हटाया ()से (i%%2)+1
संपादित 5: लिखा me4 बार और हटायाsep=""


1

आर, 119 111 105 बाइट्स

x<-sample(3:20,1);cat(rep(c("Loves me...\n","Loves me not...\n"),x)[1:x]);cat(ifelse(x%%2==1,"<3","</3"))

1,2 संपादन: स्पष्ट रूप से दो विकल्पों को कोड करने से स्थान की बचत होती है।


1
आप एक बाइट =को असाइन करने के लिए <-और किसी अन्य के x%%2>0स्थान पर कर के उपयोग करके बचा सकते हैं x%%2==1। यह भी ध्यान दें कि यह अंतिम पंक्ति को सही ढंग से नहीं संभालता है; होना चाहिए .या !इसके बजाय होना चाहिए ...। (प्रश्न में उदाहरण आउटपुट देखें।)
एलेक्स ए।

1
@ एलेक्स ए आपको x%%2>0या तो ज़रूरत नहीं है ; बसx%%2
फ्लॉडरर

अच्छे अंक, धन्यवाद। मुझे वापस जाने और अंत को ठीक करने की आवश्यकता है
एरिक ब्रुक्स

1

C 226 बाइट्स

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){srand(time(NULL));int i=rand()%18+3;int j;for(j=0;j<i;j++)printf("Loves me%s%s\n",(j%2)?" not":"",(j==i-1)?(j%2)?".":"!":"...");printf("<%s3\n",(j%2)?"":"/");}

(प्रारूपण के साथ)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(NULL));
    int i = rand()%18 + 3;
    int j;
    for (j = 0; j < i; j++)
        printf("Loves me%s%s\n", (j % 2) ? " not" : "", (j==i-1) ? (j % 2) ? "." : "!" : "...");
    printf("<%s3\n", (j%2) ? "" : "/");
    return 0;
}

1
वापसी प्रकार को मुख्य (-5 बाइट्स) से हटाएं, डिफ़ॉल्ट प्रकार (-8 बाइट्स के साथ i और j को वैश्विक बनाएं, डिफ़ॉल्ट रूप से j में 0 की वजह से), NULL (-3) के बजाय 0 का उपयोग करें। अन्य चीजें - केवल एक चर का उपयोग करें और हो सकता है कि लूप की गिनती नीचे हो जाए। गोल्फिंग करते समय आमतौर पर आयात stdio की आवश्यकता नहीं होती है।
aragaer

1

पायथन 2, 115 बाइट्स

from random import*
n=randint(2,20)
print'...\n'.join('Loves me'+i%2*' not'for i in range(n))+'.!\n\n<</33'[n%2::2]

1

PHP, 191 187 146 165 बाइट्स

$x=rand(5,22);for($i=2;++$i<=$x;){echo"\nLoves me";if($i%2<1)echo" not";if($i<$x)echo"...";if($i==$x&&$i%2<1){echo".\n</3\n";}elseif($i==$x&&$i%2>0){echo"!\n<3\n";}}

Ungolfed:

$x=rand(5,22);
for($i=2;++$i<=$x;){
    echo "\nLoves me";
    if($i%2<1) echo " not";
    if($i<$x) echo "...";
    if($i==$x && $i%2<1){
        echo ".\n</3\n";
    }
    elseif($i==$x && $i%2>0){
        echo "!\n<3\n";
    }
}

Pyth और cjam के लिए 48,49 बाइट्स ... वाह :)


बदल गया $ i% 2 == 0 से $ i% 2 <1 (x2) और $ i% 2! = 0 से $ i% 2> 0 (x2)
मारेक बेटमैन

पता चलता है कि टर्नरी ऑपरेटरों का हर समय सबसे अच्छा जवाब नहीं है :)
मारेक बेटमैन

1

mSL, 178 176 156 154 बाइट्स

संपादित करें 1: 2 == 0को < 1
संपादित करने के लिए बदल दिया गया: अनावश्यक व्हाट्सएप को हटा दिया गया, धन्यवाद एलेक्सा!
संपादन 3: हटाए गए कोष्ठक

alias l {
var %n 1
while %n <= $rand(3,20) {
var %m $+(Love me,$iif($calc(%n % 2) < 1,$chr(32) $+ not),...)
echo %m
inc %n
}
echo $iif(n isin %m,</3,<3)
}

1
आपका समाधान वर्तमान में 176 बाइट्स है, न कि 177। क्या सभी व्हाट्सएप आवश्यक है? यदि नहीं, तो आप अनावश्यक कोड को हटाकर अपने कोड को एक महत्वपूर्ण राशि से कम कर सकते हैं।
एलेक्स ए।

@AlexA। ओह, मुझे नहीं पता कि मैंने 177 क्यों लिखा, और व्हॉट्सएप की आवश्यकता को इंगित करने के लिए धन्यवाद, यह वास्तव में आवश्यक नहीं है!
डेनी

1

पर्ल, 97 बाइट्स

$_='She loves me...
'x(3+rand 18);s/(me.*?)me/$1me not/gs;s/e...
$/e!
<3/;s/t...
$/t.
<\/3/;print

पठनीय संस्करण:

$_="She loves me...\n"x(3+rand 18);
s/(me.*?)me/$1me not/gs;
s/e...$/e!\n<3/;
s/t...$/t.\n<\/3/;
print

1

हासियम , 265 बाइट्स

func main(){rnd=new Random();times=rnd.next(3,21);println("Loves me...");for(x=0;x<times-1;x++){if(x%2==0)println("Loves me not...");else println("Loves me...");}if((times-1)%2==0){println("Loves me not.");println("</3");}else{println("Loves me!");println("<3");}}

इसका जवाब गोल्फ दिया गया है।


वर्तमान में आपका समाधान है 458 बाइट्स है , 523 नहीं। आप अनावश्यक व्हाट्सएप को हटाकर और चर नामों को छोटा करके अपने स्कोर को बेहतर बना सकते हैं। उदाहरण के लिए अन्य हासियम समाधान देखें ।
एलेक्स ए।

1
जैसा कि मैंने अन्य हासियम उत्तर पर ध्यान दिया, यादृच्छिक संख्या जनरेटर अत्यंत पक्षपाती प्रतीत होता है। मैंने इसे नवीनतम संस्करण के साथ 500 बार चलाया और केवल दो प्राप्त किए </3
डेनिस

+ डेनिस रैंडम जनरेटर सीधे सी # रैंडम नंबर जनरेटर के ऊपर बनाया गया है। देखें: github.com/H
शियमTeam/Hassium/blob/master/src/Hassium/…

3
यह सही ढंग से वरीयता प्राप्त करने के लिए प्रतीत नहीं होता है। यदि मैं rnd = new Random();rnd.next(0,2);1000 बार निष्पादित करता हूं , तो वितरण ठीक है। हालांकि, अगर मैं rnd = new Random();एक बार और rnd.next(0,2);1000 बार अमल करता हूं, तो मुझे हमेशा 533 0s और 467 मिलते हैं1 s ।
डेनिस

1

C # (160)

कोड hjk से जवाब से प्रेरित है , क्रेडिट उसे जाता है।

class P{static void Main(){for(int e=3+new Random().Next(0,18),i=0;++i<=e;)Console.WriteLine("Loves me"+(i%2>0?i<e?"...":"!\n<3":" not."+(i<e?"..":"\n</3")));}}

Ungolfed:

class P
{
    private static void Main()
    {
        for (int e = 3 + new Random().Next(0, 18), i = 0; ++i <= e;)
            Console.WriteLine("Loves me" + (i % 2 > 0 ? i < e ? "..." : "!\n<3" : " not." + (i < e ? ".." : "\n</3")));
    }
}

1

लुआ, 137 132 बाइट्स

शायद बहुत अधिक गोल्फ हो सकता है, लेकिन यहाँ यह अभी के लिए है:

t=math.random(3,20)for i=1,t do io.write(i%2==0 and"Loves me"or"Loves me not")print(i==t and(i%2==0 and"!\n<3"or".\n</3")or"...")end

कोड स्पष्टीकरण और अपुष्ट:

t=math.random(3,20) --Generates a random number between 1 and 30. We need to assign it to a variable to check if the loop is over later.
for i=1,t do
  io.write(i%2==0 and"Loves me"or"Loves me not") --If i%2 is 0 write without a newline Loves me, if not print Loves me not.
  print(i==t and (i%2==0 and"!\n<3" or ".\n</3") or "...") --If it is not the end of the loop, put ..., else if we ended on an even print ! a newline, and then a heart, but if we ended on an odd put ., a newline and a broken heart :(
end

संपादित करें: कुछ व्हाट्सएप काट दिया।



1

पॉवरशेल , 85 88 बाइट्स

+3 बाइट्स धन्यवाद Veskah: यह एक अच्छा बिंदु है।

0..(1..19|Random)|%{($l='Loves me')+' not'*($n=$_%2)+'...'}
$l+('!
<3',' not.
</3')[!$n]

इसे ऑनलाइन आज़माएं!


1
यह "मुझे प्यार करता है, मुझे प्यार करता है </ 3" उत्पन्न कर सकता है, जो कि मैं कैसे चश्मा पढ़ता हूं, इसके आधार पर, न्यूनतम संख्या लाइनों के नीचे है।
विस्कह

वास्तव में of *3* to 20 lines inclusive। धन्यवाद!
माज़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.