একটি স্ট্রিং হিচাপ


16

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা স্ট্রিংটিকে হিচাপ্প করে। এটি ইনপুট হিসাবে কোনও স্ট্রিং (কোনও মানক পদ্ধতির মাধ্যমে) নেওয়া উচিত, তারপরে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. সমেত 1 এবং 10 এর মধ্যে একটি (অগত্যা অভিন্ন নয়) এলোমেলো পূর্ণসংখ্যা n তৈরি করুন।
  2. এন সেকেন্ড অপেক্ষা করুন ।
  3. ইনপুটটির প্রাথমিক / পরবর্তী এন অক্ষরগুলি প্রিন্ট করুন, অথবা এন অক্ষরের চেয়ে কম থাকলে বাকী ইনপুট ।
  4. মুদ্রণের জন্য যদি ইনপুট থাকে তবে, পদক্ষেপ 1 এ ফিরে যান।

বিধি

  • ইনপুটটি সর্বদা কেবলমাত্র ASCII অক্ষর (32-126) সহ একটি খালি-খালি স্ট্রিং থাকবে।
  • অপেক্ষার সময়টি ঠিক এন সেকেন্ডের হতে হবে না তবে এটি অবশ্যই এন এর 10% এর মধ্যে থাকতে হবে ।
  • আপনি যখনই পাঠ্যের কোনও বিভাগটি মুদ্রণ করতে পারেন তখন আপনি ট্রেলিং করা নিউলাইনটি মুদ্রণ করতে পারেন।

উদাহরণ

এখানে একটি স্থান 1 সেকেন্ড উপস্থাপন করে। যদি ইনপুট হয় Hiccupinator!, একটি আউটপুট হতে পারে:

   Hic     cupin a          tor!

স্কোরিং

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ডেনিস

আমরা কী এমন ভাষার জন্য স্পেস ব্যবহার করতে পারি যা অপেক্ষা করতে সমর্থন করে না / সময়ের ধারণা নেই?
FliiFe

আমি বাজি দিয়েছি যে কোনও ভাষারই আউটপুট উত্পাদন না করে সময় ব্যয় করার একটি উপায় আছে, @ ফ্লিফাই!
ওমর

উত্তর:


9

স্ক্র্যাচ, 16 ব্লক + 6 বাইট

কোড

অনুমান ইনপুট ইতিমধ্যে অক্ষরের তালিকা হিসাবে সংজ্ঞায়িত করা হয়েছে ( ["H","e","l","l","o"," ","W","o","r","l","d"])


এটি কি কোনও উপায়ে গল্ফ করা যায়?
OldBunny2800

এটি কোনও বৈধ স্কোরিং পদ্ধতি নয়। মেটা পোস্ট দেখুন
mbomb007

আপনি কি সম্প্রদায়ের sensকমত্যের ভিত্তিতে এটি ঠিক করতে ইচ্ছুক?
OldBunny2800

1
আমার স্ক্র্যাচ নেই উত্তরটি পোস্ট করার পরে এটি আপনার দায়িত্ব It's এমনকি স্ক্র্যাচব্লকস 2 কোনও প্রকল্প থেকে পাঠ্য কোড তৈরি করতে একটি জেনারেটরের সাথে আসে।
mbomb007

5

পুশি , 20 17 16 বা 13 বাইট

যা অনুমোদিত তা নির্ভর করে দুটি সমাধান রয়েছে।

16 বাইট:

@$LT1U&Wm:v;O"cI

কমান্ড লাইন আর্গুমেন্ট দিন: $ pushy hiccup.pshy 'hiccupinator'। প্রতিটি 'হিককি'-এর পরে চলমান নিউলাইনগুলি সহ এটি মুদ্রণ করে। এখানে ভাঙ্গন:

                      % Implicit: input on stack as charcodes
@                     % Reverse input, so chars are pulled from start
 $             I      % While there are items on stack:
   T1U                %   Push a random number, 1-10
      &W              %   Wait that many seconds
  L     m:            %   min(time waited, chars left) times do:
          v;          %     Pull a char from the input.
            O"c       %   Print & delete pulled chars

13 বাইট:

উপরের উত্তরটি কোড করার সময় আমি এই উল্লেখযোগ্যভাবে সংক্ষিপ্ত সমাধানটি নিয়ে এসেছি:

N@$L1TU&Wm:'.

যদিও এটি একটি অনুরূপ কাজ করে, এটি কম বাইটের জন্য একটি নতুন স্ট্রিং নির্মাণের চেয়ে স্ট্রিং থেকে সরাসরি মুদ্রণ করে। এটি প্রয়োজনN পিছনে নতুন লাইনের প্রতিরোধের জন্য প্রোগ্রামের শুরুতে , অন্যথায় প্রতিটি চরিত্র একটি নতুন লাইনে থাকবে।

তবে, এটি পরীক্ষা করার সময় আমি একটি বাগ লক্ষ্য করেছি - stdout লাইন-বাফার হয়েছে, সুতরাং প্রোগ্রামটি পুরো দৈর্ঘ্যের জন্য অপেক্ষা করবে এবং তারপরে হিককি স্ট্রিংটি প্রদর্শন করবে।

আমি একটি সহজ যোগ করে সর্বশেষ প্রতিশ্রুতিবদ্ধ মধ্যে এটি স্থির করেছি.flush() - এটি কোনও প্রযুক্তিগতভাবে ভাষায় কোনও নতুন বৈশিষ্ট্য যুক্ত করছে না, কেবল একটি বাগ সংশোধন করছে, তবে আপনি যদি এই উত্তরটি বিবেচনায় না নেন তবে আমি বুঝতে পারি :)

ব্রেকডাউনটি দেখতে এরকম দেখাচ্ছে:

        % Implicit: input on stack as charcodes
N       % Set trailing newlines to False
@       % Reverse stack (so the charcodes are pulled off in order)
$       % While there are items left to print:
L       %    Push stack length
1TU     %    Push a random number 1-10
&W      %    Wait that amount of time
m:      %    min(time waited, chars left) times do:
'.      %      Pop and print last char

পিপিসিজিতে কনভেনশন হ'ল ভাষাগুলি বাস্তবায়ন (বাগ এবং সমস্ত) দ্বারা সংজ্ঞায়িত করা হয়। যেহেতু প্রতিশ্রুতিবদ্ধতা চ্যালেঞ্জ পোস্ট করে দেয়, সেই অংশটি প্রতিদ্বন্দ্বী
লুই মেন্ডো

@ লুইস মেন্ডো ঠিক আছে, স্পষ্টতার জন্য ধন্যবাদ :)
ফ্লিপট্যাক

চমৎকার উত্তর বিটিডাব্লু :-)
লুইস মেন্ডো

4

জাভাস্ক্রিপ্ট (ES6) 91 89 বাইট

f=s=>s&&setTimeout(_=>console.log(s.slice(0,n))|f(s.slice(n)),(n=1+Math.random()*10)<<10)

console.log(2 + f.toString().length); 
f('Hello sweet world!')                                       

@zeppelin ধন্যবাদ 2 বাইট সংরক্ষণ করা

অপেক্ষার মাধ্যমে অপেক্ষার সময়টির জন্য 10% সহনশীলতা আপত্তিজনক আচরণ করুন n<<10 === 1024*n মিলিসেকেন্ডের ।

যেহেতু আপনি বলেছেন যে অপেক্ষার সময়টি 10% এন এর মধ্যে হওয়া উচিত , তাই আমি একটি বাইট সংরক্ষণ এবং 1 সেকেন্ডের পরিবর্তে 999 মিলি সেকেন্ডের জন্য অপেক্ষা করার সিদ্ধান্ত নিয়েছি।

@ETHProductions এর জন্য আমার এখন আর 999 মিলিসেকেন্ড স্লাইনেস লাগবে না


1
হুম, নিশ্চিত নয় যে নতুন তারিখ ()% 10 কোনও পরিমাপের দ্বারা "এলোমেলো" জন্য গণনা করে।
জেপেলিন

@ জেপেলিন ফেয়ার পয়েন্ট, মান সংজ্ঞা অনুসারে এটি গণনা করা হয় না। ( meta.codegolf.stackexchange.com/a/1325/56071 )। আমি সেই অনুযায়ী এটি পরিবর্তন করব।
Lmis

আপনি "| 0" অপসারণ করে এক জোড়া বাইট সংরক্ষণ করতে পারেন
জেপেলিন

2
আপনি জানেন, আপনি তিনটি 1e3
বাইটেও

1
> (1 + 0.099999 * 10) * 999> 1997 সত্য, তবে আপনি সম্ভবত এটি ব্যবহার করতে * 999 << 10 এর সাথে প্রতিস্থাপন করতে পারেন: (1 + 0.099999 * 10) << 10 => 1024, (1 + 0.99999999 * 10) << 10 => 10240
জেপেলিন

4

পাইথন 2, 93 92 বাইট

import random,time
def F(s):
 if s:n=random.randint(1,10);time.sleep(n);print s[:n];F(s[n:])

-1 বাইট Flp.Tkc ধন্যবাদ

আমি নিশ্চিত যে ছোট করার একটি উপায় আছে random.randintএবং time.sleep, কিন্তু from random,time import*কাজ করে না ...


1
from random,time import*কাজ করে না কারণ পাইথন জানে না আপনি কোন মডিউল থেকে লাইব্রেরি আমদানি করতে চান।
এরিক আউটগল্ফার

পাইথন 3 একটি বাইট দীর্ঘ। একটি সন্নিবেশ '(' মুদ্রণ মধ্যে এবং 'আমি' এবং একটি ')' বন্ধনী আগে
জর্জ

1
এটিকে মিনিপিতে রূপান্তরিত করা (পাইথন 3): while v1:n=ri(1,10);_i("time").sleep(n);p(v1[:n]);v1=v1[n:];(কমান্ড লাইন
আর্গ

আপনি পুনরাবৃত্ত ফাংশন হিসাবে এই 1 বাইট সংক্ষিপ্ত লিখতে পারেন import random,timedef F(s):if s:n=random.randint(1,10);time.sleep(n);print s[:n];F(s[n:])
:,

3

পার্ল 6 , 62 বাইট

{$_=$^a;while $_ {sleep my \t=(1..10).roll;put s/.**{0..t}//}}

সম্প্রসারিত

{ # block lambda with parameter 「$a」

  $_ = $^a; # declare parameter, and store it in 「$_」
            # ( the input is read-only by default )

  while $_ {
    # generate random number and sleep for that many seconds
    sleep my \t=(1..10).roll;

    put
      s/              # substitution on 「$_」 ( returns matched text )
        . ** { 0..t } # match at most 「t」 characters
      //              # replace it with nothing
  }
}

1

ব্যাচ, 131 বাইট

@set/ps=
:l
@set/an=%random%%%10+1
@timeout/t>nul %n%
@call echo(%%s:~0,%n%%%
@call set s=%%s:~%n%%%
@if not "%s%"==2" goto l

set/pn=<nulএটি স্পেস ছাঁটাই ব্যতীত ব্যবহার করে একটি দুর্দান্ত প্রভাব দেওয়া হত।


1

পাইথ, 16 বাইট

Wz.d_JhOT<zJ=>zJ

আপনি এটি অনলাইনে চেষ্টা করতে পারেন , তবে প্রোগ্রামটি শেষ হওয়ার পরে অনলাইনে অনুবাদক কেবল আউটপুট প্রদর্শন করার কারণে এটি ভাল কাজ করে না।

ব্যাখ্যা

Wz         While z (the input) is not empty:
     hOT   Get a random number between 1-10 (inclusive)
    J      Set the variable J to that number
 .d_       Sleep for that number of seconds
 <zJ       Get and implicitly print the first J characters of the input
  >zJ      Get all characters of z at and after index J
 =         Set z to that string

1

এমএটিএল , 19 বাইট

`10YrtY.ynhX<:&)wDt

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

এটি অনলাইন চেষ্টা করুন! অনলাইন সংকলক ধীরে ধীরে বিরতি দিয়ে আউটপুট উত্পাদন করে।

`         % Do...while loop
  10Yr    %   Random integer from 1 to 10
  tY.     %   Duplicate. Pause that many seconds
  y       %   Duplicate the second-top element. This is the remaining string; or it
          %   takes the input implicitly in the first iteration
  n       %   Number of elements
  hX<     %   Minimum of the number of elements and the random number
  :       %   Range from 1 to that
  &)      %   Apply as index. Push the substring as given by the index and the
          %   remaining substring
  w       %   Swap
  D       %   Display
  t       %   Duplicate the remaining substring. This is used as loop condition:
          %   if non-empty execute next iteration
          % End loop implicitly

1

বেকন , 93 বাইট

বেসিকের একটি সমাধান। র‌্যান্ডম () ফাংশনটি 0 এবং n-1 এর মধ্যে একটি সংখ্যা উত্পন্ন করে, সুতরাং আমাদের 0 এবং 10 এর মধ্যে একটি সংখ্যা পেতে র‌্যান্ডম (11) ব্যবহার করতে হবে।

INPUT s$
WHILE LEN(s$)>0
n=RANDOM(11)
SLEEP n*1000
?LEFT$(s$,n),SPC$(n);
s$=MID$(s$,n+1)
WEND

নমুনা সেশন, প্রথম লাইনটি ইনপুট, দ্বিতীয় আউটপুট:

Hiccupinator!
Hiccupi       nato    r!

2
যদি আপনি যা বলেন সেটি সত্য হয় তবে আপনার এলোমেলো ফাংশন হওয়া উচিত n=RANDOM(10)+1, আপনার কোডের লাইনটি 1-10 নয়, 0-10 সমেত থেকে একটি সংখ্যা উত্পন্ন করবে
অক্টোপাস

1
@ অ্যাক্টপাস এটি কোনও বিষয় নয়, যেহেতু এটি অল্প সময়ের জন্য ঘুমাবে এবং সে ক্ষেত্রে কোনও আউটপুট তৈরি করবে না।
নীল

আমার ব্যাখ্যায় টাইপো স্থির করে ফেললাম।
পিটার

1

পার্ল, 42 বাইট

41 বাইট কোড +1 এর জন্য -n

$|=$-=--$-||sleep 1+rand 10,print for/./g

আমাকে পার্লকে আউটপুট ফ্লাশ করতে বাধ্য করতে হয়েছিল কারণ এটি প্রথমে শেষ অবধি কিছু দেখাচ্ছে না, তাই সেটিং করছে $|। আমরা $-অক্ষরের সংখ্যা ট্র্যাক printকরতে ব্যবহার করি কারণ এটি নেতিবাচক হতে পারে না (তাই আমি এটি ব্যবহার করতে পারি --$-এবং এটি খালি হয়ে গেলে এটি মিথ্যাবাদী হয়ে উঠবে) এবং এটিও floor, যদিও যেহেতু আমি ফিরে আসছি ব্যবহার করছিsleep এখনই জন্য , তা না সত্যিই কিছু আসে যায় না।

ব্যবহার

perl -ne '$|=$-=--$-||sleep 1+rand 10,print for/./g' <<< 'Hello, World!'
    Hell      o, Wor     ld!
# spaces showing delay!


0

> <> (মাছ) 103 88 বাইট

5>:?vl1-?!v+40.    >~
   1x2v   
>^  0  |:!/>:?!v1-b2.
^-1}< <     |~!/:?!^1-i:1+?!;of3.

এখানে অনলাইন দোভাষী পাওয়া গেল!

এই সমস্যায় প্রথম প্রচেষ্টা (গল্ফড নয়)।

এটি নির্দিষ্ট পরিমাণের লুপগুলি অপেক্ষা করে (এন) যেহেতু মাছের অ্যাক্সেসযোগ্য টাইমার নেই (টিক্সে এক্সিকিউশন)।

সম্পাদনা 1: সর্বশেষ লাইনটিকে শীর্ষে স্থানান্তরিত করা হয়েছে (শেষ 2 টি অক্ষর এবং শুরুর মানগুলি পুনরায় ব্যবহৃত হয়েছে। (15 বাইট সংরক্ষণ করে)।


0

বাশ, 78 বাইট

যেহেতু কেউ এখনও বাশ সমাধান পোস্ট করেনি, এখানে একটি। সোজা, এখনও যথেষ্ট ছোট।

Golfed

H() { N=$(($RANDOM%10+1));sleep $N;echo ${1:0:$N};S=${1:$N};[ "$S" ] && H $S;}

পরীক্ষা

>H "It's the Hiccupinator"
It's the
Hiccupi
n
ator

0

পিএইচপি, 81 বাইট

for(;''<$s=&$argv[1];$s=$f($s,$n))echo($f=substr)($s,0,sleep($n=rand(1,10))?:$n);

যেমন ব্যবহার করুন:

php -r "for(;''<$s=&$argv[1];$s=$f($s,$n))echo($f=substr)($s,0,sleep($n=rand(1,10))?:$n);" "Hiccupinator!"

0

সি ++ 14, 202 বাইট

#import<thread>
void f(auto c){if(c.size()<1)return;int n=(uintptr_t(&c)%99)/10+1;std::this_thread::sleep_for(std::chrono::seconds(n));std::cout<<c.substr(0,n)<<std::endl;f(n<c.size()?c.substr(n):"");}

একটি হতে ইনপুট প্রয়োজন std::string

অবরুদ্ধ এবং ব্যবহার:

#include<iostream>
#include<string>

#import <thread>

void f(auto c){
  if (c.size() < 1) return;
  int n=(uintptr_t(&c) % 99) / 10 + 1;
  std::this_thread::sleep_for(std::chrono::seconds(n));
  std::cout << c.substr(0,n) << std::endl;
  f(n < c.size() ? c.substr(n) : "");
}

int main(){
  std::string s="abcdefghijklmnopqrstuvwxyz";
  f(s);
}

using namespace std;std::s সমস্তগুলির থেকে 5 বাইট সংরক্ষণ করা উচিত
অ্যালফি গুডাক্রে

@ অ্যালফি গুডাক্রে 5 তম std::ব্যবহারের কোডের মধ্যে রয়েছে, গল্ফযুক্তদের মধ্যে কেবল 4 জন রয়েছে
কার্ল ন্যাপফ

আহ তাই তো অভিন্ন!
অ্যালফি গুডাক্রে

0

সি #, 205 বাইট

void X(string s){Random r=new Random();int n=r.Next(1,11);while(n<s.Length){Console.WriteLine(s.Substring(0,n));s.Remove(0,n);n*=1000;System.Threading.Thread.Sleep(n);n=r.Next(1,11);}Console.WriteLine(s);}

আমি নিশ্চিত যে এটি ধ্বংস হতে পারে, আমি স্থির হিসাবে এটি একেবারেই অনুকূলিত করি নি।

আন golfed:

void X(string s)
{
    Random r = new Random();
    int n = r.Next(1,11);
    while(n < s.Length)
    {
        Console.WriteLine(s.Substring(0,n));
        s.Remove(0,n);
        n *= 1000;
        System.Threading.Thread.Sleep(n);
        n = r.Next(1,11);
    }
    Console.WriteLine(s);
}

0

পিএইচপি, 74 বাইট

for($s=$argv[1];$s[$p+=$n]>"";print substr($s,$p,$n))sleep($n=rand(1,10));

সাথে চালাও php -r 'code' "string"


0

সি, 149 বাইট, পরীক্ষা করা হয়নি

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int f(char *s){int n;while(*s){sleep(n=rand()%10+1);for(;*s&&n--;s++)printf("%.*s",1,s);}}

চালানো, যোগ করা

int main(){f("Programming Puzzles & CodeGolf");}

তারপরে কম্পাইল এবং এক্সিকিউট করুন


0

পাইথন 3, 99 টি অক্ষর

i=input()
import os,time
while len(i):n=1+ord(os.urandom(1))%10;time.sleep(n);print(i[:n]);i=i[n:]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.