एनी, मेनी, मिनि, मो


11

परिचय

बचपन के गीत एनी, मीनी, मिन्टी, मो का उपयोग अक्सर चयन किया जाता था कि टैग खेलते समय कौन "यह" था। हर कोई एक सर्कल में खड़ा होता है और यादृच्छिक पर चुने गए एक व्यक्ति को इंगित करता है। वे गाते हैं:

Eeny, meeny, miny, moe,
एक बाघ को पैर की अंगुली से पकड़ें।
यदि वह खोखला हो जाता है, तो उसे जाने दो,
एनी, मीनी, मिनी, मो।

जब वे प्रत्येक शब्द गाते थे, तो वे मंडली के अगले व्यक्ति की ओर इशारा करते थे। अंतिम "मो" गाया जाने वाला व्यक्ति "यह" होगा। बच्चे तुरंत खड़े हो जाते और तितर-बितर हो जाते।

लक्ष्य

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

विजेता का चयन एक सप्ताह में किया जाएगा।

इनपुट

एसटीडीआईएन से, एक एकल, सकारात्मक पूर्णांक, बच्चों की संख्या। यह गीत में शब्दों की संख्या से अधिक हो सकता है।

उत्पादन

एक ऐसी सूची के बारे में लिखता है जहाँ प्रत्येक पंक्ति एक बच्चे का प्रतिनिधित्व करती है और इसमें गाये जाने वाले शब्द शामिल होते हैं, जबकि उन्हें इंगित किया जा रहा था। यदि बहुत अधिक बच्चे हैं, तो खाली लाइनों को छोड़ा जा सकता है।

आवश्यकताएँ

  • हमेशा पहले बच्चे से शुरुआत करें।
  • विराम चिह्न के बिना शब्द प्रदर्शित करें।
  • अंतिम "मो" को "एमओई" के रूप में बल दिया जाना चाहिए! विराम चिह्न सहित।

उदाहरण

इनपुट

3

उत्पादन

Eeny moe tiger toe hollers go miny
meeny Catch by If let Eeny MOE!
miny a the he him meeny

इनपुट

7

उत्पादन

Eeny by him
meeny the go
miny toe Eeny
moe If meeny
Catch he miny
a hollers MOE!
tiger let

इनपुट

1

उत्पादन

Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!

इनपुट

21

उत्पादन

Eeny
meeny
miny
moe
Catch
a
tiger
by
the
toe
If
he
hollers
let
him
go
Eeny
meeny
miny
MOE!

1
क्या इनपुट कभी मौजूद शब्दों की संख्या से अधिक होगा?
दरवाज़े

7
"एक" और "यदि वह" और "उसके" / "द्वारा" को दो शब्दों या एक के रूप में माना जाना चाहिए? गीत में, वे केवल एक "बिंदु" के रूप में गिना करते हैं
OldBunny2800

4
हम हमेशा "मेरी ... माँ ... कहा ... ... से ... बहुत ... सर्वश्रेष्ठ ... एक ... और ... आप ..." के साथ समाप्त हो गए ... यह! " यह एक अच्छा बोनस होगा। बेशक,
चीटर्स

1
@ThisSuitIsBlackNot NOOO (डार्थ वादर की आवाज़)! तुमने मेरी लाइन चुरा ली। मैंने शाब्दिक रूप से PPCG पर लॉग इन किया है, क्योंकि मैं पिछले दो दिनों से इसके बारे में सोच रहा हूं क्योंकि मैंने यह देखा है।
अश्विन गुप्ता

1
इतना मजेदार तथ्य नहीं: टाइगर एन शब्द हुआ करता था।
DanTheMan

जवाबों:


5

टीस्क्रिप्ट , 82 बाइट्स

D`${a="Ey Ú9y ·ny "}¶e C® a g by e e If  Ò@s ¤t m go ${a}MOE!`q.KαtΣj═)j╝

Decompress, chunk, transpose, join, आउटपुट।

व्याख्या

              // Implicit: x = input
D`...blah...` // Decompress "Eeny miny moe..."
q             // Split
Kα            // chunk into x-size blocks (α == x)
t             // Transpose
Σ             // Loop through lines
j═)             // Join with spaces
j╝            // Join with newline

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


गैर-प्रतिस्पर्धा 81 बाइट

αश्रृंखलित नहीं मिल रही थी, .तो मैं बग फ़िक्स इस पड़ा

D`${a="Ey Ú9y ·ny "}¶e C® a g by e e If  Ò@s ¤t m go ${a}MOE!`qKαtΣj═)j╝

6

Pyth, 103 89 84 वर्ण

स्ट्रिंग संपीड़न के साथ 18 बाइट्स सहेजे गए, @Dennis और @FryAmTheEggman की बदौलत @isaacg के लिए
एक और बाइट धन्यवाद

चेतावनी: कोड में कई unprintables हैं; इसे आज़माने के लिए नीचे दिए गए लिंक का उपयोग करें।

VQjd%Q>cs[J."@y)òÎ5O¹c×Ú"."@yæ\J}ÇZH66¥ÓÀD¸¶=ðÉ §J%ÔþÖúÅ="J"MOE!")\@N

इसे ऑनलाइन आज़माएं | परीक्षण सूट

शायद गोल्फ हो सकता है। सुझावों का स्वागत है!

यह काम किस प्रकार करता है

VQjd%Q>cs[J."..."."..."J"MOE!")\@N    Implicit: Q = eval(input)
VQ                                    For each item N in range 0...int(Q):
         [                    )        Create an array out of the following:
          J."..."                       Set J to this string, decompressed. ("Eeny@meeny@miny@")
                 ."..."                 This string, decompressed. ("moe@Catch@...let@him@go@")
                       J                J.
                        "MOE!"          "MOE!".
        s                              Join the array with the empty string.
       c                       \@      Split the result on "@".
      >                          N     Cut off the first N items.
    %Q                                 Take every Qth item.
  jd                                   Join with spaces.

Eeny meeny minyकिसी भी तरह से पुन: उपयोग करके कुछ बाइट्स बचाना चाहिए। इसके अलावा, पायथ में दो (डी) संपीड़न ( .Zऔर .") के लिए अंतर्निहित बिल हैं ।
डेनिस

@ डेनिस धन्यवाद, ."14 बाइट्स बचाता है!
ETHproductions

पाइथ यूटीएफ -8 का उपयोग करता है या कुछ और? यह 89
चार्ट है

@ Do @ Py डिफ़ॉल्ट रूप से ISO 8859-1 का उपयोग करता है, इसलिए प्रत्येक वर्ण बिल्कुल एक बाइट है।
डेनिस

FNQ== VQ, वैसे।
isaacg

5

जेली, 84 बाइट्स

“£Dṡ“Ṙ©“Ė“¡Ḳ⁵“=U“¡Ẹ⁵“¡Ṇm“ȯf“ŀQ“ÞṖċ¥“ṅ_“Ẉ1“¡æḷ“¡ƒmxĠ“¡ṇƭEỤr“¡Þ¦»ṫ-2;;“MOE!”W¤sƓZj€⁶j⁷

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


4
स्ट्रिंग को हाथ से दबाना ... मनोरंजक था। यदि जेली के समारोह में विभाजन होता तो स्कोर बहुत बेहतर होता।
डेनिस

5

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

l=Array(n=+prompt()).fill``;`${s=`Eeny meeny miny `}moe Catch a tiger by the toe If he hollers let him go ${s}MOE!`.split` `.map((w,i)=>l[i%n]+=w+` `);alert(l.join`
`)

व्याख्या

l=Array(              // l = array of lines
  n=+prompt()         // n = input number
).fill``;             // initialise l as empty strings

`${s=`Eeny meeny miny `}moe Catch a tiger by the toe If he hollers let him go ${s}MOE!`

.split` `.map((w,i)=> // for each word w
  l[i%n]+=w+` `       // add it to the lines
);
alert(l.join`
`)                    // output the lines

किसी l=Array(n).fill`` कारणवश काम नहीं करता है ?
ETHproductions

@ETHproductions यह काम करता है। मैं अभी इसे किसी भी तरह छोटा करना भूल गया! धन्यवाद।
user81655

@ user81655 मुझे जेएस प्रॉम्प्ट () विंडोज़ से प्यार है। वे बस इतने मज़ेदार हैं। (मुझे पता है कि पागल लग रहा है, लेकिन मेरा मतलब है कि हर दूसरे भाषा के कंसोल की तुलना में ।आउट या समकक्ष प्रिंट प्रकार की अभिव्यक्ति)
अश्विन गुप्ता

4

हास्केल, 160 157 बाइट्स

import Data.Lists
unlines.map unwords.transpose.(`chunksOf`(["moe Catch a tiger by the toe If he hollers let him go","MOE!"]>>=words.("Eeny meeny miny "++)))

"Eeny meeny miny "अन्य भागों ( "moe Catch ..."और "MOE!") के लिए आगे बढ़ें , दोनों तारों को मिलाएं, शब्दों में विभाजित करें, आवश्यक आकार के टुकड़े ले जाएं, एक स्ट्रिंग में फिर से स्थानांतरित करें और समतल करें।

@ मौरिस ने " fएनी मीनी मिनी " और पॉइंटफ्री बनाते हुए सामान्य बटरिंग फैक्टरिंग करके 3 बाइट्स पाए ।


शायद s="Eeny meeny miny "कुछ बाइट्स बचाता है।
लिन

@ मौरिस: मैंने कोशिश की, लेकिन यह लंबा था।
nimi

@ मौरिस: ... ओह नहीं, इसकी लंबाई समान है।
nimi

कैसे के बारे मेंf=unlines.map unwords.transpose.(`chunksOf`(["moe Catch a tiger by the toe If he hollers let him go","MOE!"]>>=words.("Eeny meeny miny "++)))
लिन

@ मौरिस: अच्छा। एक बार fपूरी तरह से इंगित करने के बाद हम नाम भी छोड़ सकते हैं।
नौ

4

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

संपादित करें: धन्यवाद जो विलिस!

i=input()
s='Eeny meeny miny '
for j in range(i):print' '.join((s+'moe Catch a tiger by the toe If he hollers let him go '+s+'MOE!').split()[j::i]) 

यह उस ट्रिक का उपयोग करता है जो [0 :: n] सूची के nth तत्व को प्रिंट करता है।

इसे यहाँ आज़माएँ


आउच। खैर आपने मेरा जवाब पूरी तरह से नष्ट कर दिया। जबरदस्त हंसी। मैं आपके टिप को बाद में आज प्रिंट ("\ n") के बारे में बताने जा रहा हूं। ::ऑपरेटर वास्तव में क्या करता है? क्या यह पाश की तरह है?
अश्विन गुप्ता

3

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

puts (a=[*%w[Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!].each_slice(gets.to_i)])[0].zip(*a[1..-1]).map{|x|x*' '}

स्ट्रिंग को "संपीड़ित" करने के मेरे सभी प्रयासों ने अभी इसे लंबा कर दिया है। अब भी कोशिश कर रहा हूं...

puts                      # output to STDOUT...
(a=                       # assign this stuff to the variable a
 [*                       # convert to array...
  %w[blah blah]           # %w splits on spaces
  .each_slice(gets.to_i)  # split into slices of input number
 ]
)[0]                      # take the first element of a
.zip(*a[1..-1])           # zip it with the remaining elements
                          #   because transpose complains about ragged 2D arrays
.map{|x|x*' '}            # join all sub-arrays on space
                          #   puts automatically inserts newlines for us

3

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

a=prompt(),b=Array(a--).fill``,c=0;"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!".split` `.map(v=>(b[c]+=v+' ',c+=c>a-1?-c:1));alert(b.join`\n`)

स्पष्टीकरण:

a=prompt(), //Get the STDIN
b=Array(a--).fill``, //Make an array based on how many kids there are
c=0; //Start the iteration variable
"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!"
.split` `.map(
    v=>(
        b[c] += v + ' ',
        c += c > a - 1 ? -c : 1
    )
);alert(b.join`\n`)

आपकी इनपुट विधि सही है, लेकिन आउटपुट विधि स्वीकार नहीं की जाती है। हालाँकि, आप इसे एक फ़ंक्शन में एक तर्क के रूप में इनपुट प्राप्त करते हुए लपेट सकते हैं। आप निम्नलिखित की कोशिश कर सकते हैं: I=>(b=Array(I--).fill``,c=0,"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!".split` `.forEach(v=>(b[c]+=v+' ',c+=c>I-1?-c:1)),b)जो कि 172 बाइट्स लंबा है। यह सरणी में एक तत्व के रूप में प्रत्येक पंक्ति देता है। मुझे लगता है कि यह स्वीकार्य है।
इस्माइल मिगुएल

वैसे, यदि आप .map()इसके बजाय का उपयोग करते हैं .forEach(), तो आप 169 बाइट्स को कम करके, 3 बाइट्स बचा सकते हैं। थोड़ा और अधिक लोमहर्षक के साथ, यह वास्तव में उल्लेखनीय हो सकता है!
इस्माईल मिगुएल

@IsmaelMiguel यह सवाल इनपुट और आउटपुट के लिए विशेष रूप से पूछने के लिए कहता है STDINऔर STDOUTइसलिए मुझे लगता है कि यह दुर्भाग्य से promptऔर alertदुर्भाग्य से जावास्क्रिप्ट उत्तरों को सीमित करता है ।
user81655

ओह मैं समझा। मौका मिलने पर मैं कोड अपडेट कर दूंगा। मुझे सूचित करने के लिए धन्यवाद :-)
क्विल

@ user81655 आप सही हैं। इसका alert(b.join`<newline>`)अंत में होना चाहिए । लेकिन नुकसान को अभी भी कम किया जा सकता है .map(), इसके बजाय .forEach()
इस्माइल मिगुएल

3

पायथन 3, 279 278 272 173 बाइट्स

(माथियास एटिंगर के लिए धन्यवाद जिन्होंने सचमुच मुझे 100+ BYTES बचा लिया ! )

s=" Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny moe!";w=s.split();i=input();i=int(i)
for z in range(i):W=w[z::i];print(" ".join(W))  

अगर किसी के पास सुझाव या आत्महत्या है तो मैं वास्तव में उनकी सराहना करूंगा। धन्यवाद!


मुझे लगता है कि आपने गलत समझा है कि इनपुट क्या दर्शाता है। यह दिखाने के लिए लाइन नंबर नहीं है, यह बच्चों की संख्या है जिसके बीच शब्दों को विभाजित करना है। हर पंक्ति प्रदर्शित होनी चाहिए। आपके कोड में, int(i)का स्थान लेना चाहिए 3, लेकिन उसके बाद ठीक करने के लिए अन्य त्रुटियां हैं।
हाथ-ई-फूड

@ हाथ-ई-फूड ठीक है मेरा मानना ​​है कि यह अब आपके द्वारा निर्दिष्ट के रूप में काम करता है!
अश्विन गुप्ता

यह बेहतर लग रहा है! :-) और यदि आप कुछ गोल्फ सहायता चाहते हैं, तो मोडुलो ऑपरेटर की जांच करें, जो आमतौर पर लिखा जाता है %। यह चक्रीय काउंटरों के लिए आदर्श है।
हैंड-ई-फूड

@ हाथ-ई-खाद्य ठीक है धन्यवाद! मुझे लगता है कि मुझे पता है कि आपको क्या मिल रहा है। मैं इसे कल ठीक करने जा रहा हूं। मुझे लगता है कि मैं कम से कम एक दो बाइट्स दाढ़ी कर सकता हूं।
आश्विन गुप्ता

कुछ बिंदु जो दोनों सर्वोत्तम प्रथाओं पर कार्य करते हैं और कोड को छोटा करने में मदद करते हैं: 1) .split()रिक्त स्थान पर विभाजित हो जाएगा (स्थान, newlines, टैब) 2) range(0, x)को सबसे अच्छा लिखा जाता है range(x)3) स्लाइस अंकन पर एक नज़र है: w[0::3]प्रत्येक तीन की सूची लौटाएगा में शब्द w
301_Moved_Permanently 13:20 बजे

2

गणितज्ञ, 154 बाइट्स

StringRiffle[Thread@Partition[StringSplit@"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!",#,#,1,""],"
"," "]&

अधिकांश अन्य उत्तरों के स्प्लिट-चंक-ट्रांसपोज़-ज्वाइन-आउटपुट विधि का उपयोग करता है।


2

MATLAB, 167 बाइट्स / वर्ण:

n=input('');s='Eeny meeny miny ';s=strsplit([s 'moe Catch a tiger by the toe If he hollers let him go ' s 'MOE!']);f=@fprintf;for i=1:n f('%s ',s{i:n:end});f('\n');end

स्पष्टीकरण:

n=input('');             % Grab the input (number of children)
s='Eeny meeny miny ';    % Common string portion
% Build the full string and split into cell array at spaces
s=strsplit([s 'moe Catch a tiger by the toe If he hollers let him go ' s 'MOE!']);
f=@fprintf;              % Just a shorthand for later (only saves 1 char here)
for i=1:n                % Loop to the number of children
    f('%s ',s{i:n:end}); % Print each nth word, shifted by child
    f('\n');             % Start each child's words on a new line
end

इस एक की लंबाई के लिए कोई पुरस्कार नहीं जीता जाएगा, लेकिन यह मजेदार था। :-)


2

जाप, 90 87 86 बाइट्स

Uo mW{V=`EydÚ9yd·nyd` +`¶C®»dgdbydÈIfddÒ@sd¤tdmdgod{V}MOE!` qd f@Y%U¥W} m¸·

बहुत सारे अनपेक्षित। इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

              // Implicit: U = input
Uo mW{     }  // Create the range 0...U and map each item W to:
V=`...`       //  Set V to this string, decompressed. "Eenydmeenydmined"
+`...{V}MOE!` //  Concatenate it with this string, decompressed, with V inserted.
qd            //  Split at "d"s.
f@Y%U¥W       //  Filter to only the items where (index % U == W).
m¸            // Map each item by joining with spaces.
·             // Join the result with newlines.

मैंने विभिन्न सीमांकक के साथ स्ट्रिंग को संपीड़ित करने की कोशिश की है। रिक्त स्थान की तुलना में अधिक कुशल एक ही चीज़ एक लोअरकेस अक्षर होगी, लेकिन इनमें से अधिकांश पहले से ही उपयोग किए जाते हैं, और इस प्रकार, स्ट्रिंग को विभाजित करने के लिए उपयोग नहीं किया जा सकता है। यहाँ शेष लोगों के साथ कितना संपीड़न हासिल किया गया है:

space -> 69 bytes
c -> 66 (including a null byte)
d -> 65
j -> 69
k -> 69
p -> 68
q -> 69
s -> 61 (but there's an s in "hollers")
u -> 65
w -> 67
x -> 69
y -> 69

वर्तमान में मैं उपयोग कर रहा हूं dsकिसी अन्य पत्र को प्रतिस्थापित करने के साथ बाइट को सहेजना संभव हो सकता है hollers

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