উত্সাহীভাবে একটি স্ট্রিং রাশিয়ানাইফ করুন


57

আপনারা অনেকেই কোনও না কোনও সময়ে রাশিয়ার লোকদের সাথে ইন্টারনেটে কথোপকথন করেছেন এবং আপনার একটি সাবসেট সম্ভবত তাদের প্রকাশ করার মতো সামান্য বিজোড় পদ্ধতি লক্ষ্য করেছেন।

যেমন удали игру нуб)))

)))পূর্ববর্তী বিবৃতিতে জোর দেওয়ার জন্য যেখানে যুক্ত করা হয়েছে, সেখানে আমি একটি তত্ত্ব নিয়ে কাজ করে যাচ্ছি যে )স্ট্রিংয়ের বাকী অংশের 'র অনুপাতটি প্রকৃত জোরের পরিমাণের সাথে সরাসরি সমানুপাতিক, তবে আমি প্রায়শই অনুপাতটি গণনা করতে অসুবিধে হই উড়ন্ত অবস্থায়, যেমন আমি বেশ কয়েকটা অপব্যবহারের সাথে লড়াই করার চেষ্টাও করছি, তাই আমি সংক্ষিপ্ততম কোডটি চাইলে আমাকে নির্ধারিত স্ট্রিংটি কী হতে হবে তা গণনা করতে সহায়তা করতে চাই, মূলটি দেওয়া থেকে 0 এবং 500% এর মধ্যে উত্সাহের মান হিসাবে , সংঘাতহীন স্ট্রিং, এটি আমার গবেষণাকে ব্যাপকভাবে সহায়তা করবে কারণ প্রতিবার আমার অনুমানটি পরীক্ষা করতে চাইলে আমাকে বিশাল স্ক্রিপ্টগুলি টাইপ করতে হবে না।

সুতরাং, চ্যালেঞ্জ:

একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখুন, যা দুটি আর্গুমেন্ট, অজানা দৈর্ঘ্যের একটি স্ট্রিং এবং একটি সংখ্যা সরবরাহ করে, উভয়ই হয় পূর্ণসংখ্যার বিন্যাসে (0 এবং 500 এর মধ্যে) অথবা দশমিক বিন্যাসে (0 এবং 5 এর মধ্যে, 2 পয়েন্টের সাথে যথাযথতা হবে)

  • রিটার্ন / প্রদর্শন মূল স্ট্রিং, একটি সংখ্যা সঙ্গে suffixed )এর
  • সংখ্যাটি স্ট্রিং দৈর্ঘ্যের ইনপুট সংখ্যার অনুপাত হিসাবে গণনা করা হবে।
  • সুতরাং যদি 200, বা 2.00 সংখ্যাটি সরবরাহ করা থাকে তবে 200% স্ট্রিং অবশ্যই )'s এরূপ হিসাবে যুক্ত হওয়া উচিত
  • দশমিক পরিস্থিতিতে গোলাকার বন্ধনীর সংখ্যা কিছু যায় আসে না।
  • স্ক্রিপ্ট মুদ্রণযোগ্য ASCII অক্ষর সমর্থন করতে প্রয়োজন।
  • শুধুমাত্র আপনার পছন্দসই একটি ইনপুট নম্বর ফর্ম্যাট সমর্থন করতে হবে।

উদাহরণ:

"codegolf" 125      = codegolf))))))))))
"codegolf" 75       = codegolf))))))
"noob team omg" 0.5 = noob team omg))))))
"hi!" 4.99          = hi!)))))))))))))))

উদাহরণ কোড (পাওয়ারশেল) (দশমিক ইনপুট সহ):

Function Get-RussianString ([string]$InputStr,[decimal]$Ratio){
    $StrLen = $InputStr.Length
    $SuffixCount = $StrLen * $Ratio
    $Suffix = [string]::New(")",$SuffixCount)
    return $InputStr + $Suffix
}

Get-RussianString "codegolf" 0.5
codegolf))))

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


2
আমি বিভ্রান্ত, রাশিয়ানরা কি সত্যিই )জোরের মতো জোর ব্যবহার করে !? এটি কিছু এনকোডিং সমস্যা?
ক্যাপ্টেন ম্যান

2
@ ক্যাপ্টেনম্যান আমি বিশ্বাস করি এটি এস এর চেয়ে স্মাইলি চেহারার মতো !, তবে তারা এগুলি টাইপ করে বলে, এটি খুব সাধারণ কিছু নয়, তবে এটি বেশ আইকনিক।
কলস

30
@CaptainMan কোন )ইমোটিকন কমে যাবে :)। যতদূর আমি জানি এটি তরুণদের মধ্যে খুব সাধারণভাবে ব্যবহৃত হয়।
ট্যালেক্স

4
)এটি একটি জোর নয়, এটি কেবল হাসিখুশি। যতদূর আমি জানি, :রাশিয়ান কীবোর্ড লেআউট ব্যবহার করার সময় এটি টাইপ করা শক্ত , সুতরাং তারা চোখ ছাড়া হাসি।
ডিউরিস

18
কিউওয়ার্টি :টাইপ করার মতো রাশিয়ার লেআউটে (ЙЦУКЕН) লেখার পক্ষে জুরিস এতই কঠিন ^। কিন্তু প্রকৃতপক্ষে, এর )একটি হ্রাস সংস্করণ :)। বিকল্প কীগুলি বার বার করার চেয়ে শিফট -0 টিপতে এবং ধরে রাখা অনেক সহজ।
Ruslan

উত্তর:


16

জেলি , 7 বাইট

ȮL×Ċ”)x

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

দশমিক বিন্যাস ব্যবহার করে।

কিভাবে?

ȮL×Ċ”)x - Main link: string, decimal
Ȯ       - print string
 L      - length(string)
  ×     - multiply by the decimal
   Ċ    - ceiling (since rounding method is flexible)
    ”)  - a ')' character
      x - repeated that many times
        - implicit print

@ কননরএলএসডাব্লু আমি কেবল লক্ষ্য করেছি যে এটি একটি প্রয়োজনীয় প্রোগ্রাম হিসাবে প্রয়োজনীয় স্ট্রিংটি মুদ্রণ করবে, তবে স্পেসিফিকেশনটি "রিটার্ন" বলে জানিয়েছে - এটি কি ঠিক আছে?
জোনাথন অ্যালান


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


16

সাধারণ লিপ, 59 52 50

প্রথম বন্ধনী? আমি আছি.

(lambda(s n)(format()"~a~v@{)~}"s(*(length s)n)0))

বিস্তারিত

(lambda(s n)               ; two arguments (string and ratio)
  (format ()               ; format as string
          "~a~v@{)~}"      ; control string (see below)
          s                ; first argument (string)
          (* (length s) n) ; second argument (number of parens)
          0))              ; one more element, the value does not matter

বিন্যাস নিয়ন্ত্রণ স্ট্রিং

  • ~a : সুন্দর মুদ্রণ যুক্তি (প্রদত্ত স্ট্রিং এখানে)
  • ~v@{...~}: পুনরাবৃত্তি ব্লক, ভি পুনরাবৃত্তির মধ্যে সীমাবদ্ধ, যেখানে ভিটিকে আর্গুমেন্ট হিসাবে গ্রহণ করা হয়, অর্থাৎ (* ...)অভিব্যক্তি। পুনরাবৃত্তিটি কোনও তালিকার উপরে পুনরাবৃত্তি হওয়ার কথা, তবে আপনি যখন এই @সংশোধকটি যুক্ত করেন , তালিকাটি ফর্ম্যাট ফাংশনে আর্গুমেন্টের অবশিষ্ট তালিকা। পুনরাবৃত্ত তালিকায় কমপক্ষে একটি উপাদান থাকা উচিত (অন্যথায় আমরা বাইরে চলে যাচ্ছি, ভি উপেক্ষা করে)। এজন্য বিন্যাসে (0) অতিরিক্ত যুক্তি রয়েছে।

যেহেতু তালিকার কোনও উপাদান বিন্যাস দ্বারা গ্রাস করা হয়নি, লুপটি অসীম তবে ভাগ্যক্রমে, এটিও ভি দ্বারা আবদ্ধ হয়, ওরফে মুদ্রণের জন্য প্রথম বন্ধনী সংখ্যা।


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


12
(()) / 10 পর্যাপ্ত বন্ধনী নেই
বিজিআর ওয়ার্কার

কে এই ভাষাটি একটি ভাল ধারণা বলে মনে করেছিল?
ডাউনরেপ_নেশন

স্কিম এর formatদশমিক যুক্তি গ্রহণ করে v। কমন লিস্পেরও কি হতে পারে?
মাইকেল Vehrs

@ মিশেলভিহরস সত্যই, অনেক অনেক ধন্যবাদ।
coredump

1
@ কর্ডম্প্প আসলে, আমার বলা উচিত ছিল "গিলির formatগ্রহণযোগ্যতা ...", যেহেতু স্ট্যান্ডার্ড স্কিম formatসমর্থন করে না ~r; এবং গিলি formatকমন লিস্পের উদাহরণ অনুসরণ করে।
মাইকেল Vehrs 10

9

জাভাস্ক্রিপ্ট ES6, 38 31 30 বাইট

s=>n=>s+')'.repeat(s.length*n)

f=s=>n=>s+')'.repeat(s.length*n)

console.log(f("hi!")(4.99))


1
ভাল লাগছে, আমি মনে করি এটাই সবচেয়ে কম সম্ভব। আপনি s=>n=>s+')'.repeat(s.length*n)f("hi!")(4.99)
কারিগরিকরণের


7

05 এ বি 1 ই , 9 8 বাইট

g*ï')×¹ì

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

g*       # Length, multiplied by emphasis.
  ï')×   # Covnerted to an integer, push that many parenthesis.
      ¹ì # Prepend original string.

পূর্ণসংখ্যা এবং দশমিক উভয়র জন্য কাজ করে, আর্গুমেন্টের অর্ডার দেয়: f(String, Double)


-5 05AB1E এর নতুন সংস্করণে , যেখানে ভাসা যুক্তি দিয়ে স্পষ্টভাবেï সম্পন্ন করা হয় ×
কেভিন ক্রুইজসেন

: এবং এখানে 7 byter যে উভয় উত্তরাধিকার এবং আধুনিক 05AB1E কাজ করে SG * এফ ') «
গ্রিমি


7

পাইথ, 8 বাইট

*\)s*lpz

অনলাইন পরীক্ষা! প্রথমে উত্তেজনা অনুপাত নেয়, তারপরে স্ট্রিংটি মোহিত হয়।

ব্যাখ্যা:

      pz  print out the enthused string
     l    ... and get its length
    *...Q multiply that by the ratio
   s      floor to get an integer, let's call this S
 \)       single-character string ")"
* ")" S   multiply that integer by the string, which gives a string of )s of length S.
          implicitly print that string of S )s.


5

আর, 62 46 42 বাইট

বেনামে ফাংশন যা স্ট্রিং aএবং দশমিক লাগে n, স্টাডআউটে আউটপুট প্রিন্ট করে।

pryr::f(cat(a,rep(")",n*nchar(a)),sep=""))

4

পাইথ, 9 বাইট

*s*lpzE")

ইনপুট দুটি লাইন নেয়: স্ট্রিং এবং অনুপাত (দশমিক)।

Pyth.herokuapp.com এ চেষ্টা করুন

ব্যাখ্যা

Aকোনও ফাংশনের প্রথম আর্গুমেন্ট, Bএর দ্বিতীয় যুক্তিকে বোঝায় ot

*s*lpzE")
    pz     # print the input string
   lAA     # take the length of the printed string
      E    # read the next line of input (the emphasis ratio)
  *AAAB    # multiply the length by the ratio
 sAAAAA    # floor the result
*AAAAAA")  # repeat ")" n times
           # implicit print

4

টিআই-বেসিক, 33 বাইট

দশমিক ইনপুট নেয়।

Prompt Str1,A
")
For(I,0,9
Ans+Ans
End
Str1+sub(Ans,1,AI


3

সিজেম , 9 বাইট

l_,ld*')*

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

প্রথম লাইনে ইনপুট স্ট্রিং, দ্বিতীয়টিতে 0 থেকে 5 সীমাতে জোর অনুপাত।

ব্যাখ্যা

l    e# Read input string.
_,   e# Duplicate, get length.
ld   e# Read emphasis ratio.
*    e# Multiply by length.
')*  e# Get that many parentheses.

3

এমএটিএল, 11 10 8 বাইট

yn*:"41h

এই সমাধানটি দ্বিতীয় ইনপুটটির দশমিক রূপ ব্যবহার করে

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

ব্যাখ্যা

        % Implicitly grab first input as a string
        % Implicitly grab the second input as a number
y       % Make a copy of the first input
n       % Compute the length of the string
*       % Multiply the decimal by the length to determine the # of )'s (N)
:       % Create the array [1...N]
"       % For each element in this array
  41    % Push 41 to the stack (ACSII for ")")
  h     % Horizontally concatenate this with the current string
        % Implicit end of for loop and display

3

এসবি 17, 17 বাইট

i\,N?\;')'*(N*l(\

ব্যাখ্যা:

i\,N    input a string and a number
?\;     print the string
')'*    also print ) multiplied by...
(N*l(\  the number times the string length.

প্যারেন্টিসগুলি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়

আপনি যদি আগ্রহী হন তবে এখানে সংকলকটির আউটপুট দেওয়া আছে:

 INPUT  S$ ,N? S$ ;")"*(N* LEN(  S$ ))

সংকলকটির এই সংস্করণটি 1/27/2017 এ রাত ১১ টা 12 মিনিটে লেখা হয়েছিল, যা এই প্রশ্নটি পোস্ট হওয়ার কয়েক মিনিট পরে হতে পারে। তাই এখানে এমন একটি সংস্করণ যা সংকলকটির প্রাচীনতম সংস্করণে কাজ করে যা এক ঘন্টা আগে লেখা হয়েছিল: iS$,N?S$;')'*(N*l(S$))(২২ বাইট)


3

PostgreSQL, 102 বাইট

create function q(text,int)returns text as $$select rpad($1,(100+$2)*length($1)/100,')')$$language sql

বিস্তারিত

পূর্ণসংখ্যার ইনপুট ফর্ম্যাট ব্যবহার করে।

এটি কেবলমাত্র দৈর্ঘ্যের প্যারেন্সের সাথে ইনপুট স্ট্রিংয়ের ডান প্যাড দেয়।

create function q(text,int)
returns text as $$
    select rpad($1,             -- Pad the string input
        (100 + $2) *            -- to 100 + int input % ...
        length($1) / 100,       -- ...of the input string
        ')')                    -- with ) characters
$$ language sql

সাথে ডাকা হয়

select q('codegolf', 125), q('codegolf', 75);
select q('noob team omg', 50), q('hi!', 499);


2

গ্রোভি, 27 বাইট

সোজা সমাধান

{s,r->s+')'*(s.length()*r)}

পরীক্ষা প্রোগ্রাম:

def f = {s,r->s+')'*(s.length()*r)}

println f("hi!", 4.99)
println f("noob team omg", 0.5)


2

ক্লোজার, 40 বাইট

বেশ বোরিং সমাধান:

#(reduce str %(repeat(*(count %)%2)")"))

strপ্রাথমিক প্যারামিটার হিসাবে স্ট্রিং সহ বন্ধ বন্ধনীর তালিকার কার্যকারিতা হ্রাস করে।

এটি অনলাইনে দেখুন: https://ideone.com/5jEgWS

বিরক্তিকর বিরল সমাধান (by৪ বাইট):

#(.replace(str(nth(iterate list(symbol %))(*(count %)%2)))"(""")

প্রতীক (উদ্ধৃতি পরিত্রাণ পেতে) ইনপুট স্ট্রিং রূপান্তর করে এবং বারবার ফাংশন প্রযোজ্য listভালো অসীম অনুক্রম উৎপাদিত এটিতে: (a (a) ((a)) (((a))) ... )nthউপাদান গ্রহণ করে এটি স্ট্রিংয়ে রূপান্তরিত করে এবং কিছুই না দিয়ে সমস্ত খোলার বন্ধনী প্রতিস্থাপন করে।

এটি অনলাইনে দেখুন: https://ideone.com/C8JmaU


1
#(.replaceAll(str(nth(iterate list %)(*(count %)%2)))"[(\"]""")1 বাইট কম (ইয়ে) আমি কমপ করতে চেয়েছি কিন্তু এটি 70 বাইটের নিচে পাচ্ছি না।
মাইকেল এম

আপনি বাইট সংরক্ষণ করতে পরিবর্তন ")"করতে পারেন \)
ক্লিমেজিক

2

সিম্পিপেম্পলেট, 92 বাইট

প্রথম প্যারামিটার হিসাবে স্ট্রিং এবং দ্বিতীয় হিসাবে "অনুপাত" নেয়।
অনুপাতটি 0 এবং 5 এর মধ্যে, 2 দশমিক স্থানের সাথে।

{@echoargv.0}{@callstrlen intoL argv.0}{@set*Y argv.1,L}{@callstr_repeat intoO")",Y}{@echoO}

আপনি দেখতে পাচ্ছেন, এটি অপ-অনুকূল নয়।
2 {echo}সেখানে 1. কমে যেতে পারে
কম্পাইলার মধ্যে একটি বাগ দরুন, এই কোড অনেক আরও কমে যাবে না।


Ungolfed:

{@echo argv.0}
{@call strlen into length argv.0}
{@set* ratio argv.1, length}
{@call str_repeat into parenthesis ")", ratio}
{@echo parenthesis}

যদি কোনও ত্রুটি না থাকে তবে কোডটি 86 টি বাইটের মতো দেখায়:

{@callstrlen intoL argv.0}{@set*Y argv.1,L}{@callstr_repeat intoO")",Y}{@echoargv.0,O}

2

সি # ইন্টারেক্টিভ, 77 67 বাইট

string r(string s,int p)=>s+new string(')',(int)(s.Length*p/100d));

সি # ইন্টারেক্টিভ মিষ্টি।


1
আপনি যদি সি # ইন্টারেক্টিভ ব্যবহার করছেন যা অন্যথায় শিরোনামে থাকা দরকার, সি # তে, আপনার অন্তর্ভুক্ত করা উচিত using System;বা সম্পূর্ণ যোগ্যতা অর্জন করতে হবেMath । এছাড়াও, আপনি এটি ইন্টারেক্টিভ ক্ষেত্রে করতে পারবেন কিনা তা নিশ্চিত নন, তবে আপনি Func<string, Func<int, string>>বাইটগুলি সংরক্ষণ করতে একটি সংকলন করতে পারেন যেমনs=>p=>s+new...
TheLethalCoder

1
এছাড়াও আপনার Math.Roundকেবল কল করার দরকার নেই কেবল intএকটি কল করতে হবে Floorএবং ওপি বলেছে Floorবা হয়Ceiling
needালাই করার

1

স্মাইলব্যাসিক, 29 বাইট

INPUT S$,N?S$;")"*(LEN(S$)*N)

যেহেতু 3*4.99= 14.97, কেবল 14বা 15উত্তর হিসাবে গ্রহণযোগ্য হবে, 29 বাইট সংস্করণটি ঠিক কাজ করা উচিত, দুঃখিত!
কলস

1

গোল> <> (গল্ফিশ), 17 বাইট

i:a=?v
R*Il~/Hr)`

এখানে চেষ্টা করুন

শীর্ষ রেখাটি অক্ষর পড়ে (i পড়বে (যতক্ষণ না এটি একটি নতুন লাইন (ASCII 10, a) সন্ধান করে, তারপরে নীচে যায় v)।

তারপরে আমরা একটি অক্ষর (নিউলাইন) ত্যাগ করি ~, স্ট্যাকের দৈর্ঘ্যটি ( l) টিপাই , একটি ভাসা ( I) পড়ি , দুটিকে গুণ করি এবং বারে বারে ( R) অক্ষরটিকে ")" বহুবার ধাক্কা দিয়ে থাকি । অবশেষে, স্ট্যাকটি ( r) বিপরীত করুন , এটি আউটপুট করুন এবং ( H) বন্ধ করুন ।


1

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

<?=str_pad($s=$argv[1],strlen($s)*++$argv[2],")");

কমান্ড লাইন আর্গুমেন্ট হিসাবে স্ট্রিং এবং দশমিক সংখ্যা নেয়; প্যাডিং কাটা সাথে চালানো -r;

ভাঙ্গন

<?=                     // print ...
str_pad(                    // pad
    $s=$argv[1],            // string=argument 1
    strlen($s)*++$argv[2],  // to string length*(1+argument 2) 
    ")"                     // using ")" as padding string
);

1

রুবি, 25 বাইট

->(s,n){s+')'*(s.size*n)}

আমি ল্যাম্বডাস ব্যবহার করছি । পরীক্ষা প্রোগ্রামটি এমন কিছু হবে:

f=->(s,n){s+')'*(s.size*n)}
f.("codegolf", 1.5)        # => "codegolf))))))))))))"
f.("hi!", 4.99)            # => "hi!))))))))))))))"

1

ক্লোজার, 68 বাইট

দশমিক ইনপুট গ্রহণ করে এমন একটি বেনামি ফাংশন।

(fn [s n] (print (str s (reduce str (repeat (* n (count s)) ")")))))

আক্ষরিক অর্থেই আমি প্রথম লিপ্প প্রোগ্রামটি লিখেছি! আমি ইতিমধ্যে মজা করছি।


লিস্পের পৃথিবীতে আপনাকে স্বাগতম! : পি ক্লোজুরে, আপনি বেনাম ফাংশনগুলির ঘনীভূত ফর্মটি ব্যবহার করতে পারেন #(...)এবং আপনি এ printথেকে মুক্তি পেতে পারেন (যেহেতু ফাংশনের রিটার্ন গ্রহণযোগ্য হওয়া উচিত)। আপনি পরিবর্তন করতে পারেন reduceকরার applyজন্য strফাংশন, এবং আপনি পরিবর্তন করতে পারেন ")"করতে \)যা একই জিনিস আছে। সুতরাং, চূড়ান্ত কোড হওয়া উচিত: #(str %(apply str(repeat(*(count %)%2)\)))))
ক্লিমেজিক

এছাড়াও, আপনার কোডের বর্তমান অবস্থা কাজ করে না, (#(...) "codegolf" 125)অবশ্যই "কোডগল্ফ" এর দৈর্ঘ্যের 125 শতাংশ "" কোডগল্ফ " এর দৈর্ঘ্যের পরিবর্তে 125 গুণ যুক্ত করতে হবে। সুতরাং, স্থির প্রোগ্রামটি হবে #(str %(apply str(repeat(*(count %)%2 1/100)\)))):, যা 49 বাইট।
ক্লিমেজিক

1

সি ++ 14, 43 বাইট

নামবিহীন ল্যাম্বদা যেমন এর ইনপুটটি সংশোধন করছে, ধরে sনেওয়া একইরকম std::string(রয়েছে .append(int,char)এবং pভাসমান পয়েন্টের ধরণের হিসাবে ধরে নেওয়া হচ্ছে )

[](auto&s,auto p){s.append(s.size()*p,41);}

ব্যবহার:

#include<string>
#include<iostream>

auto f=
[](auto&s,auto p){s.append(s.size()*p,41);}
;


int main() {
 std::string s = "abcdefghijk";
 f(s,0.75);
 std::cout << s << std::endl;
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.