ছি! একটি হ্যালোইন কোড গল্ফ চ্যালেঞ্জ


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 জ্যাকেট বন্ধ করে দেওয়ার জন্য @ জাকুবকে ধন্যবাদ!

এটি অনলাইনে চেষ্টা করুন।

কিভাবে এটা কাজ করে

                    (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);

যথেষ্ট সহজ - একটি স্ট্রিং পান, এতে স্ট্রিংটি sertোকান, স্ট্রিং আউটপুট করুন। সম্পন্ন.


কখনও ভাবিনি যে আমি জিএমএলটি কোডগল্ফে দেখতে পাব।
স্টিফান ডোনাল

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

ট্রায়াপএল-তে উদাহরণ ইনপুট


1

ভিটসি, 19 বাইটস

নোট করুন zএবংZ আজ সম্পাদিত হয়েছিল, তবে এই চ্যালেঞ্জের জন্য নয়।

I1-R1 + \ i "~ OOB ~" zZ
আই 1- ইনপুটটির দৈর্ঘ্য পান, বিয়োগ 1
   আর স্ট্যাকের শীর্ষ আইটেমটিতে 0 থেকে একটি এলোমেলো নম্বর চাপুন।
    1+ এটিতে একটি যুক্ত করুন - এটি এখন 1 থেকে ইনপুট পর্যন্ত এলোমেলো সংখ্যা
                      দৈর্ঘ্য - 1।
      many আমি অনেকগুলি ইনপুট পাই।
        "~ OOB ~" ধাক্কা P BOO ~ 'স্ট্যাকের কাছে।
                 z বাকি ইনপুট পান।
                  Z সব আউটপুট।


1

পাইথন 3, 79 বাইট

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

এটি অনলাইনে চেষ্টা করুন

খুব স্ব-বর্ণনামূলক - একটি স্ট্রিং পড়ুন, 1 এবং স্ট্রিংয়ের দৈর্ঘ্যের মধ্যে একটি এলোমেলো পূর্ণসংখ্যা চয়ন করুন এবং with ' ~BOO!~ 'োকানো দিয়ে স্ট্রিংটি মুদ্রণ করুন ।


ঠিক আমার সমাধান । করার চিঠি
আর্কটরাস

@ মেগো এলোমেলোভাবে দেখছেন <কোড> ~ বিওইউ! ~ </code> আপনার প্রোগ্রামে দেখা বেশ মজাদার is
আর্কটরাস

যেহেতু একাধিক 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!~ "));
    }
}

এই সমাধানটি ধরে নিয়েছে যে স্ট্রিংটি প্রথম কমান্ড-লাইন প্যারামিটার হিসাবে প্রবেশ করেছে। এটি সি # এর পক্ষে স্বাভাবিক নয় (স্টিডিন বেশি স্বাভাবিক), তাই আমি এমন একটি সমাধানও অন্তর্ভুক্ত করেছি যাতে সাধারণ স্টিডিন ব্যবহার করা হয়:

সি #, 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 (...)আপনার কোডটি ছোট করবে
জানু 'স্প্লিট' কে।

0

ম্যাটল্যাব, 69 বাইট

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

ম্যাট্ল্যাব-তে প্রদত্ত সূচকে একটি স্ট্রিং মিড স্ট্রিং োকানো বাইটের ক্ষেত্রে ব্যয়বহুল। যদি এটি করার কোনও সহজ উপায় থাকে তবে আমি একটি বেনামি ফাংশনে গিয়ে ন্যায্য পরিমাণ সঞ্চয় করতে পারতাম, তবে আমি এটির সন্ধান করতে পারি না। আহ ভালো.

মূলত এটি স্ট্রিং বিয়োগের দৈর্ঘ্যের 1 এবং 1 এর দৈর্ঘ্যের মধ্যে একটি এলোমেলো সংখ্যা পায় এবং তারপরে এটি সমস্ত সূচকগুলি অনুসরণ করে এবং সেই সূচকটি অনুসরণ করে ~Boo!~, তারপরে এবং তারপরে সূচকের শেষে সবকিছু শেষ হয়।


এটি অকটাভের সাথেও কাজ করে , তাই আপনি এখানে অনলাইনে চেষ্টা করে দেখতে পারেন ।




0

জাভাস্ক্রিপ্ট, 79

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

এটি ব্রাউজার কনসোলের জন্য; মজা আছে ঠিক যে পপিং।


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

সিজেম, 19 বাইট

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

এই ব্যর্থ হবে যখন mrআয় 0বা 1কারণ তন্ন তন্ন, -1কিংবা 0সঙ্গে একটি স্ট্রিং বিভাজন জন্য বৈধ /
মার্টিন এন্ডার

তারপরে এটি অবশ্যই হবে)
ব্যবহারকারীর নাম

এখন এটি BOOস্ট্রিংয়ের শেষে রাখতে পারে , আপনারও (আগে দরকার ছিল mr। তবে তারপরে এটি এই উত্তরটির সাথে সমান: কোডগল্ফ.স্ট্যাকেক্সেঞ্জাও.এ
মার্টিন

আমি কিউ (নিউলাইন সহ সমস্ত ইনপুট পড়ি) ব্যবহার করি, তিনি এল ব্যবহার করেন (কেবলমাত্র 1 লাইন পড়েন)
ব্যবহারকারীর নাম

ওহ ঠিক আছে, তারপরে আপনার নির্দিষ্ট করা উচিত যে আপনার কোডটি ইনপুটটিকে অনুমানযোগ্য লাইফফিডের প্রত্যাশা করে (কারণ এটি অগত্যা একটি করে না, যা ক্ষেত্রে qএবং lসমার্থক)।
মার্টিন এন্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.