স্ট্রিংয়ের দশমিক গুণ


14

2 ইনপুট, একটি স্ট্রিং এবং দশমিক সংখ্যা দেওয়া, স্ট্রিংটিকে সেই সংখ্যা দিয়ে গুণিত করে।

ধরাটি হ'ল সংখ্যাটি একটি ভাসা বা পূর্ণসংখ্যার হতে পারে।

আপনার স্ট্রিংয়ের floor(n)সময় এবং তারপরে floor((n-floor(n))*len(string))আবার প্রথম অক্ষর আউটপুট করা উচিত ।

অন্যান্য নোট:

  • ইনপুটটি সর্বদা ভাসমান হবে না, এটি কোনও ইনট হতে পারে। সুতরাং 1.5, 1 এবং 1.0 সমস্ত সম্ভব। যদিও এটি সর্বদা বেস 10 এ থাকবে এবং আপনি যদি ব্যতিক্রম চান তবে মন্তব্য করুন।
  • স্ট্রিং ইনপুটটিতে হোয়াইটস্পেস, কোট এবং অন্যান্য অক্ষর থাকতে পারে। যদিও কোনও নতুনলাইন বা নিয়ন্ত্রণের অক্ষর নেই।
  • সরাসরি স্ট্রিং পুনরাবৃত্তি করার জন্য কোনও বিল্ট-ইন নেই, এমনকি পাইথনের মতো স্ট্রিং গুণও 'a'*5অনুমোদিত। তবে স্ট্রিং সংযোজন অনুমোদিত।

পরীক্ষার কেস:

কমা এবং স্থান ইনপুটগুলি পৃথক করে।

test case, 1 -> test case

case, 2.5 -> casecaseca

(will add more later), 0.3333 -> (will(space)

cats >= dogs, 0.5 -> cats >

চূড়ান্ত দ্রষ্টব্য:

আমি প্রচুর উত্তর দেখতে পাচ্ছি যা অন্তর্নির্মিত স্ট্রিংয়ের গুণ বা পুনরাবৃত্তি ফাংশন ব্যবহার করে। এটি অনুমোদিত নয় । @ VTC এর উত্তর হল বৈধ যদিও, কারণ এটি সংখ্যাবৃদ্ধি স্ট্রিং, শুধুমাত্র ভাসা ইনপুট না। সুতরাং চূড়ান্ত নিয়মটি হ'ল: যদি এটি সরাসরি স্ট্রিংকে গুণ করে, আপনি এটি করতে পারবেন না।


শব্দটি বারবার সংশোধন করা হয়েছিল (আমি প্রথম সংশোধনটি দেখতে পাইনি)। আমি directস্ট্রিং পুনরাবৃত্তি অপসারণ করার পরামর্শ দিচ্ছি (এর অর্থ কী?) তবে সব ঠিক আছে
edc65


@ এসপি 3000 হ্যাঁ, আমি জানি। আমি মনে করি পার্থক্যটি যথেষ্ট তাৎপর্যপূর্ণ।
Rɪᴋᴇʀ

"সরাসরি স্ট্রিং পুনরাবৃত্তি করার জন্য কোনও বিল্ট-ইন নেই, এমনকি পাইথন 'এ' * 5 এর মতো স্ট্রিং গুণও অনুমোদিত নয়" " আপনি এইগুলির মধ্যে পার্থক্য ব্যাখ্যা করবেন না। তারা আমার কাছে একই শব্দ করে।
এমএস 210

@ edc65 পার্লে আপনি তালিকার পুনরাবৃত্তি করতে পারেন তারপরে সেই তালিকার উপাদানগুলিকে সম্মতি জানাতে পারেন, যা সরাসরি স্ট্রিং পুনরাবৃত্তি নয়। পার্ল 5: join "", ("case") x 2বনাম "case" x 2, পার্ল 6 [~] "case" xx 2-এ একই বনাম"case" x 2
ব্র্যাড গিলবার্ট বি 8g16

উত্তর:


4

জেলি, 5 বাইট

×L}Rị

অন্তর্নির্মিত পুনরাবৃত্তি ব্যবহার করে না। এটি অনলাইন চেষ্টা করুন!

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

×L}Rị  Main link. Left input: n (multiplier). Right input: S (string)

 L}    Yield the length of S.
×      Multiply it with n.
   R   Range; turn n×len(S) into [1, ... floor(n×len(S))].
    ị  Retrieve the elements of S at those indices.
       Indices are 1-based and modular in Jelly, so this begins with the first and
       jump back after reaching the last.

7

জাভা 7, 89

void g(char[]a,float b){for(int i=0,l=a.length;i<(int)(l*b);)System.out.print(a[i++%l]);}

চর [] নেয় এবং ভাসা এবং আউটপুটগুলি STDOUT এ নিয়ে যায়। বেসিক লুপিং


3
ভাল গল্ফিং, এমনকি জাভা জন্য। : পি
আর

এটি আমার অন্য উত্তরেও প্রস্তাবিত হয়েছিল, তবে আমি মনে করি না আমি এটি করব। এটা আমার কাছে ঠিক মনে হচ্ছে না।
মার্কি মার্কভ

এহ, যথেষ্ট ন্যায্য। এটি এখানে স্বীকৃত, তবে ঠিক আছে। : ডি
অ্যাডিসন ক্রম্প

আমি আপনার ভাষাটি জাভা as হিসাবে ঘোষণা করার পরামর্শ দিচ্ছি Then তারপরে কেউ আপনাকে ল্যাম্বডাস ব্যবহার করতে বলতে পারে না।

6

Pyth, 9 8

s@Lz*lzQ

Pietu1998 ধন্যবাদ 1 বাইট সংরক্ষণ করা

এটি floor(n * len(string))চক্রীয় সূচকগুলি ব্যবহার করে স্ট্রিং থেকে বর্ণগুলি গ্রহণ করে। আমি বিশ্বাস করি এটি সর্বদা প্রদত্ত সূত্রের সমতুল্য।

পরীক্ষা স্যুট


1
কোনও plz খুব শীঘ্রই আমার কাছ থেকে এটি গ্রহণ করবেন না। xD
অ্যাডিসন ক্রম্প

@ ভোটটোক্লোজ আমি আসলে আপনার উত্তরটি মোটেও পড়িনি, স্কাউটস সম্মান: পিআই বুঝতে পারিনি যে স্ট্রিং পুনরাবৃত্তিগুলি নিষিদ্ধ করা হয়েছে, এটি কেবল ছোট ছিল যে আমি যেভাবে সামনে এসেছি ...
ফ্রাইআম দ্য এজিগম্যান

1
আপনারও দ্বিতীয়টির দরকার নেই srangeমত মজার।
পূর্বকুডারী

1
NOO! আহা, এক কোণে আহা, ওহ ভাল।
অ্যাডিসন ক্রম্প

6

জাভাস্ক্রিপ্ট (ES6), 50 বাইট

ফাংশনের সংজ্ঞা অন্তর্ভুক্ত করতে 2 বাইট আরও সম্পাদনা করুনf । @ মান্যাট ওয়ার্কের টিপ ব্যবহার করে 1 বাইট কম less দ্রষ্টব্য: ব্যবহার করে ~আমাদের প্রয়োজনের তুলনায় আরও বেশি পুনরাবৃত্তি রয়েছে তবে এটি কোড গল্ফ এবং এমনকি 1 বাইট গণনা

f=(s,n,l=s.length*n)=>~n?f(s+s,n-1,l):s.slice(0,l)

পরীক্ষা

f=(s,n,l=s.length*n)=>~n?f(s+s,n-1,l):s.slice(0,l)

//TEST
console.log=x=>O.textContent+=x+'\n'
;[
 ['test case', 1, 'test case'],
 ['case', 3.5, 'casecasecaseca'],
 ['(will add more later)', 0.3333, '(will '],
 ['cats >= dogs', 0.5, 'cats >']]
.forEach(t=>{
  var s=t[0],n=t[1],x=t[2],r=f(s,n);
  console.log("«"+s+"» "+n+' => «'+r+'» '+(x==r?'OK':'FAIL expected '+x));
 })
<pre id=O></pre>


ঠিক আছে, ধন্যবাদ. এখনও অবধি বেশিরভাগ উত্তরের কোনও সমস্যা হয়নি, এবং এটি ঠিক করা খুব সহজ। এটি সংশোধন করার জন্য ধন্যবাদ।
আর

ক্ষুদ্র টাইপো: পরীক্ষার ক্ষেত্রে n>0কোড বনাম n>1
manatwork

@ মান্যাটওয়ার্ক ধন্যবাদ। এটি কোনও
উপায়েই

উহু. প্রকৃতপক্ষে. তবে কেন শুধু তাই নয় ~n? (সত্যিই কেবল একটি প্রশ্ন given কেবলমাত্র প্রদত্ত পরীক্ষার
কেসগুলির

3
@ edc65 fআপনার সমাধান কোথায় সংজ্ঞায়িত করা হয়? মিস করছেন না f=?
andlrc

4

ভিটসি, 9 বাইট

শব্দটি একটি আর্গুমেন্ট হিসাবে প্রত্যাশা করে এবং সংখ্যাটি STDIN এর মাধ্যমে গুণিত করবে।

zlW*\[DO{]
z          Grab all string argument input.
 l         Get the length of the stack.
  W        Parse STDIN.
   *       Multiply the top two items (length of string and the number of repetitions)
    \[   ] Do the stuff in the loop.
      DO{  Output one char at a time, making sure to duplicate first.

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


আপনার কথায় সত্য, আপনি দ্রুত উত্তর দিয়েছেন ।
Rɪᴋᴇʀ

@ রিকারডাব্লু মার্টিন আমাকে এফজিআইটিডাব্লু আউট করল।
অ্যাডিসন ক্রম্প

কেন আপনি কি Grab all string argument input.তারপর Parse STDIN.আবার?
Rɪᴋᴇʀ

@ রিকারডাব্লু যুক্তিগুলি যা দ্বিগুণ হয় তা স্বয়ংক্রিয়ভাবে বিশ্লেষণ করা হয়, ততক্ষনে তাদের স্ট্যাকের দিকে ঠেলে দেয়। হ্যান্ডলিং যা এটির চেয়ে বেশি বাইট নেয়।
অ্যাডিসন ক্রম্প

ওহ ঠিক আছে. এটি এখন আরও বোধগম্য হয়।
Rɪᴋᴇʀ

3

সিজেম, 10 বাইট

l_,l~*,\f=

স্ট্রিংটি এসটিডিনের প্রথম লাইনে সরবরাহ করা হয়, দ্বিতীয়টিতে ভাসমান।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

l    e# Read string.
_,   e# Duplicate and get its length.
l~   e# Read second line and evaluate.
*    e# Multiply them. If the result, N, was floored it would give us the number of
     e# characters in the required output.
,    e# Get range [0 1 ... ⌊N⌋-1].
\f=  e# For each character in that range, fetch the corresponding character from the
     e# string using cyclic indexing.

3

পাইথন 2, 71 বাইট

lambda s,x:"".join(s for i in range(int(x)))+s[:int(len(s)*(x-int(x)))]

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

একটি নামবিহীন ল্যাম্বদা তৈরি করে যা স্ট্রিংটিকে প্রথম আর্গুমেন্ট হিসাবে এবং দ্বিতীয় হিসাবে ভাসায় takes পুনরাবৃত্তি স্ট্রিং প্রদান করে।

স্ট্রিং পুনরাবৃত্তি বিল্টিনগুলি অনুমতি দেওয়া হলে এটি 46 হতে পারে :(


1
অনেক দু: খিত। এই জাতীয় স্ট্রিং গুণ গুণ। বর্ধনের জন্য +1 এ +।
অ্যাডিসন ক্রম্প


3

পার্ল 6 ,  46 41   39 বাইট

{([~] $^a xx$^b)~$a.substr(0,$a.chars*($b%1))}    # 46 bytes
{substr ([~] $^a xx$^b+1),0,$a.chars*$^b}         # 41 bytes
{substr ([~] $^a xx$^b+1),0,$a.comb*$b}           # 39 bytes

পার্ল 6 এর একটি স্ট্রিং পুনরাবৃত্তি অপারেটর xএবং একটি তালিকা পুনরাবৃত্তি অপারেটর উভয়ই রয়েছে xx

যেহেতু নিয়মগুলি স্ট্রিং পুনরাবৃত্তিকে অস্বীকার করে, তাই আমরা এটির পুনরাবৃত্তি করলাম যেন এটির পরিবর্তে এটি একটি একক উপাদানের তালিকা। তারপরে তালিকাটি একত্রে সংমিশ্রিত হয় এবং এর একটি স্ট্রিংটি ফিরে আসে।

ব্যবহার:

# give it a lexical name
my &code = {substr ([~] $^a xx$^b+1),0,$a.chars*$^b}
#          {substr ($^a x$^b+1),0,$a.chars*$^b}

say code('test case', 1).perl;                  # "test case"
say code('case', 2.5).perl;                     # "casecaseca"
say code('(will add more later)', 0.3333).perl; # "(will "
say code('cats >= dogs', 0.5).perl;             # "cats >"

substr ([~] $^a xx$^b+1),0,$a.comb*$b}দুটি চর বাঁচায়
রায়ফ

2

osascript, 173 বাইট

ওহ আমার দিনগুলি, এটি আমার ধারণা থেকেও খারাপ।

on run a
set x to a's item 1's characters
set y to a's item 2
set o to""
set i to 1
set z to x's items's number
repeat y*z
set o to o&x's item i
set i to i mod z+1
end
o
end

চক্রের সূচক ব্যবহার করে স্ট্রিংয়ের মান, অন্য উত্তর দেয়। হিসাবে ইনপুট আশা "string" "repetitions"


Oh my days, this is worse than I thought.তাই সত্য, তাই সত্য।
আর

একবারে কমান্ডে একাধিক ভার সেট রয়েছে? অর্থাৎ set x,y to a's items?
আর

@ রিকারডাব্লু যদি সেখানে থাকে তবে আমি গুরুতরভাবে অনুপস্থিত।
অ্যাডিসন ক্রম্প

2

হাস্কেল, 44 বাইট

c x=x++c x
s#n=take(floor$n*sum[1|a<-s])$c s

ব্যবহারের উদাহরণ: "(will add more later)" # 0.3333-> "(will "

এটি কীভাবে কাজ করে: cস্ট্রিংয়ের অসীম অনুলিপিগুলিকে সম্মতি দেয় x। এটি বিল্ট-ইন এর মতো আচরণ করে cyclesum[1|a<-s]এটি একটি কাস্টম দৈর্ঘ্যের ফাংশন যা হাস্কেলের কঠোর প্রকারের সিস্টেমের সাথে কাজ করে কারণ এটি একটি দেয় Double(বিল্ট-ইন lengthএকটি দেয় Intযা দিয়ে গুণ করা যায় না n)। চক্রযুক্ত স্ট্রিং থেকে অক্ষর #নেয় ।floor (n * length(s))s


2

পিএইচপি 5, 96 87

9 বাইট সংরক্ষণ করেছেন @ মান্যাটওয়ার্ককে ধন্যবাদ

<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0‌​];

বেশ সোজা এগিয়ে লুপিং উত্তর।

Ungolfed

<?
$a=$argv[1];
$z=0;
for($i=0; $i < floor(strlen($a)*$argv[2]); $i++) {
    // if the string offset is not set
    // then reset $z back to 0 so we can
    // echo the beginning of ths string again
    @$a[$z] ?: $z=0;
    echo $a[$z];
    $z++;
}

কখন যে ত্রুটি দমন সাহায্য করা উচিত তা নিশ্চিত নয়, আমার পক্ষে মনে হয় @খুব বেশি কাজ করা হচ্ছে :<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
manatwork

আমি কেস # 2 এ একটি নোটিশ পাচ্ছিলাম যার ফলে আউটপুটটি ভুলভাবে রেন্ডার হয়ে গেছে, এটি যখন আমি দমন করার সময় যুক্ত করেছি। (সিএলআই মোডে চলমান)
স্যামসকাঞ্চ

"পিএইচপি 5.3 বা তার পরে, ডিফল্ট মান হল E_ALL & & E_NOTICE এবং & E_STRICT এবং & E_DEPRECATED।" - error_reportingসুতরাং আমরা আমাদের সমাধানগুলি ডিফল্ট কনফিগারেশনের ভিত্তিতে পছন্দ করি এবং বিজ্ঞপ্তিগুলি এবং অন্যান্য ভাল অভ্যাসগুলির যত্ন না করে। উদাহরণস্বরূপ আরম্ভের উপেক্ষা $zএবং $i
manatwork

ওহ ঠান্ডা. তথ্যের জন্য ধন্যবাদ!
স্যামসকাঞ্চ

2

আর, 59 বাইট

function(s,l)cat(rawToChar(array(charToRaw(s),nchar(s)*l)))

নামহীন ফাংশন হিসাবে এটি স্ট্রিংগুলিকে রসের ভেক্টরে বিভক্ত করতে CharToRaw ব্যবহার করে। এটি দৈর্ঘ্যের অ্যারেতে পূর্ণ হয় * l, চর এবং আউটপুটে ফিরে রূপান্তর।
আমি স্টারস্প্লিট ব্যবহার করতে যাচ্ছিলাম, তবে এটি দীর্ঘ হওয়ার পরে শেষ হয়েছিল।

পরীক্ষা

> f=
+ function(s,l)cat(rawToChar(array(charToRaw(s),nchar(s)*l)))
> f('test case', 1) # -> test case
test case
> f('case', 2.5) # -> casecaseca
casecaseca
> f('(will add more later)', 0.3333) # -> (will(space)
(will 
> f('cats >= dogs', 0.5) # -> cats >
cats >
> 

2

পার্ল, 51 + 3 = 54 বাইট

$l=<>*y///c;for$i(1..$l){push@a,/./g}say@a[0..$l-1]

প্রয়োজন: -n, -lএবং -M5.010| -E:

 $ perl -nlE'$l=<>*y///c;for$i(1..$l){push@a,/./g}say@a[0..$l-1]' <<< $'test case\n1'
 test case
 $ perl -nlE'$l=<>*y///c;for$i(1..$l){push@a,/./g}say@a[0..$l-1]' <<< $'case\n2.5'
 casecaseca
 $ perl -nlE'$l=<>*y///c;for$i(1..$l){push@a,/./g}say@a[0..$l-1]' <<< $'(will add more later)\n0.3333'
 (will 
 $ perl -nlE'$l=<>*y///c;for$i(1..$l){push@a,/./g}say@a[0..$l-1]' <<< $'cats >= dogs\n0.5'
 cats >

ব্যাখ্যা:

$l=<>*y///c;              # Calculate output length (eg. 2.5 * input length)
for$i(1..$l){push@a,/./g} # Push a lot of chars from input into @a
say@a[0..$l-1]            # Slice @a according to output length

1

সি (প্রিপ্রোসেসর ম্যাক্রো), 71

j,l;
#define f(s,m) l=strlen(s);for(j=0;j<(int)(l*m);)putchar(s[j++%l])

এখানে খুব জটিল নয়। তুলনা করার আগে কেবল এটির l*mমধ্যে কাস্ট করা হয়েছে তা নিশ্চিত করা দরকার ।intj

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


1

ওরাকল এসকিউএল 11.2, 154 152 বাইট

WITH v(s,i)AS(SELECT SUBSTR(:1,1,FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))),1 FROM DUAL UNION ALL SELECT :1||s,i+1 FROM v WHERE i<=:2)SELECT MAX(s)FROM v;

আন golfed

WITH v(s,i) AS
(
  SELECT SUBSTR(:1,1,FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))),1 FROM DUAL 
  UNION ALL 
  SELECT :1||s,i+1 FROM v WHERE i<=:2
)
SELECT MAX(s) FROM v;

আমি পুনরাবৃত্তির পথে চলেছি, আরম্ভের সাথে দশমিক অংশের যত্ন নেওয়ার নির্বাচন করুন।

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


উইথ ক্লজ এবং ফাইনাল সিলেক্টে) এর পরে ফাঁকা জায়গা সরিয়ে আপনি কয়েকজনকে বাঁচাতে পারবেন।
মিকিটি

আর একটি FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))MOD(:2,1)*LENGTH(:1)
সঞ্চয়স্থান

এবং একটি শেষ একটি :), আপনি এর LPADচেয়ে ব্যবহার করতে পারেনSUBSTR
মিকিটি

1

গুরুতরভাবে, 24 বাইট

,╗,mi@≈╜n╜l(*≈r`╜E`MΣ)kΣ

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

ব্যাখ্যা:

,╗,mi@≈╜n╜l(*≈r`╜E`MΣ)kΣ
,╗                        get first input (string) and push it to register 0
  ,mi@≈                   get input 2 (x), push frac(x) (f), int(x) (n)
       ╜n                 push n copies of the string
         ╜l(*≈            push length of string, multiply by f, floor (substring length) (z)
              r`╜E`MΣ     push s[:z]
                     )kΣ  move fractional part of string to bottom, concat entire stack

1

পাইথ, 9 বাইট

V*Elzp@zN

মূলত শুধু করছে

             z = input()
V*Elz        for N in range(evaluatedInput()*len(z)):    # flooring is automatic
     p@zN        print(z[N], end="")                     # modular indexing
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.