बू! एक हैलोवीन कोड गोल्फ चैलेंज


15

एक प्रोग्राम लिखें जो इनपुट स्ट्रिंग की लंबाई 2 या उससे अधिक अक्षर लेता है और स्ट्रिंग को जोड़ता है ~BOO!~ (उस स्ट्रिंग में एक समरूप और बेतरतीब स्थान है) एक समरूप यादृच्छिक में स्थान पर अंत में नहीं है।


अस्वीकृत नमूना जानकारी :2 या (खाली इनपुट)

अस्वीकृत नमूना आउटपुट : Hello ~BOO!~ या ~BOO!~ Hello इनपुट के लिएHello

नमूना इनपुट :Hello, World!

नमूना आउटपुट :Hel ~BOO!~ lo, World! याHello, Worl ~BOO!~ d!


यह कोड गोल्फ, फेलस है। मानक नियम लागू होते हैं। बाइट्स में सबसे छोटा कोड जीतता है।


डेनिस को सबसे छोटा, सबसे शानदार कार्यक्रम करने के लिए बधाई ! हेलोवीन की शुभकामना!


क्या एक कमांड-लाइन तर्क ठीक होगा, या क्या उसे स्टिंग करना होगा?
DLosc

कुछ भी जो एक इनपुट लेता है और संशोधन के साथ आउटपुट प्रिंट करता है वह स्वीकार्य है। मैं डिफ़ॉल्ट रूप से STDIN का उपयोग करता हूं क्योंकि यह एकमात्र शब्द है जिससे मैं परिचित हूं।
आर्कटिकस

जवाबों:


6

पायथ, 19 18 बाइट्स

j" ~BOO!~ "cz]OtUz

1 बाइट को बंद करने के लिए @Jakube का धन्यवाद!

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

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

                    (implicit) Store the input in z.
                Uz  Compute [0, ... len(z)-1].
               t    Remove the first element.
              O     Select an integer, pseudo-randomly.
             ]      Wrap it in an array.
           cz       Split the input string at that point.
j" ~BOO!~ "         Join the split string, using " ~BOO!~ " as separator.

4

जीएमएल, 91 बाइट्स

s=get_string("","")
show_message(string_insert(" ~BOO!~ ",s,irandom(string_length(s)-2)+1);

पर्याप्त सरल - एक स्ट्रिंग प्राप्त करें, इसमें सबस्ट्रिंग डालें, स्ट्रिंग को आउटपुट करें। किया हुआ।


कभी नहीं सोचा था कि मैं कोडगुल्फ पर जीएमएल देखूंगा।
स्टीफन डोनल

3

पायथन 3, 60 बाइट्स

s=input();n=1+hash(s)%(len(s)-1);print(s[:n],'~BOO!~',s[n:])

ध्यान दें:

का मोड्यूलो hash()स्ट्रिंग की लंबाई पर समान रूप से वितरित किया जाएगा। यदि आपको लगता है कि नियम झुकना है, तो ध्यान दें कि अजगर के हैश रैंडमाइजेशन के कारण, यह वास्तव में यादृच्छिक है: एक ही इनपुट के साथ बार-बार निष्पादित होने पर अलग-अलग परिणाम मिलेंगे।


2

सीजेएम, 20 बाइट्स

l_,(mr)/(" ~BOO!~ "@

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

स्पष्टीकरण:

l       Get input.
_,      Calculate length.
(       Decrement, since the number of possible positions is 1 less than length.
mr      Generate random number between 0 and length-2
)       Increment, giving random number between 1 and length-1.
/       Split. Note that this splits repeatedly, but this will not do any harm.
        We will only really use the first split.
(       Peel off the first fragment after the split.
" ~BOO!~ "
        Push the magic string.
@       Rotate the list with the remaining fragments to the top.

2

पिप, 19 बाइट्स

कमांड-लाइन से इनपुट लेता है। यदि इनपुट में रिक्त स्थान या अन्य विशेष वर्ण हैं, तो इसे उद्धरणों में रखा जाना चाहिए।

a^@1RR#aJ" ~BOO!~ "

स्पष्टीकरण:

a                    Command-line arg
 ^@                  Split at index...
   1RR#a             ...random integer >= 1 and < length(a) (Python randrange)
        J" ~BOO!~ "  Join on that string and autoprint

क्या आपका मतलब है कि इनपुट को एक एकल कमांड-लाइन तर्क के रूप में पारित किया जाना है, या क्या आपको वास्तव में पिप के लिए उद्धरण पास करना है?
डेनिस

1
@ डेनिस पूर्व। उद्धरण शेल विस्तार को रोकने के लिए हैं, और कई कमांड लाइन आर्ग्स के रूप में रिक्त स्थान के साथ सामान को रोकने के लिए हैं।
DLosc

1

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

print((s=readline())[1:(r=rand(2:length(s)-2))]," ~BOO!~ ",s[r+1:end])

Ungolfed:

# Read a line from STDIN
s = readline()

# Define a random integer within the bounds of s
r = rand(2:length(s)-2)

# Print to STDOUT with boo in there somewhere
print(s[1:r], " ~BOO!~ ", s[r+1:end])

1

एपीएल, 27 बाइट्स

{(-⌽' ~BOO!~ ',⍵⌽⍨⊢)?¯1+⍴⍵}

एपीएल में एक डालने का कार्य नहीं है, इसलिए हम इसके बजाय स्ट्रिंग को घुमाते हैं।

{                          }    ⍝ Monadic function:
                     ?¯1+⍴⍵     ⍝ Place to insert string, let's say it's X
 (                  )           ⍝ Monadic train:
               ⍵⌽⍨⊢            ⍝ Rotate input by X (⊢) to the left
    ' ~BOO!~ ',                 ⍝ Concatenate ' ~BOO!~ '
  -                             ⍝ -X
   ⌽                            ⍝ Rotate that by X to the right

TryAPL पर उदाहरण इनपुट


1

विटसी, 19 बाइट्स

ध्यान दें कि zऔरZ आज संपादित किए गए थे, लेकिन इस चुनौती के लिए नहीं।

I1-R1 + \ i "~ OOB ~" zZ
I1- इनपुट की लंबाई प्राप्त करें, ऋण 1
   स्टैक के शीर्ष आइटम पर 0 से एक यादृच्छिक संख्या को पुश करें।
    1+ इसमें एक जोड़ें - यह अब 1 से इनपुट तक एक यादृच्छिक संख्या है
                      लंबाई - 1।
      \ i इनपुट के कई आइटम प्राप्त करें।
        "" OOB ~ "स्टैक करने के लिए '~ BOO ~' पुश।
                 z बाकी इनपुट प्राप्त करें।
                  Z यह सब आउटपुट।


1

पायथन 3, 79 बाइट्स

from random import*;s=input();n=randint(1,len(s)-1);print(s[:n],'~BOO!~',s[n:])

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

सुंदर आत्म-व्याख्यात्मक - एक स्ट्रिंग पढ़ें, 1 और स्ट्रिंग की लंबाई के बीच एक यादृच्छिक पूर्णांक चुनें, और ' ~BOO!~ 'सम्मिलित के साथ स्ट्रिंग प्रिंट करें ।


मेरा समाधान बिल्कुल । करने के लिए पत्र
आर्कटिकस

@ मेगो एक यादृच्छिक कोड देखकर ~ BOO! ~ </ Code> अपने कार्यक्रम में दिखाने के लिए बहुत डरावना है।
आर्कटिकस

चूंकि कई तर्क printमुद्रित-अलग-अलग होते हैं, आप रिक्त स्थान काट सकते हैं print(s[:n],'~BOO!~',s[n:])
xnor

1

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

34 बाइट्स कोड + 1 बाइट कमांड लाइन

$-=rand y///c-2;s/..{$-}\K/~BOO!~/

उपयोग:

perl -p entry.pl

1

सी #, 125 बाइट्स

using System;class X{static void Main(string[]a){Console.Write(a[0].Insert(new Random().Next(a[0].Length-2)+1," ~BOO!~ "));}}

विस्तारित:

using System;
class X
{
    static void Main(string[] a)
    {
        Console.Write(a[0].Insert(new Random().Next(a[0].Length - 2) + 1, " ~BOO!~ "));
    }
}

यह समाधान मानता है कि स्ट्रिंग को पहले कमांड-लाइन पैरामीटर के रूप में पारित किया गया है। यह सामान्य रूप से C # के लिए नहीं है (stdin अधिक सामान्य है), इसलिए मैंने एक समाधान भी शामिल किया है जो सामान्य stdin का उपयोग करता है:

सी #, 139 बाइट्स

using System;class X{static void Main(){var x=Console.In.ReadToEnd();Console.Write(x.Insert(new Random().Next(x.Length-2)+1," ~BOO!~ "));}}

विस्तारित:

using System;
class X
{
    static void Main()
    {
        var x = Console.In.ReadToEnd();
        Console.Write(x.Insert(new Random().Next(x.Length - 2) + 1, " ~BOO!~ "));
    }
}

(टिप्पणियां देखें, तर्क ठीक हैं) static void Main(string[] x) {Console.Write(x[0].Insert (...) x[0].Length (...)आपके कोड को छोटा कर देगा
Jan 'splite' K.

0

MATLAB, 69 बाइट्स

i=input('');a=randi(nnz(i)-1,1);disp([i(1:a) ' ~Boo!~ ' i(a+1:end)]);

MATLAB में दिए गए सूचकांक में एक स्ट्रिंग मध्य स्ट्रिंग सम्मिलित करना बाइट के संदर्भ में महंगा है। यदि ऐसा करने का एक सरल तरीका था, तो मैं एक अनाम फ़ंक्शन पर जाकर एक उचित राशि बचा सकता हूं, लेकिन मुझे एक नहीं मिल सकता है। ठीक है।

मूल रूप से इसे 1 और स्ट्रिंग माइनस 1 की लंबाई के बीच एक यादृच्छिक संख्या मिलती है। फिर यह उस इंडेक्स तक ~Boo!~और उसके बाद सब कुछ प्रदर्शित करता है , और उसके बाद इंडेक्स के अंत तक सब कुछ।


यह ऑक्टेव के साथ भी काम करता है , इसलिए आप इसे यहाँ ऑनलाइन आज़मा सकते हैं




0

जावास्क्रिप्ट, 79

r=Math.random()*((x=prompt()).length-1)+1;x.substr(0,r)+" ~BOO!~ "+x.substr(r);

यह ब्राउज़र कंसोल के लिए है; मज़ा है कि बस में popping।


0

जावा 8, 158 154 बाइट्स

interface M{static void main(String[]a){int i=a[0].length()-2;System.out.println(a[0].substring(0,i=1+(i*=Math.random()))+" ~BOO!~ "+a[0].substring(i));}}

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

संपादित करें: अब केवल चुनौती के विवरण में डिफ़ॉल्ट फ़ंक्शन / प्रोग्राम के बजाय रीडिंग प्रोग्राम है। इसलिए इंटरफ़ेस और मुख्य विधि के साथ बॉर्डरकोड जोड़ा गया।

यदि किसी फ़ंक्शन को अनुमति दी जाएगी तो यह ( 99 95 बाइट्स ) होगा

s->{int i=s.length()-2;return s.substring(0,i=1+(i*=Math.random()))+" ~BOO!~ "+s.substring(i);}

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

स्पष्टीकरण:

s->{                        // Method with String as both parameter and return-type
  int i=s.length()-2;       //  The length of the input - 2
  return s.substring(0,i=1  //  Return the first part of the input from index 0 to 1
    +(i*=Math.random()))    //    + a random integer between 0 and length-2
   +" ~BOO!~ "              //   appended with the literal " ~BOO!~ "
   +s.substring(i);         //   appended with the rest of the input-String
}                           // End of method


-1

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

xh(j=N(xn-1)+1)+' ~BOO!~ '+xS(j)

बहुत सीधे आगे।


-1

CJam, 19 बाइट्स

q_,mr)/(" ~BOO!~ "@

mrरिटर्न करते समय 0या असफल हो जाएगा 1, क्योंकि न तो स्ट्रिंग के साथ विभाजन के लिए मान्य हैं -1और न ही । 0/
मार्टिन एंडर

तब यह होना चाहिए)
username.ak

अब इसे BOOस्ट्रिंग के अंत में रखा जा सकता है , आपको (पहले भी आवश्यकता होगी mr। लेकिन फिर यह इस उत्तर के समान है: codegolf.stackexchange.com/a/62355/8478
मार्टिन

मैं q का उपयोग करता हूं (सभी इनपुट पढ़ता है, जिसमें newline भी शामिल है), वह l का उपयोग करता है (केवल 1 पंक्ति पढ़ता है)
username.ak

ओह ठीक है, तो आपको यह निर्दिष्ट करना चाहिए कि आपका कोड इनपुट की अपेक्षा करता है कि एक अनुगामी लाइनफीड है (क्योंकि यह जरूरी नहीं है कि एक मामले में qऔर lसमानार्थी हो)।
मार्टिन एंडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.